Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 22 Oct 2011 23:49:32 +0000 (01:49 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 23 Oct 2011 03:13:56 +0000 (05:13 +0200)
* qatar/master:
  id3v2: fix doxy comment - 'machine byte order' makes no sense on char arrays
  VC1: restore mistakenly removed code
  twinvq: check output buffer size before decoding
  twinvq: return an error when the packet size is too small
  lavf: export some forgotten symbols with non-av prefixes.
  swscale: update altivec yuv2planeX asm to new per-plane API.
  swscale: make yuv2yuvX_10_sse2/avx 8/9/16-bits aware.
  yuv2planeX10 SIMD
  swscale: decide whether to use yuv2plane1/X on a per-plane basis.
  swscale: reintroduce full precision in 16-bit output.
  Split up yuv2yuvX functions
  Split out yuv2yuv1 luma and chroma in order to make them generic DSP functions
  lavc: replace references to deprecated AVCodecContext.error_recognition to use AVCodecContext.err_recognition
  lavc: translate non-flag-based er options into flag-based ef options at codec open
  add -err_filter AVOptions to access flag-based error recognition
  h264_weight: initialize "height" function argument properly.
  presets: spelling error in libvpx 1080p50_60
  avplay: fix fullscreen behaviour with SDL 1.2.14 on Mac OS X

Conflicts:
ffplay.c
libavformat/libavformat.v
libswscale/swscale.c
libswscale/x86/swscale_template.c
tests/ref/lavfi/pixfmts_scale

Merged-by: Michael Niedermayer <michaelni@gmx.at>
32 files changed:
1  2 
ffplay.c
libavcodec/aacdec.c
libavcodec/ac3dec.c
libavcodec/alsdec.c
libavcodec/h261dec.c
libavcodec/h263dec.c
libavcodec/h264.c
libavcodec/h264_refs.c
libavcodec/mjpegbdec.c
libavcodec/mjpegdec.c
libavcodec/mpeg12.c
libavcodec/mpegaudiodec.c
libavcodec/mxpegdec.c
libavcodec/options.c
libavcodec/twinvq.c
libavcodec/utils.c
libavcodec/vc1dec.c
libavformat/id3v2.h
libavformat/libavformat.v
libswscale/ppc/swscale_altivec.c
libswscale/swscale.c
libswscale/swscale_internal.h
libswscale/x86/scale.asm
libswscale/x86/swscale_mmx.c
libswscale/x86/swscale_template.c
tests/ref/lavfi/pixdesc
tests/ref/lavfi/pixfmts_copy
tests/ref/lavfi/pixfmts_crop
tests/ref/lavfi/pixfmts_hflip
tests/ref/lavfi/pixfmts_null
tests/ref/lavfi/pixfmts_scale
tests/ref/lavfi/pixfmts_vflip

diff --cc ffplay.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -1522,8 -1531,12 +1522,8 @@@ eoi_parser
                          break;
                      }
                      if (ff_mjpeg_decode_sos(s, NULL, NULL) < 0 &&
-                         avctx->error_recognition >= FF_ER_EXPLODE)
+                         (avctx->err_recognition & AV_EF_EXPLODE))
                        return AVERROR_INVALIDDATA;
 -                    /* buggy avid puts EOI every 10-20th frame */
 -                    /* if restart period is over process EOI */
 -                    if ((s->buggy_avid && !s->interlaced) || s->restart_interval)
 -                        goto eoi_parser;
                      break;
                  case DRI:
                      mjpeg_decode_dri(s);
