docs: public static void yu12ToBoof(byte[] data, int width, int height, ImageBase output) {
  
          if( output instanceof Planar) {
              Planar ms = (Planar) output;
              ms.reshape(width,height,3);
  
              if( BoofConcurrency.USE_CONCURRENT ) {
                  if (ms.getBandType() == GrayU8.class) {
                      ImplConvertYV12_MT.yv12ToPlanarRgb_U8(data, ms);
                  } else if (ms.getBandType() == GrayF32.class) {
                      ImplConvertYV12_MT.yv12ToPlanarRgb_F32(data, ms);
                  } else {
                      throw new IllegalArgumentException("Unsupported output band format");
                  }
              } else {
                  if (ms.getBandType() == GrayU8.class) {
                      ImplConvertYV12.yv12ToPlanarRgb_U8(data, ms);
                  } else if (ms.getBandType() == GrayF32.class) {
                      ImplConvertYV12.yv12ToPlanarRgb_F32(data, ms);
                  } else {
                      throw new IllegalArgumentException("Unsupported output band format");
                  }
              }
          } else if( output instanceof ImageGray) {
              if (output.getClass() == GrayU8.class) {
                  yu12ToGray(data, width, height, (GrayU8) output);
              } else if (output.getClass() == GrayF32.class) {
                  yu12ToGray(data, width, height, (GrayF32) output);
              } else {
                  throw new IllegalArgumentException("Unsupported output type");
              }
          } else if( output instanceof ImageInterleaved ) {
              ((ImageMultiBand)output).reshape(width,height,3);
  
              if( BoofConcurrency.USE_CONCURRENT ) {
                  if (output.getClass() == InterleavedU8.class) {
                      ImplConvertYV12_MT.yv12ToInterleaved(data, (InterleavedU8) output);
                  } else if (output.getClass() == InterleavedF32.class) {
                      ImplConvertYV12_MT.yv12ToInterleaved(data, (InterleavedF32) output);
                  } else {
                      throw new IllegalArgumentException("Unsupported output type");
                  }
              } else {
                  if (output.getClass() == InterleavedU8.class) {
                      ImplConvertYV12.yv12ToInterleaved(data, (InterleavedU8) output);
                  } else if (output.getClass() == InterleavedF32.class) {
                      ImplConvertYV12.yv12ToInterleaved(data, (InterleavedF32) output);
                  } else {
                      throw new IllegalArgumentException("Unsupported output type");
                  }
              }
          } else {
              throw new IllegalArgumentException("Boofcv image type not yet supported");
          }
      }