code: public static void nv21ToGray(byte[] dataNV, GrayU8 output) {
  
  		final int yStride = output.width;
  
  		// see if the whole thing can be copied as one big block to maximize speed
  		if( yStride == output.width && !output.isSubimage() ) {
  			System.arraycopy(dataNV,0,output.data,0,output.width*output.height);
  		} else {
  			//CONCURRENT_BELOW BoofConcurrency.loopFor(0, output.height, y -> {
  			for( int y = 0; y < output.height; y++ ) {
  				int indexOut = output.startIndex + y*output.stride;
  
  				System.arraycopy(dataNV,y*yStride,output.data,indexOut,output.width);
  			}
  			//CONCURRENT_ABOVE });
  		}
  	}
docs: First block contains gray-scale information and UV data can be ignored.