@@@ -2343,11 -2293,10 +2343,11 @@@ static int decode_chunks(AVCodecContex
          case SEQ_START_CODE:
              if (last_code == 0) {
                  mpeg1_decode_sequence(avctx, buf_ptr, input_size);
 -                s->sync=1;
 +                if(buf != avctx->extradata)
 +                    s->sync=1;
              } else {
                  av_log(avctx, AV_LOG_ERROR, "ignoring SEQ_START_CODE after %X\n", last_code);
-                 if (avctx->error_recognition >= FF_ER_EXPLODE)
+                 if (avctx->err_recognition & AV_EF_EXPLODE)
                      return AVERROR_INVALIDDATA;
              }
              break;
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -610,10 -576,17 +610,20 @@@ int attribute_align_arg avcodec_open2(A
          goto free_and_end;
      }
      avctx->frame_number = 0;
+ #if FF_API_ER
+     av_log(avctx, AV_LOG_DEBUG, "err{or,}_recognition separate: %d; %d\n",
+            avctx->error_recognition, avctx->err_recognition);
+     /* FF_ER_CAREFUL (==1) implies AV_EF_CRCCHECK (== 1<<1 - 1),
+        FF_ER_COMPLIANT (==2) implies AV_EF_{CRCCHECK,BITSTREAM} (== 1<<2 - 1), et cetera} */
+     avctx->err_recognition |= (1<<(avctx->error_recognition-(avctx->error_recognition>=FF_ER_VERY_AGGRESSIVE))) - 1;
+     av_log(avctx, AV_LOG_DEBUG, "err{or,}_recognition combined: %d; %d\n",
+            avctx->error_recognition, avctx->err_recognition);
+ #endif
  
 +    if (!HAVE_THREADS)
 +        av_log(avctx, AV_LOG_WARNING, "Warning: not compiled with thread support, using thread emulation\n");
 +
      if (HAVE_THREADS && !avctx->thread_opaque) {
          ret = ff_thread_init(avctx);
          if (ret < 0) {
Simple merge
Simple merge
@@@ -19,9 -19,10 +19,14 @@@ LIBAVFORMAT_$MAJOR 
                  parse_date;
                  dump_format;
                  url_*;
 +                ff_timefilter_destroy;
 +                ff_timefilter_new;
 +                ff_timefilter_update;
 +                ff_timefilter_reset;
+                 get_*;
+                 put_*;
+                 udp_set_remote_url;
+                 udp_get_local_port;
+                 init_checksum;
          local: *;
  };
Simple merge
@@@ -195,160 -195,71 +195,167 @@@ DECLARE_ALIGNED(8, const uint8_t, dithe
  DECLARE_ALIGNED(8, const uint8_t, ff_sws_pb_64)[8] =
  {  64, 64, 64, 64, 64, 64, 64, 64 };
  
 +DECLARE_ALIGNED(8, const uint8_t, dithers)[8][8][8]={
 +{
 +  {   0,  1,  0,  1,  0,  1,  0,  1,},
 +  {   1,  0,  1,  0,  1,  0,  1,  0,},
 +  {   0,  1,  0,  1,  0,  1,  0,  1,},
 +  {   1,  0,  1,  0,  1,  0,  1,  0,},
 +  {   0,  1,  0,  1,  0,  1,  0,  1,},
 +  {   1,  0,  1,  0,  1,  0,  1,  0,},
 +  {   0,  1,  0,  1,  0,  1,  0,  1,},
 +  {   1,  0,  1,  0,  1,  0,  1,  0,},
 +},{
 +  {   1,  2,  1,  2,  1,  2,  1,  2,},
 +  {   3,  0,  3,  0,  3,  0,  3,  0,},
 +  {   1,  2,  1,  2,  1,  2,  1,  2,},
 +  {   3,  0,  3,  0,  3,  0,  3,  0,},
 +  {   1,  2,  1,  2,  1,  2,  1,  2,},
 +  {   3,  0,  3,  0,  3,  0,  3,  0,},
 +  {   1,  2,  1,  2,  1,  2,  1,  2,},
 +  {   3,  0,  3,  0,  3,  0,  3,  0,},
 +},{
 +  {   2,  4,  3,  5,  2,  4,  3,  5,},
 +  {   6,  0,  7,  1,  6,  0,  7,  1,},
 +  {   3,  5,  2,  4,  3,  5,  2,  4,},
 +  {   7,  1,  6,  0,  7,  1,  6,  0,},
 +  {   2,  4,  3,  5,  2,  4,  3,  5,},
 +  {   6,  0,  7,  1,  6,  0,  7,  1,},
 +  {   3,  5,  2,  4,  3,  5,  2,  4,},
 +  {   7,  1,  6,  0,  7,  1,  6,  0,},
 +},{
 +  {   4,  8,  7, 11,  4,  8,  7, 11,},
 +  {  12,  0, 15,  3, 12,  0, 15,  3,},
 +  {   6, 10,  5,  9,  6, 10,  5,  9,},
 +  {  14,  2, 13,  1, 14,  2, 13,  1,},
 +  {   4,  8,  7, 11,  4,  8,  7, 11,},
 +  {  12,  0, 15,  3, 12,  0, 15,  3,},
 +  {   6, 10,  5,  9,  6, 10,  5,  9,},
 +  {  14,  2, 13,  1, 14,  2, 13,  1,},
 +},{
 +  {   9, 17, 15, 23,  8, 16, 14, 22,},
 +  {  25,  1, 31,  7, 24,  0, 30,  6,},
 +  {  13, 21, 11, 19, 12, 20, 10, 18,},
 +  {  29,  5, 27,  3, 28,  4, 26,  2,},
 +  {   8, 16, 14, 22,  9, 17, 15, 23,},
 +  {  24,  0, 30,  6, 25,  1, 31,  7,},
 +  {  12, 20, 10, 18, 13, 21, 11, 19,},
 +  {  28,  4, 26,  2, 29,  5, 27,  3,},
 +},{
 +  {  18, 34, 30, 46, 17, 33, 29, 45,},
 +  {  50,  2, 62, 14, 49,  1, 61, 13,},
 +  {  26, 42, 22, 38, 25, 41, 21, 37,},
 +  {  58, 10, 54,  6, 57,  9, 53,  5,},
 +  {  16, 32, 28, 44, 19, 35, 31, 47,},
 +  {  48,  0, 60, 12, 51,  3, 63, 15,},
 +  {  24, 40, 20, 36, 27, 43, 23, 39,},
 +  {  56,  8, 52,  4, 59, 11, 55,  7,},
 +},{
 +  {  18, 34, 30, 46, 17, 33, 29, 45,},
 +  {  50,  2, 62, 14, 49,  1, 61, 13,},
 +  {  26, 42, 22, 38, 25, 41, 21, 37,},
 +  {  58, 10, 54,  6, 57,  9, 53,  5,},
 +  {  16, 32, 28, 44, 19, 35, 31, 47,},
 +  {  48,  0, 60, 12, 51,  3, 63, 15,},
 +  {  24, 40, 20, 36, 27, 43, 23, 39,},
 +  {  56,  8, 52,  4, 59, 11, 55,  7,},
 +},{
 +  {  36, 68, 60, 92, 34, 66, 58, 90,},
 +  { 100,  4,124, 28, 98,  2,122, 26,},
 +  {  52, 84, 44, 76, 50, 82, 42, 74,},
 +  { 116, 20,108, 12,114, 18,106, 10,},
 +  {  32, 64, 56, 88, 38, 70, 62, 94,},
 +  {  96,  0,120, 24,102,  6,126, 30,},
 +  {  48, 80, 40, 72, 54, 86, 46, 78,},
 +  { 112, 16,104,  8,118, 22,110, 14,},
 +}};
 +
 +static const uint8_t flat64[8]={64,64,64,64,64,64,64,64};
 +
 +const uint16_t dither_scale[15][16]={
 +{    2,    3,    3,    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,},
 +{    2,    3,    7,    7,   13,   13,   25,   25,   25,   25,   25,   25,   25,   25,   25,   25,},
 +{    3,    3,    4,   15,   15,   29,   57,   57,   57,  113,  113,  113,  113,  113,  113,  113,},
 +{    3,    4,    4,    5,   31,   31,   61,  121,  241,  241,  241,  241,  481,  481,  481,  481,},
 +{    3,    4,    5,    5,    6,   63,   63,  125,  249,  497,  993,  993,  993,  993,  993, 1985,},
 +{    3,    5,    6,    6,    6,    7,  127,  127,  253,  505, 1009, 2017, 4033, 4033, 4033, 4033,},
 +{    3,    5,    6,    7,    7,    7,    8,  255,  255,  509, 1017, 2033, 4065, 8129,16257,16257,},
 +{    3,    5,    6,    8,    8,    8,    8,    9,  511,  511, 1021, 2041, 4081, 8161,16321,32641,},
 +{    3,    5,    7,    8,    9,    9,    9,    9,   10, 1023, 1023, 2045, 4089, 8177,16353,32705,},
 +{    3,    5,    7,    8,   10,   10,   10,   10,   10,   11, 2047, 2047, 4093, 8185,16369,32737,},
 +{    3,    5,    7,    8,   10,   11,   11,   11,   11,   11,   12, 4095, 4095, 8189,16377,32753,},
 +{    3,    5,    7,    9,   10,   12,   12,   12,   12,   12,   12,   13, 8191, 8191,16381,32761,},
 +{    3,    5,    7,    9,   10,   12,   13,   13,   13,   13,   13,   13,   14,16383,16383,32765,},
 +{    3,    5,    7,    9,   10,   12,   14,   14,   14,   14,   14,   14,   14,   15,32767,32767,},
 +{    3,    5,    7,    9,   11,   12,   14,   15,   15,   15,   15,   15,   15,   15,   16,65535,},
 +};
 +
+ #define output_pixel(pos, val, bias, signedness) \
+     if (big_endian) { \
+         AV_WB16(pos, bias + av_clip_ ## signedness ## 16(val >> shift)); \
+     } else { \
+         AV_WL16(pos, bias + av_clip_ ## signedness ## 16(val >> shift)); \
+     }
  static av_always_inline void
- yuv2yuvX16_c_template(const int16_t *lumFilter, const int32_t **lumSrc,
-                       int lumFilterSize, const int16_t *chrFilter,
-                       const int32_t **chrUSrc, const int32_t **chrVSrc,
-                       int chrFilterSize, const int32_t **alpSrc,
-                       uint16_t *dest[4], int dstW, int chrDstW,
-                       int big_endian, int output_bits)
+ yuv2plane1_16_c_template(const int32_t *src, uint16_t *dest, int dstW,
+                          int big_endian, int output_bits)
  {
-     //FIXME Optimize (just quickly written not optimized..)
      int i;
-     int dword= output_bits == 16;
-     uint16_t *yDest = dest[0], *uDest = dest[1], *vDest = dest[2],
-              *aDest = CONFIG_SWSCALE_ALPHA ? dest[3] : NULL;
-     int shift = 11 + 4*dword + 16 - output_bits - 1;
+     int shift = 19 - output_bits;
  
- #define output_pixel(pos, val) \
-     if (big_endian) { \
-         AV_WB16(pos, av_clip_uint16(val >> shift)); \
-     } else { \
-         AV_WL16(pos, av_clip_uint16(val >> shift)); \
+     for (i = 0; i < dstW; i++) {
+         int val = src[i] + (1 << (shift - 1));
+         output_pixel(&dest[i], val, 0, uint);
      }
+ }
+ static av_always_inline void
+ yuv2planeX_16_c_template(const int16_t *filter, int filterSize,
+                          const int32_t **src, uint16_t *dest, int dstW,
+                          int big_endian, int output_bits)
+ {
+     int i;
++    int dword= output_bits == 16;
+     int shift = 15 + 16 - output_bits;
      for (i = 0; i < dstW; i++) {
-         int val = 1 << (26-output_bits + 4*dword - 1);
 -        int val = 1 << (30-output_bits);
++        int val = 1 << (26-output_bits + 4*dword);
          int j;
  
-         for (j = 0; j < lumFilterSize; j++)
-             val += ((dword ? lumSrc[j][i] : ((int16_t**)lumSrc)[j][i]) * lumFilter[j])>>1;
+         /* range of val is [0,0x7FFFFFFF], so 31 bits, but with lanczos/spline
+          * filters (or anything with negative coeffs, the range can be slightly
+          * wider in both directions. To account for this overflow, we subtract
+          * a constant so it always fits in the signed range (assuming a
+          * reasonable filterSize), and re-add that at the end. */
+         val -= 0x40000000;
+         for (j = 0; j < filterSize; j++)
+             val += src[j][i] * filter[j];
  
-         output_pixel(&yDest[i], val);
+         output_pixel(&dest[i], val, 0x8000, int);
      }
+ }
  
-     if (uDest) {
-         for (i = 0; i < chrDstW; i++) {
-             int u = 1 << (26-output_bits + 4*dword - 1);
-             int v = 1 << (26-output_bits + 4*dword - 1);
-             int j;
-             for (j = 0; j < chrFilterSize; j++) {
-                 u += ((dword ? chrUSrc[j][i] : ((int16_t**)chrUSrc)[j][i]) * chrFilter[j]) >> 1;
-                 v += ((dword ? chrVSrc[j][i] : ((int16_t**)chrVSrc)[j][i]) * chrFilter[j]) >> 1;
-             }
+ #undef output_pixel
  
-             output_pixel(&uDest[i], u);
-             output_pixel(&vDest[i], v);
-         }
+ #define output_pixel(pos, val) \
+     if (big_endian) { \
+         AV_WB16(pos, av_clip_uintp2(val >> shift, output_bits)); \
+     } else { \
+         AV_WL16(pos, av_clip_uintp2(val >> shift, output_bits)); \
      }
  
-     if (CONFIG_SWSCALE_ALPHA && aDest) {
-         for (i = 0; i < dstW; i++) {
-             int val = 1 << (26-output_bits + 4*dword - 1);
-             int j;
-             for (j = 0; j < lumFilterSize; j++)
-                 val += ((dword ? alpSrc[j][i] : ((int16_t**)alpSrc)[j][i]) * lumFilter[j]) >> 1;
+ static av_always_inline void
+ yuv2plane1_10_c_template(const int16_t *src, uint16_t *dest, int dstW,
+                          int big_endian, int output_bits)
+ {
+     int i;
+     int shift = 15 - output_bits;
  
-             output_pixel(&aDest[i], val);
-         }
+     for (i = 0; i < dstW; i++) {
+         int val = src[i] + (1 << (shift - 1));
+         output_pixel(&dest[i], val);
      }
- #undef output_pixel
  }
  
  static av_always_inline void
@@@ -2591,10 -2318,9 +2494,11 @@@ static int swScale(SwsContext *c, cons
      const int chrSrcSliceH= -((-srcSliceH) >> c->chrSrcVSubSample);
      int lastDstY;
      uint32_t *pal=c->pal_yuv;
 +    int should_dither= isNBPS(c->srcFormat) || is16BPS(c->srcFormat);
-     yuv2planar1_fn yuv2yuv1 = c->yuv2yuv1;
-     yuv2planarX_fn yuv2yuvX = c->yuv2yuvX;
++
+     yuv2planar1_fn yuv2plane1 = c->yuv2plane1;
+     yuv2planarX_fn yuv2planeX = c->yuv2planeX;
+     yuv2interleavedX_fn yuv2nv12cX = c->yuv2nv12cX;
      yuv2packed1_fn yuv2packed1 = c->yuv2packed1;
      yuv2packed2_fn yuv2packed2 = c->yuv2packed2;
      yuv2packedX_fn yuv2packedX = c->yuv2packedX;
              const int16_t **chrUSrcPtr= (const int16_t **) chrUPixBuf + chrBufIndex + firstChrSrcY - lastInChrBuf + vChrBufSize;
              const int16_t **chrVSrcPtr= (const int16_t **) chrVPixBuf + chrBufIndex + firstChrSrcY - lastInChrBuf + vChrBufSize;
              const int16_t **alpSrcPtr= (CONFIG_SWSCALE_ALPHA && alpPixBuf) ? (const int16_t **) alpPixBuf + lumBufIndex + firstLumSrcY - lastInLumBuf + vLumBufSize : NULL;
 +
              if (isPlanarYUV(dstFormat) || dstFormat==PIX_FMT_GRAY8) { //YV12 like
                  const int chrSkipMask= (1<<c->chrDstVSubSample)-1;
-                 if ((dstY&chrSkipMask) || isGray(dstFormat))
-                     dest[1] = dest[2] = NULL; //FIXME split functions in lumi / chromi
-                 if (c->yuv2yuv1 && vLumFilterSize == 1 && vChrFilterSize == 1) { // unscaled YV12
-                     const int16_t *alpBuf= (CONFIG_SWSCALE_ALPHA && alpPixBuf) ? alpSrcPtr[0] : NULL;
-                     yuv2yuv1(c, lumSrcPtr[0], chrUSrcPtr[0], chrVSrcPtr[0], alpBuf,
-                              dest, dstW, chrDstW);
-                 } else { //General YV12
-                     yuv2yuvX(c, vLumFilter + dstY * vLumFilterSize,
-                              lumSrcPtr, vLumFilterSize,
-                              vChrFilter + chrDstY * vChrFilterSize,
-                              chrUSrcPtr, chrVSrcPtr, vChrFilterSize,
-                              alpSrcPtr, dest, dstW, chrDstW);
+                 if (vLumFilterSize == 1) {
+                     yuv2plane1(lumSrcPtr[0], dest[0], dstW, c->lumDither8, 0);
+                 } else {
+                     yuv2planeX(vLumFilter + dstY * vLumFilterSize, vLumFilterSize,
+                                lumSrcPtr, dest[0], dstW, c->lumDither8, 0);
+                 }
+                 if (!((dstY&chrSkipMask) || isGray(dstFormat))) {
+                     if (yuv2nv12cX) {
+                         yuv2nv12cX(c, vChrFilter + chrDstY * vChrFilterSize, vChrFilterSize, chrUSrcPtr, chrVSrcPtr, dest[1], chrDstW);
+                     } else if (vChrFilterSize == 1) {
+                         yuv2plane1(chrUSrcPtr[0], dest[1], chrDstW, c->chrDither8, 0);
+                         yuv2plane1(chrVSrcPtr[0], dest[2], chrDstW, c->chrDither8, 3);
+                     } else {
+                         yuv2planeX(vChrFilter + chrDstY * vChrFilterSize, vChrFilterSize,
+                                    chrUSrcPtr, dest[1], chrDstW, c->chrDither8, 0);
+                         yuv2planeX(vChrFilter + chrDstY * vChrFilterSize, vChrFilterSize,
+                                    chrVSrcPtr, dest[2], chrDstW, c->chrDither8, 3);
+                     }
+                 }
+                 if (CONFIG_SWSCALE_ALPHA && alpPixBuf){
+                     if (vLumFilterSize == 1) {
+                         yuv2plane1(alpSrcPtr[0], dest[3], dstW, c->lumDither8, 0);
+                     } else {
+                         yuv2planeX(vLumFilter + dstY * vLumFilterSize, vLumFilterSize,
+                                    alpSrcPtr, dest[3], dstW, c->lumDither8, 0);
+                     }
                  }
              } else {
                  assert(lumSrcPtr  + vLumFilterSize - 1 < lumPixBuf  + vLumBufSize*2);
Simple merge
Simple merge
Simple merge
@@@ -2092,11 -1895,11 +1893,10 @@@ static av_cold void RENAME(sws_init_swS
      enum PixelFormat srcFormat = c->srcFormat,
                       dstFormat = c->dstFormat;
  
 -    if (!is16BPS(dstFormat) && !is9_OR_10BPS(dstFormat) &&
 -        dstFormat != PIX_FMT_NV12 && dstFormat != PIX_FMT_NV21) {
 -        if (!(c->flags & SWS_BITEXACT)) {
 +    if (!is16BPS(dstFormat) && !is9_OR_10BPS(dstFormat) && dstFormat != PIX_FMT_NV12
 +        && dstFormat != PIX_FMT_NV21 && !(c->flags & SWS_BITEXACT)) {
              if (c->flags & SWS_ACCURATE_RND) {
-                 c->yuv2yuv1 = RENAME(yuv2yuv1_ar    );
-                 c->yuv2yuvX = RENAME(yuv2yuvX_ar    );
+                 //c->yuv2yuv1 = RENAME(yuv2yuv1_ar    );
                  if (!(c->flags & SWS_FULL_CHR_H_INT)) {
                      switch (c->dstFormat) {
                      case PIX_FMT_RGB32:   c->yuv2packedX = RENAME(yuv2rgb32_X_ar);   break;
Simple merge
Simple merge
Simple merge
@@@ -26,15 -26,15 +26,15 @@@ rgba                d3d0dc1ecef3ed72f26
  yuv410p             acb543ebbbf63eefe533e6faffc006da
  yuv411p             c626cf6d191139b4ca7efc0155f957f1
  yuv420p             2d5c80f9ba2ddd85b2aeda3564cc7d64
 -yuv420p16be         758b0c1e2113b15e7afde48da4e4d024
 -yuv420p16le         480ccd951dcb806bc875d307e02e50a0
 +yuv420p16be         1c4fa93d0744de3cdc6d34ab55db3fb4
 +yuv420p16le         92c74f5759068c381e4a066fe7faf2e0
  yuv422p             6e728f4eb9eae287c224f396d84be6ea
- yuv422p16be         69cf0605496c321546899a8442ee64fb
- yuv422p16le         f0b443fea72f4b6f462859a73b159664
+ yuv422p16be         a05d43cd62b790087bd37083174557de
+ yuv422p16le         6954abebcbc62d81068d58d0c62bdd5b
  yuv440p             a99e2b57ed601f39852715c9d675d0d3
  yuv444p             947e47f7bb5fdccc659d19b7df2b6fc3
- yuv444p16be         bc7d53923cff1d7e98d24540845fb64b
- yuv444p16le         5df206a93f85ef8b77f5bdc81d9b0a0b
+ yuv444p16be         58c012e5ab73b066ef3c2b6411a395f1
+ yuv444p16le         32c12794e184042a59738ab2de608c8d
  yuva420p            d83ec0c01498189f179ec574918185f1
  yuvj420p            df3aaaec3bb157c3bde5f0365af30f4f
  yuvj422p            d113871528d510a192797af59df9c05c
Simple merge
@@@ -31,12 -31,12 +31,12 @@@ uyvy422             314bd486277111a95d9
  yuv410p             7df8f6d69b56a8dcb6c7ee908e5018b5
  yuv411p             1143e7c5cc28fe0922b051b17733bc4c
  yuv420p             fdad2d8df8985e3d17e73c71f713cb14
 -yuv420p10be         c143e77e97d2f7d62c3b518857ba9f9b
 -yuv420p10le         72d90eccf5c34691ff057dafb7447aa2
 -yuv420p16be         d7270efce54eb59c7b01c14157a1b890
 -yuv420p16le         e85abf00bad940a922b623c91c9026d7
 -yuv420p9be          bb87fddca65d1742412c8d2b1caf96c6
 -yuv420p9le          828eec50014a41258a5423c1fe56ac97
 +yuv420p10be         6d335e75b553da590135cf8bb999610c
 +yuv420p10le         d510ddbabefd03ef39ec943fcb51b709
- yuv420p16be         2a75942af24fbdc1fdfe189c6e7bf589
- yuv420p16le         c4264d92a7c273967a778f4f5daddbe3
++yuv420p16be         31988e9a5d6acacaa710f67bc1172f3a
++yuv420p16le         f5390ce399f88e0e4e2621ed7833b250
 +yuv420p9be          ec4983b7a949c0472110a7a2c58e278a
 +yuv420p9le          c136dce5913a722eee44ab72cff664b2
  yuv422p             918e37701ee7377d16a8a6c119c56a40
  yuv422p10be         cea7ca6b0e66d6f29539885896c88603
  yuv422p10le         a10c4a5837547716f13cd61918b145f9
Simple merge