Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 30 Oct 2012 16:41:17 +0000 (17:41 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 30 Oct 2012 16:47:36 +0000 (17:47 +0100)
* qatar/master:
  pixfmt: support more yuva formats
  swscale: support gray to 9bit and 10bit formats
  configure: rewrite print_config() function using awk
  FATE: fix (AD)PCM test dependencies broken in e519990
  Use ptrdiff_t instead of int for intra pred "stride" function parameter.
  x86: use PRED4x4/8x8/8x8L/16x16 macros to declare intrapred prototypes.

Conflicts:
libavcodec/h264pred.c
libavcodec/h264pred_template.c
libavutil/pixfmt.h
libswscale/swscale_unscaled.c
tests/ref/lavfi/pixdesc
tests/ref/lavfi/pixfmts_copy
tests/ref/lavfi/pixfmts_null
tests/ref/lavfi/pixfmts_scale
tests/ref/lavfi/pixfmts_vflip

Merged-by: Michael Niedermayer <michaelni@gmx.at>
20 files changed:
1  2 
configure
libavcodec/arm/h264pred_init_arm.c
libavcodec/h264pred.c
libavcodec/h264pred.h
libavcodec/h264pred_template.c
libavcodec/raw.c
libavcodec/x86/h264_intrapred.asm
libavcodec/x86/h264_intrapred_init.c
libavformat/nut.c
libavutil/pixdesc.c
libavutil/pixfmt.h
libswscale/input.c
libswscale/swscale.c
libswscale/swscale_unscaled.c
libswscale/utils.c
tests/ref/lavfi/pixfmts_copy
tests/ref/lavfi/pixfmts_null
tests/ref/lavfi/pixfmts_pixdesctest
tests/ref/lavfi/pixfmts_scale
tests/ref/lavfi/pixfmts_vflip

diff --cc configure
Simple merge
Simple merge
  #include "h264pred_template.c"
  #undef BIT_DEPTH
  
- static void pred4x4_vertical_vp8_c(uint8_t *src, const uint8_t *topright, int stride){
 +#define BIT_DEPTH 12
 +#include "h264pred_template.c"
 +#undef BIT_DEPTH
 +
 +#define BIT_DEPTH 14
 +#include "h264pred_template.c"
 +#undef BIT_DEPTH
 +
+ static void pred4x4_vertical_vp8_c(uint8_t *src, const uint8_t *topright,
+                                    ptrdiff_t stride)
+ {
      const unsigned lt = src[-1-1*stride];
      LOAD_TOP_EDGE
      LOAD_TOP_RIGHT_EDGE
Simple merge
  
  #include "bit_depth_template.c"
  
- static void FUNCC(pred4x4_vertical)(uint8_t *_src, const uint8_t *topright, int _stride){
+ static void FUNCC(pred4x4_vertical)(uint8_t *_src, const uint8_t *topright,
+                                     ptrdiff_t _stride)
+ {
      pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
      const pixel4 a= AV_RN4PA(src-stride);
  
      AV_WN4PA(src+0*stride, a);
      AV_WN4PA(src+3*stride, a);
  }
  
- static void FUNCC(pred4x4_horizontal)(uint8_t *_src, const uint8_t *topright, int _stride){
+ static void FUNCC(pred4x4_horizontal)(uint8_t *_src, const uint8_t *topright,
+                                       ptrdiff_t _stride)
+ {
      pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
      AV_WN4PA(src+0*stride, PIXEL_SPLAT_X4(src[-1+0*stride]));
      AV_WN4PA(src+1*stride, PIXEL_SPLAT_X4(src[-1+1*stride]));
      AV_WN4PA(src+2*stride, PIXEL_SPLAT_X4(src[-1+2*stride]));
      AV_WN4PA(src+3*stride, PIXEL_SPLAT_X4(src[-1+3*stride]));
  }
  
- static void FUNCC(pred4x4_dc)(uint8_t *_src, const uint8_t *topright, int _stride){
+ static void FUNCC(pred4x4_dc)(uint8_t *_src, const uint8_t *topright,
+                               ptrdiff_t _stride)
+ {
      pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
      const int dc= (  src[-stride] + src[1-stride] + src[2-stride] + src[3-stride]
                     + src[-1+0*stride] + src[-1+1*stride] + src[-1+2*stride] + src[-1+3*stride] + 4) >>3;
      const pixel4 a = PIXEL_SPLAT_X4(dc);
      AV_WN4PA(src+3*stride, a);
  }
  
- static void FUNCC(pred4x4_left_dc)(uint8_t *_src, const uint8_t *topright, int _stride){
+ static void FUNCC(pred4x4_left_dc)(uint8_t *_src, const uint8_t *topright,
+                                    ptrdiff_t _stride)
+ {
      pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
      const int dc= (  src[-1+0*stride] + src[-1+1*stride] + src[-1+2*stride] + src[-1+3*stride] + 2) >>2;
      const pixel4 a = PIXEL_SPLAT_X4(dc);
  
      AV_WN4PA(src+3*stride, a);
  }
  
- static void FUNCC(pred4x4_top_dc)(uint8_t *_src, const uint8_t *topright, int _stride){
+ static void FUNCC(pred4x4_top_dc)(uint8_t *_src, const uint8_t *topright,
+                                   ptrdiff_t _stride)
+ {
      pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
      const int dc= (  src[-stride] + src[1-stride] + src[2-stride] + src[3-stride] + 2) >>2;
      const pixel4 a = PIXEL_SPLAT_X4(dc);
  
      AV_WN4PA(src+3*stride, a);
  }
  
- static void FUNCC(pred4x4_128_dc)(uint8_t *_src, const uint8_t *topright, int _stride){
+ static void FUNCC(pred4x4_128_dc)(uint8_t *_src, const uint8_t *topright,
+                                   ptrdiff_t _stride)
+ {
      pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
      const pixel4 a = PIXEL_SPLAT_X4(1<<(BIT_DEPTH-1));
  
      AV_WN4PA(src+0*stride, a);
      AV_WN4PA(src+3*stride, a);
  }
  
- static void FUNCC(pred4x4_127_dc)(uint8_t *_src, const uint8_t *topright, int _stride){
+ static void FUNCC(pred4x4_127_dc)(uint8_t *_src, const uint8_t *topright,
+                                   ptrdiff_t _stride)
+ {
      pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
      const pixel4 a = PIXEL_SPLAT_X4((1<<(BIT_DEPTH-1))-1);
  
      AV_WN4PA(src+0*stride, a);
      AV_WN4PA(src+3*stride, a);
  }
  
- static void FUNCC(pred4x4_129_dc)(uint8_t *_src, const uint8_t *topright, int _stride){
+ static void FUNCC(pred4x4_129_dc)(uint8_t *_src, const uint8_t *topright,
+                                   ptrdiff_t _stride)
+ {
      pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
      const pixel4 a = PIXEL_SPLAT_X4((1<<(BIT_DEPTH-1))+1);
  
      AV_WN4PA(src+0*stride, a);
      const unsigned av_unused t2 = src[ 2-1*stride];\
      const unsigned av_unused t3 = src[ 3-1*stride];\
  
- static void FUNCC(pred4x4_down_right)(uint8_t *_src, const uint8_t *topright, int _stride){
+ static void FUNCC(pred4x4_down_right)(uint8_t *_src, const uint8_t *topright,
+                                       ptrdiff_t _stride)
+ {
      pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
      const int lt= src[-1-1*stride];
      LOAD_TOP_EDGE
      LOAD_LEFT_EDGE
      src[3+0*stride]=(t1 + 2*t2 + t3 + 2)>>2;
  }
  
- static void FUNCC(pred4x4_down_left)(uint8_t *_src, const uint8_t *_topright, int _stride){
+ static void FUNCC(pred4x4_down_left)(uint8_t *_src, const uint8_t *_topright,
+                                      ptrdiff_t _stride)
+ {
      pixel *src = (pixel*)_src;
      const pixel *topright = (const pixel*)_topright;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
      LOAD_TOP_EDGE
      LOAD_TOP_RIGHT_EDGE
  //    LOAD_LEFT_EDGE
      src[3+3*stride]=(t6 + 3*t7 + 2)>>2;
  }
  
- static void FUNCC(pred4x4_vertical_right)(uint8_t *_src, const uint8_t *topright, int _stride){
+ static void FUNCC(pred4x4_vertical_right)(uint8_t *_src,
+                                           const uint8_t *topright,
+                                           ptrdiff_t _stride)
+ {
      pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
      const int lt= src[-1-1*stride];
      LOAD_TOP_EDGE
      LOAD_LEFT_EDGE
      src[0+3*stride]=(l0 + 2*l1 + l2 + 2)>>2;
  }
  
- static void FUNCC(pred4x4_vertical_left)(uint8_t *_src, const uint8_t *_topright, int _stride){
+ static void FUNCC(pred4x4_vertical_left)(uint8_t *_src,
+                                          const uint8_t *_topright,
+                                          ptrdiff_t _stride)
+ {
      pixel *src = (pixel*)_src;
      const pixel *topright = (const pixel*)_topright;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
      LOAD_TOP_EDGE
      LOAD_TOP_RIGHT_EDGE
  
      src[3+3*stride]=(t4 + 2*t5 + t6 + 2)>>2;
  }
  
- static void FUNCC(pred4x4_horizontal_up)(uint8_t *_src, const uint8_t *topright, int _stride){
+ static void FUNCC(pred4x4_horizontal_up)(uint8_t *_src, const uint8_t *topright,
+                                          ptrdiff_t _stride)
+ {
      pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
      LOAD_LEFT_EDGE
  
      src[0+0*stride]=(l0 + l1 + 1)>>1;
      src[3+3*stride]=l3;
  }
  
- static void FUNCC(pred4x4_horizontal_down)(uint8_t *_src, const uint8_t *topright, int _stride){
+ static void FUNCC(pred4x4_horizontal_down)(uint8_t *_src,
+                                            const uint8_t *topright,
+                                            ptrdiff_t _stride)
+ {
      pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
      const int lt= src[-1-1*stride];
      LOAD_TOP_EDGE
      LOAD_LEFT_EDGE
      src[1+3*stride]=(l1 + 2*l2 + l3 + 2)>>2;
  }
  
- static void FUNCC(pred16x16_vertical)(uint8_t *_src, int _stride){
+ static void FUNCC(pred16x16_vertical)(uint8_t *_src, ptrdiff_t _stride)
+ {
      int i;
      pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
      const pixel4 a = AV_RN4PA(((pixel4*)(src-stride))+0);
      const pixel4 b = AV_RN4PA(((pixel4*)(src-stride))+1);
      const pixel4 c = AV_RN4PA(((pixel4*)(src-stride))+2);
      }
  }
  
- static void FUNCC(pred16x16_horizontal)(uint8_t *_src, int stride){
+ static void FUNCC(pred16x16_horizontal)(uint8_t *_src, ptrdiff_t stride)
+ {
      int i;
      pixel *src = (pixel*)_src;
 -    stride /= sizeof(pixel);
 +    stride >>= sizeof(pixel)-1;
  
      for(i=0; i<16; i++){
          const pixel4 a = PIXEL_SPLAT_X4(src[-1+i*stride]);
@@@ -381,10 -417,11 +417,11 @@@ static void FUNCC(pred16x16_top_dc)(uin
  }
  
  #define PRED16x16_X(n, v) \
- static void FUNCC(pred16x16_##n##_dc)(uint8_t *_src, int stride){\
+ static void FUNCC(pred16x16_##n##_dc)(uint8_t *_src, ptrdiff_t stride)\
+ {\
      int i;\
      pixel *src = (pixel*)_src;\
 -    stride /= sizeof(pixel);\
 +    stride >>= sizeof(pixel)-1;\
      PREDICT_16x16_DC(PIXEL_SPLAT_X4(v));\
  }
  
@@@ -396,8 -437,8 +437,8 @@@ static inline void FUNCC(pred16x16_plan
    int i, j, k;
    int a;
    INIT_CLIP
-   pixel *src = (pixel*)p_src;
-   int stride = p_stride>>(sizeof(pixel)-1);
+   pixel *src = (pixel*)_src;
 -  int stride = _stride/sizeof(pixel);
++  int stride = _stride>>(sizeof(pixel)-1);
    const pixel * const src0 = src +7-stride;
    const pixel *       src1 = src +8*stride-1;
    const pixel *       src2 = src1-2*stride;    // == src+6*stride-1;
@@@ -441,10 -483,11 +483,11 @@@ static void FUNCC(pred16x16_plane)(uint
      FUNCC(pred16x16_plane_compat)(src, stride, 0, 0);
  }
  
- static void FUNCC(pred8x8_vertical)(uint8_t *_src, int _stride){
+ static void FUNCC(pred8x8_vertical)(uint8_t *_src, ptrdiff_t _stride)
+ {
      int i;
      pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
      const pixel4 a= AV_RN4PA(((pixel4*)(src-stride))+0);
      const pixel4 b= AV_RN4PA(((pixel4*)(src-stride))+1);
  
@@@ -467,10 -511,11 +511,11 @@@ static void FUNCC(pred8x16_vertical)(ui
      }
  }
  
- static void FUNCC(pred8x8_horizontal)(uint8_t *_src, int stride){
+ static void FUNCC(pred8x8_horizontal)(uint8_t *_src, ptrdiff_t stride)
+ {
      int i;
      pixel *src = (pixel*)_src;
 -    stride /= sizeof(pixel);
 +    stride >>= sizeof(pixel)-1;
  
      for(i=0; i<8; i++){
          const pixel4 a = PIXEL_SPLAT_X4(src[-1+i*stride]);
@@@ -657,8 -711,8 +711,9 @@@ static void FUNCC(pred8x16_dc)(uint8_t 
      }
  }
  
- static void FUNC(pred8x8_mad_cow_dc_l0t)(uint8_t *src, int stride){
 +//the following 4 function should not be optimized!
+ static void FUNC(pred8x8_mad_cow_dc_l0t)(uint8_t *src, ptrdiff_t stride)
+ {
      FUNCC(pred8x8_top_dc)(src, stride);
      FUNCC(pred4x4_dc)(src, NULL, stride);
  }
@@@ -816,35 -879,39 +880,39 @@@ static void FUNCC(pred8x16_plane)(uint8
          src += stride; \
      }
  
- static void FUNCC(pred8x8l_128_dc)(uint8_t *_src, int has_topleft, int has_topright, int _stride)
+ static void FUNCC(pred8x8l_128_dc)(uint8_t *_src, int has_topleft,
+                                    int has_topright, ptrdiff_t _stride)
  {
      pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
  
      PREDICT_8x8_DC(PIXEL_SPLAT_X4(1<<(BIT_DEPTH-1)));
  }
- static void FUNCC(pred8x8l_left_dc)(uint8_t *_src, int has_topleft, int has_topright, int _stride)
+ static void FUNCC(pred8x8l_left_dc)(uint8_t *_src, int has_topleft,
+                                     int has_topright, ptrdiff_t _stride)
  {
      pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
 +    int stride = _stride>>(sizeof(pixel)-1);
  
      PREDICT_8x8_LOAD_LEFT;
      const pixel4 dc = PIXEL_SPLAT_X4((l0+l1+l2+l3+l4+l5+l6+l7+4) >> 3);
      PREDICT_8x8_DC(dc);
  }
- static void FUNCC(pred8x8l_top_dc)(uint8_t *p_src, int has_topleft, int has_topright, int p_stride)
+ static void FUNCC(pred8x8l_top_dc)(uint8_t *_src, int has_topleft,
+                                    int has_topright, ptrdiff_t _stride)
  {
-     pixel *src = (pixel*)p_src;
-     int stride = p_stride>>(sizeof(pixel)-1);
+     pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
++    int stride = _stride>>(sizeof(pixel)-1);
  
      PREDICT_8x8_LOAD_TOP;
      const pixel4 dc = PIXEL_SPLAT_X4((t0+t1+t2+t3+t4+t5+t6+t7+4) >> 3);
      PREDICT_8x8_DC(dc);
  }
- static void FUNCC(pred8x8l_dc)(uint8_t *p_src, int has_topleft, int has_topright, int p_stride)
+ static void FUNCC(pred8x8l_dc)(uint8_t *_src, int has_topleft,
+                                int has_topright, ptrdiff_t _stride)
  {
-     pixel *src = (pixel*)p_src;
-     int stride = p_stride>>(sizeof(pixel)-1);
+     pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
++    int stride = _stride>>(sizeof(pixel)-1);
  
      PREDICT_8x8_LOAD_LEFT;
      PREDICT_8x8_LOAD_TOP;
                                       +t0+t1+t2+t3+t4+t5+t6+t7+8) >> 4);
      PREDICT_8x8_DC(dc);
  }
- static void FUNCC(pred8x8l_horizontal)(uint8_t *p_src, int has_topleft, int has_topright, int p_stride)
+ static void FUNCC(pred8x8l_horizontal)(uint8_t *_src, int has_topleft,
+                                        int has_topright, ptrdiff_t _stride)
  {
-     pixel *src = (pixel*)p_src;
-     int stride = p_stride>>(sizeof(pixel)-1);
+     pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
++    int stride = _stride>>(sizeof(pixel)-1);
      pixel4 a;
  
      PREDICT_8x8_LOAD_LEFT;
@@@ -888,10 -957,11 +958,11 @@@ static void FUNCC(pred8x8l_vertical)(ui
          AV_WN4PA(((pixel4*)(src+y*stride))+1, b);
      }
  }
- static void FUNCC(pred8x8l_down_left)(uint8_t *p_src, int has_topleft, int has_topright, int p_stride)
+ static void FUNCC(pred8x8l_down_left)(uint8_t *_src, int has_topleft,
+                                       int has_topright, ptrdiff_t _stride)
  {
-     pixel *src = (pixel*)p_src;
-     int stride = p_stride>>(sizeof(pixel)-1);
+     pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
++    int stride = _stride>>(sizeof(pixel)-1);
      PREDICT_8x8_LOAD_TOP;
      PREDICT_8x8_LOAD_TOPRIGHT;
      SRC(0,0)= (t0 + 2*t1 + t2 + 2) >> 2;
      SRC(6,7)=SRC(7,6)= (t13 + 2*t14 + t15 + 2) >> 2;
      SRC(7,7)= (t14 + 3*t15 + 2) >> 2;
  }
- static void FUNCC(pred8x8l_down_right)(uint8_t *p_src, int has_topleft, int has_topright, int p_stride)
+ static void FUNCC(pred8x8l_down_right)(uint8_t *_src, int has_topleft,
+                                        int has_topright, ptrdiff_t _stride)
  {
-     pixel *src = (pixel*)p_src;
-     int stride = p_stride>>(sizeof(pixel)-1);
+     pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
++    int stride = _stride>>(sizeof(pixel)-1);
      PREDICT_8x8_LOAD_TOP;
      PREDICT_8x8_LOAD_LEFT;
      PREDICT_8x8_LOAD_TOPLEFT;
      SRC(6,0)=SRC(7,1)= (t4 + 2*t5 + t6 + 2) >> 2;
      SRC(7,0)= (t5 + 2*t6 + t7 + 2) >> 2;
  }
- static void FUNCC(pred8x8l_vertical_right)(uint8_t *p_src, int has_topleft, int has_topright, int p_stride)
+ static void FUNCC(pred8x8l_vertical_right)(uint8_t *_src, int has_topleft,
+                                            int has_topright, ptrdiff_t _stride)
  {
-     pixel *src = (pixel*)p_src;
-     int stride = p_stride>>(sizeof(pixel)-1);
+     pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
++    int stride = _stride>>(sizeof(pixel)-1);
      PREDICT_8x8_LOAD_TOP;
      PREDICT_8x8_LOAD_LEFT;
      PREDICT_8x8_LOAD_TOPLEFT;
      SRC(7,1)= (t5 + 2*t6 + t7 + 2) >> 2;
      SRC(7,0)= (t6 + t7 + 1) >> 1;
  }
- static void FUNCC(pred8x8l_horizontal_down)(uint8_t *p_src, int has_topleft, int has_topright, int p_stride)
+ static void FUNCC(pred8x8l_horizontal_down)(uint8_t *_src, int has_topleft,
+                                             int has_topright, ptrdiff_t _stride)
  {
-     pixel *src = (pixel*)p_src;
-     int stride = p_stride>>(sizeof(pixel)-1);
+     pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
++    int stride = _stride>>(sizeof(pixel)-1);
      PREDICT_8x8_LOAD_TOP;
      PREDICT_8x8_LOAD_LEFT;
      PREDICT_8x8_LOAD_TOPLEFT;
      SRC(6,0)= (t5 + 2*t4 + t3 + 2) >> 2;
      SRC(7,0)= (t6 + 2*t5 + t4 + 2) >> 2;
  }
- static void FUNCC(pred8x8l_vertical_left)(uint8_t *p_src, int has_topleft, int has_topright, int p_stride)
+ static void FUNCC(pred8x8l_vertical_left)(uint8_t *_src, int has_topleft,
+                                           int has_topright, ptrdiff_t _stride)
  {
-     pixel *src = (pixel*)p_src;
-     int stride = p_stride>>(sizeof(pixel)-1);
+     pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
++    int stride = _stride>>(sizeof(pixel)-1);
      PREDICT_8x8_LOAD_TOP;
      PREDICT_8x8_LOAD_TOPRIGHT;
      SRC(0,0)= (t0 + t1 + 1) >> 1;
      SRC(7,6)= (t10 + t11 + 1) >> 1;
      SRC(7,7)= (t10 + 2*t11 + t12 + 2) >> 2;
  }
- static void FUNCC(pred8x8l_horizontal_up)(uint8_t *p_src, int has_topleft, int has_topright, int p_stride)
+ static void FUNCC(pred8x8l_horizontal_up)(uint8_t *_src, int has_topleft,
+                                           int has_topright, ptrdiff_t _stride)
  {
-     pixel *src = (pixel*)p_src;
-     int stride = p_stride>>(sizeof(pixel)-1);
+     pixel *src = (pixel*)_src;
 -    int stride = _stride/sizeof(pixel);
++    int stride = _stride>>(sizeof(pixel)-1);
      PREDICT_8x8_LOAD_LEFT;
      SRC(0,0)= (l0 + l1 + 1) >> 1;
      SRC(1,0)= (l0 + 2*l1 + l2 + 2) >> 2;
  #undef PL
  #undef SRC
  
- static void FUNCC(pred4x4_vertical_add)(uint8_t *p_pix, const DCTELEM *p_block, int stride){
+ static void FUNCC(pred4x4_vertical_add)(uint8_t *_pix, const DCTELEM *_block,
+                                         ptrdiff_t stride)
+ {
      int i;
-     pixel *pix = (pixel*)p_pix;
-     const dctcoef *block = (const dctcoef*)p_block;
+     pixel *pix = (pixel*)_pix;
+     const dctcoef *block = (const dctcoef*)_block;
 -    stride /= sizeof(pixel);
 +    stride >>= sizeof(pixel)-1;
      pix -= stride;
      for(i=0; i<4; i++){
          pixel v = pix[0];
      }
  }
  
- static void FUNCC(pred4x4_horizontal_add)(uint8_t *p_pix, const DCTELEM *p_block, int stride){
+ static void FUNCC(pred4x4_horizontal_add)(uint8_t *_pix, const DCTELEM *_block,
+                                           ptrdiff_t stride)
+ {
      int i;
-     pixel *pix = (pixel*)p_pix;
-     const dctcoef *block = (const dctcoef*)p_block;
+     pixel *pix = (pixel*)_pix;
+     const dctcoef *block = (const dctcoef*)_block;
 -    stride /= sizeof(pixel);
 +    stride >>= sizeof(pixel)-1;
      for(i=0; i<4; i++){
          pixel v = pix[-1];
          pix[0]= v += block[0];
      }
  }
  
- static void FUNCC(pred8x8l_vertical_add)(uint8_t *p_pix, const DCTELEM *p_block, int stride){
+ static void FUNCC(pred8x8l_vertical_add)(uint8_t *_pix, const DCTELEM *_block,
+                                          ptrdiff_t stride)
+ {
      int i;
-     pixel *pix = (pixel*)p_pix;
-     const dctcoef *block = (const dctcoef*)p_block;
+     pixel *pix = (pixel*)_pix;
+     const dctcoef *block = (const dctcoef*)_block;
 -    stride /= sizeof(pixel);
 +    stride >>= sizeof(pixel)-1;
      pix -= stride;
      for(i=0; i<8; i++){
          pixel v = pix[0];
      }
  }
  
- static void FUNCC(pred8x8l_horizontal_add)(uint8_t *p_pix, const DCTELEM *p_block, int stride){
+ static void FUNCC(pred8x8l_horizontal_add)(uint8_t *_pix, const DCTELEM *_block,
+                                            ptrdiff_t stride)
+ {
      int i;
-     pixel *pix = (pixel*)p_pix;
-     const dctcoef *block = (const dctcoef*)p_block;
+     pixel *pix = (pixel*)_pix;
+     const dctcoef *block = (const dctcoef*)_block;
 -    stride /= sizeof(pixel);
 +    stride >>= sizeof(pixel)-1;
      for(i=0; i<8; i++){
          pixel v = pix[-1];
          pix[0]= v += block[0];
@@@ -143,13 -122,28 +143,32 @@@ const PixelFormatTag ff_raw_pix_fmt_tag
      { AV_PIX_FMT_YUV444P16LE, MKTAG('Y', '3',  0 , 16 ) },
      { AV_PIX_FMT_YUV444P16BE, MKTAG(16 ,  0 , '3', 'Y') },
      { AV_PIX_FMT_YUVA420P,    MKTAG('Y', '4', 11 ,  8 ) },
 -    { AV_PIX_FMT_Y400A,       MKTAG('Y', '2',  0 ,  8 ) },
 +    { AV_PIX_FMT_YUVA422P,    MKTAG('Y', '4', 10 ,  8 ) },
 +    { AV_PIX_FMT_YUVA444P,    MKTAG('Y', '4',  0 ,  8 ) },
 +    { AV_PIX_FMT_GRAY8A,      MKTAG('Y', '2',  0 ,  8 ) },
  
+     { AV_PIX_FMT_YUVA420P9LE,  MKTAG('Y', '4', 11 ,  9 ) },
+     { AV_PIX_FMT_YUVA420P9BE,  MKTAG( 9 , 11 , '4', 'Y') },
+     { AV_PIX_FMT_YUVA422P9LE,  MKTAG('Y', '4', 10 ,  9 ) },
+     { AV_PIX_FMT_YUVA422P9BE,  MKTAG( 9 , 10 , '4', 'Y') },
+     { AV_PIX_FMT_YUVA444P9LE,  MKTAG('Y', '4',  0 ,  9 ) },
+     { AV_PIX_FMT_YUVA444P9BE,  MKTAG( 9 ,  0 , '4', 'Y') },
+     { AV_PIX_FMT_YUVA420P10LE, MKTAG('Y', '4', 11 , 10 ) },
+     { AV_PIX_FMT_YUVA420P10BE, MKTAG(10 , 11 , '4', 'Y') },
+     { AV_PIX_FMT_YUVA422P10LE, MKTAG('Y', '4', 10 , 10 ) },
+     { AV_PIX_FMT_YUVA422P10BE, MKTAG(10 , 10 , '4', 'Y') },
+     { AV_PIX_FMT_YUVA444P10LE, MKTAG('Y', '4',  0 , 10 ) },
+     { AV_PIX_FMT_YUVA444P10BE, MKTAG(10 ,  0 , '4', 'Y') },
+     { AV_PIX_FMT_YUVA420P16LE, MKTAG('Y', '4', 11 , 16 ) },
+     { AV_PIX_FMT_YUVA420P16BE, MKTAG(16 , 11 , '4', 'Y') },
+     { AV_PIX_FMT_YUVA422P16LE, MKTAG('Y', '4', 10 , 16 ) },
+     { AV_PIX_FMT_YUVA422P16BE, MKTAG(16 , 10 , '4', 'Y') },
+     { AV_PIX_FMT_YUVA444P16LE, MKTAG('Y', '4',  0 , 16 ) },
+     { AV_PIX_FMT_YUVA444P16BE, MKTAG(16 ,  0 , '4', 'Y') },
      /* quicktime */
 +    { AV_PIX_FMT_YUV420P, MKTAG('R', '4', '2', '0') }, /* Radius DV YUV PAL */
 +    { AV_PIX_FMT_YUV411P, MKTAG('R', '4', '1', '1') }, /* Radius DV YUV NTSC */
      { AV_PIX_FMT_UYVY422, MKTAG('2', 'v', 'u', 'y') },
      { AV_PIX_FMT_UYVY422, MKTAG('2', 'V', 'u', 'y') },
      { AV_PIX_FMT_UYVY422, MKTAG('A', 'V', 'U', 'I') }, /* FIXME merge both fields */
Simple merge
Simple merge
@@@ -112,9 -91,35 +112,37 @@@ const AVCodecTag ff_nut_video_tags[] = 
      { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '3',  0 , 16 ) },
      { AV_CODEC_ID_RAWVIDEO, MKTAG(16 ,  0 , '3', 'Y') },
      { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', 11 ,  8 ) },
 +    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', 10 ,  8 ) },
 +    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4',  0 ,  8 ) },
      { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '2',  0 ,  8 ) },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '1',  0 ,  9 ) },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG( 9 ,  0 , '1', 'Y') },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', 11 ,  9 ) },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG( 9 , 11 , '4', 'Y') },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', 10 ,  9 ) },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG( 9 , 10 , '4', 'Y') },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4',  0 ,  9 ) },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG( 9 ,  0 , '4', 'Y') },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '1',  0 , 10 ) },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG(10 ,  0 , '1', 'Y') },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', 11 , 10 ) },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG(10 , 11 , '4', 'Y') },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', 10 , 10 ) },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG(10 , 10 , '4', 'Y') },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4',  0 , 10 ) },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG(10 ,  0 , '4', 'Y') },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '1',  0 , 16 ) },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG(16 ,  0 , '1', 'Y') },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', 11 , 16 ) },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG(16 , 11 , '4', 'Y') },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', 10 , 16 ) },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG(16 , 10 , '4', 'Y') },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4',  0 , 16 ) },
+     { AV_CODEC_ID_RAWVIDEO, MKTAG(16 ,  0 , '4', 'Y') },
      { AV_CODEC_ID_NONE    , 0                         }
  };
  
Simple merge
@@@ -172,45 -158,26 +172,64 @@@ enum AVPixelFormat 
      AV_PIX_FMT_GBRP10LE,  ///< planar GBR 4:4:4 30bpp, little endian
      AV_PIX_FMT_GBRP16BE,  ///< planar GBR 4:4:4 48bpp, big endian
      AV_PIX_FMT_GBRP16LE,  ///< planar GBR 4:4:4 48bpp, little endian
 -    AV_PIX_FMT_YUVA422P,  ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples)
 -    AV_PIX_FMT_YUVA444P,  ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
 +
 +    /**
 +     * duplicated pixel formats for compatibility with libav.
 +     * FFmpeg supports these formats since May 8 2012 and Jan 28 2012 (commits f9ca1ac7 and 143a5c55)
 +     * Libav added them Oct 12 2012 with incompatible values (commit 6d5600e85)
 +     */
 +    AV_PIX_FMT_YUVA422P_LIBAV,  ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples)
 +    AV_PIX_FMT_YUVA444P_LIBAV,  ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
 +
+     AV_PIX_FMT_YUVA420P9BE,  ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), big endian
+     AV_PIX_FMT_YUVA420P9LE,  ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), little endian
+     AV_PIX_FMT_YUVA422P9BE,  ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), big endian
+     AV_PIX_FMT_YUVA422P9LE,  ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), little endian
+     AV_PIX_FMT_YUVA444P9BE,  ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), big endian
+     AV_PIX_FMT_YUVA444P9LE,  ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), little endian
+     AV_PIX_FMT_YUVA420P10BE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big endian)
+     AV_PIX_FMT_YUVA420P10LE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little endian)
+     AV_PIX_FMT_YUVA422P10BE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big endian)
+     AV_PIX_FMT_YUVA422P10LE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little endian)
+     AV_PIX_FMT_YUVA444P10BE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big endian)
+     AV_PIX_FMT_YUVA444P10LE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little endian)
+     AV_PIX_FMT_YUVA420P16BE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big endian)
+     AV_PIX_FMT_YUVA420P16LE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little endian)
+     AV_PIX_FMT_YUVA422P16BE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big endian)
+     AV_PIX_FMT_YUVA422P16LE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little endian)
+     AV_PIX_FMT_YUVA444P16BE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big endian)
+     AV_PIX_FMT_YUVA444P16LE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little endian)
++
 +#ifndef AV_PIX_FMT_ABI_GIT_MASTER
 +    AV_PIX_FMT_RGBA64BE=0x123,  ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian
 +    AV_PIX_FMT_RGBA64LE,  ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian
 +    AV_PIX_FMT_BGRA64BE,  ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian
 +    AV_PIX_FMT_BGRA64LE,  ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian
 +#endif
 +    AV_PIX_FMT_0RGB=0x123+4,      ///< packed RGB 8:8:8, 32bpp, 0RGB0RGB...
 +    AV_PIX_FMT_RGB0,      ///< packed RGB 8:8:8, 32bpp, RGB0RGB0...
 +    AV_PIX_FMT_0BGR,      ///< packed BGR 8:8:8, 32bpp, 0BGR0BGR...
 +    AV_PIX_FMT_BGR0,      ///< packed BGR 8:8:8, 32bpp, BGR0BGR0...
 +    AV_PIX_FMT_YUVA444P,  ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
 +    AV_PIX_FMT_YUVA422P,  ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples)
 +
 +    AV_PIX_FMT_YUV420P12BE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
 +    AV_PIX_FMT_YUV420P12LE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
 +    AV_PIX_FMT_YUV420P14BE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
 +    AV_PIX_FMT_YUV420P14LE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
 +    AV_PIX_FMT_YUV422P12BE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
 +    AV_PIX_FMT_YUV422P12LE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
 +    AV_PIX_FMT_YUV422P14BE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
 +    AV_PIX_FMT_YUV422P14LE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
 +    AV_PIX_FMT_YUV444P12BE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
 +    AV_PIX_FMT_YUV444P12LE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
 +    AV_PIX_FMT_YUV444P14BE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
 +    AV_PIX_FMT_YUV444P14LE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
 +    AV_PIX_FMT_GBRP12BE,    ///< planar GBR 4:4:4 36bpp, big endian
 +    AV_PIX_FMT_GBRP12LE,    ///< planar GBR 4:4:4 36bpp, little endian
 +    AV_PIX_FMT_GBRP14BE,    ///< planar GBR 4:4:4 42bpp, big endian
 +    AV_PIX_FMT_GBRP14LE,    ///< planar GBR 4:4:4 42bpp, little endian
 +
      AV_PIX_FMT_NB,        ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions
  
  #if FF_API_PIX_FMT
  #define AV_PIX_FMT_YUV422P16 AV_PIX_FMT_NE(YUV422P16BE, YUV422P16LE)
  #define AV_PIX_FMT_YUV444P16 AV_PIX_FMT_NE(YUV444P16BE, YUV444P16LE)
  
 +#define AV_PIX_FMT_RGBA64 AV_PIX_FMT_NE(RGBA64BE, RGBA64LE)
 +#define AV_PIX_FMT_BGRA64 AV_PIX_FMT_NE(BGRA64BE, BGRA64LE)
  #define AV_PIX_FMT_GBRP9     AV_PIX_FMT_NE(GBRP9BE ,    GBRP9LE)
  #define AV_PIX_FMT_GBRP10    AV_PIX_FMT_NE(GBRP10BE,    GBRP10LE)
 +#define AV_PIX_FMT_GBRP12    AV_PIX_FMT_NE(GBRP12BE,    GBRP12LE)
 +#define AV_PIX_FMT_GBRP14    AV_PIX_FMT_NE(GBRP14BE,    GBRP14LE)
  #define AV_PIX_FMT_GBRP16    AV_PIX_FMT_NE(GBRP16BE,    GBRP16LE)
  
+ #define AV_PIX_FMT_YUVA420P9  AV_PIX_FMT_NE(YUVA420P9BE , YUVA420P9LE)
+ #define AV_PIX_FMT_YUVA422P9  AV_PIX_FMT_NE(YUVA422P9BE , YUVA422P9LE)
+ #define AV_PIX_FMT_YUVA444P9  AV_PIX_FMT_NE(YUVA444P9BE , YUVA444P9LE)
+ #define AV_PIX_FMT_YUVA420P10 AV_PIX_FMT_NE(YUVA420P10BE, YUVA420P10LE)
+ #define AV_PIX_FMT_YUVA422P10 AV_PIX_FMT_NE(YUVA422P10BE, YUVA422P10LE)
+ #define AV_PIX_FMT_YUVA444P10 AV_PIX_FMT_NE(YUVA444P10BE, YUVA444P10LE)
+ #define AV_PIX_FMT_YUVA420P16 AV_PIX_FMT_NE(YUVA420P16BE, YUVA420P16LE)
+ #define AV_PIX_FMT_YUVA422P16 AV_PIX_FMT_NE(YUVA422P16BE, YUVA422P16LE)
+ #define AV_PIX_FMT_YUVA444P16 AV_PIX_FMT_NE(YUVA444P16BE, YUVA444P16LE)
  #if FF_API_PIX_FMT
  #define PixelFormat AVPixelFormat
  
@@@ -927,14 -721,8 +927,24 @@@ av_cold void ff_sws_init_input_funcs(Sw
      case AV_PIX_FMT_YUV422P10LE:
      case AV_PIX_FMT_YUV444P10LE:
      case AV_PIX_FMT_YUV420P10LE:
 +    case AV_PIX_FMT_YUV422P12LE:
 +    case AV_PIX_FMT_YUV444P12LE:
 +    case AV_PIX_FMT_YUV420P12LE:
 +    case AV_PIX_FMT_YUV422P14LE:
 +    case AV_PIX_FMT_YUV444P14LE:
 +    case AV_PIX_FMT_YUV420P14LE:
      case AV_PIX_FMT_YUV420P16LE:
      case AV_PIX_FMT_YUV422P16LE:
++
++    case AV_PIX_FMT_YUVA444P9LE:
++    case AV_PIX_FMT_YUVA422P9LE:
++    case AV_PIX_FMT_YUVA420P9LE:
++    case AV_PIX_FMT_YUVA444P10LE:
++    case AV_PIX_FMT_YUVA422P10LE:
++    case AV_PIX_FMT_YUVA420P10LE:
++    case AV_PIX_FMT_YUVA420P16LE:
++    case AV_PIX_FMT_YUVA422P16LE:
++    case AV_PIX_FMT_YUVA444P16LE:
      case AV_PIX_FMT_YUV444P16LE:
          c->chrToYV12 = bswap16UV_c;
          break;
      case AV_PIX_FMT_YUV420P16BE:
      case AV_PIX_FMT_YUV422P16BE:
      case AV_PIX_FMT_YUV444P16BE:
++
++    case AV_PIX_FMT_YUVA444P9BE:
++    case AV_PIX_FMT_YUVA422P9BE:
++    case AV_PIX_FMT_YUVA420P9BE:
++    case AV_PIX_FMT_YUVA444P10BE:
++    case AV_PIX_FMT_YUVA422P10BE:
++    case AV_PIX_FMT_YUVA420P10BE:
++    case AV_PIX_FMT_YUVA420P16BE:
++    case AV_PIX_FMT_YUVA422P16BE:
++    case AV_PIX_FMT_YUVA444P16BE:
          c->chrToYV12 = bswap16UV_c;
          break;
  #endif
      case AV_PIX_FMT_YUV420P16LE:
      case AV_PIX_FMT_YUV422P16LE:
      case AV_PIX_FMT_YUV444P16LE:
++
++    case AV_PIX_FMT_YUVA444P9LE:
++    case AV_PIX_FMT_YUVA422P9LE:
++    case AV_PIX_FMT_YUVA420P9LE:
++    case AV_PIX_FMT_YUVA444P10LE:
++    case AV_PIX_FMT_YUVA422P10LE:
++    case AV_PIX_FMT_YUVA420P10LE:
++    case AV_PIX_FMT_YUVA420P16LE:
++    case AV_PIX_FMT_YUVA422P16LE:
++    case AV_PIX_FMT_YUVA444P16LE:
      case AV_PIX_FMT_GRAY16LE:
          c->lumToYV12 = bswap16Y_c;
          break;
      case AV_PIX_FMT_YUV420P16BE:
      case AV_PIX_FMT_YUV422P16BE:
      case AV_PIX_FMT_YUV444P16BE:
++
++    case AV_PIX_FMT_YUVA444P9BE:
++    case AV_PIX_FMT_YUVA422P9BE:
++    case AV_PIX_FMT_YUVA420P9BE:
++    case AV_PIX_FMT_YUVA444P10BE:
++    case AV_PIX_FMT_YUVA422P10BE:
++    case AV_PIX_FMT_YUVA420P10BE:
++    case AV_PIX_FMT_YUVA420P16BE:
++    case AV_PIX_FMT_YUVA422P16BE:
++    case AV_PIX_FMT_YUVA444P16BE:
      case AV_PIX_FMT_GRAY16BE:
          c->lumToYV12 = bswap16Y_c;
          break;
Simple merge
@@@ -139,20 -98,27 +139,41 @@@ static void fillPlane(uint8_t *plane, i
      }
  }
  
-                       int alpha, int bits)
 +static void fillPlane16(uint8_t *plane, int stride, int width, int height, int y,
-     int v = alpha ? -1 : (1<<bits);
++                      int alpha, int bits, const int big_endian)
 +{
 +    int i, j;
 +    uint8_t *ptr = plane + stride * y;
++    int v = alpha ? 0xFFFF>>(15-bits) : (1<<bits);
 +    for (i = 0; i < height; i++) {
 +        for (j = 0; j < width; j++) {
 +            AV_WN16(ptr+2*j, v);
 +        }
 +        ptr += stride;
 +    }
 +}
 +
+ static void fill_plane9or10(uint8_t *plane, int stride, int width,
+                             int height, int y, uint8_t val,
+                             const int dst_depth, const int big_endian)
+ {
+     int i, j;
+     uint16_t *dst = (uint16_t *) (plane + stride * y);
+ #define FILL8TO9_OR_10(wfunc) \
+     for (i = 0; i < height; i++) { \
+         for (j = 0; j < width; j++) { \
+             wfunc(&dst[j], (val << (dst_depth - 8)) |  \
+                                (val >> (16 - dst_depth))); \
+         } \
+         dst += stride / 2; \
+     }
+     if (big_endian) {
+         FILL8TO9_OR_10(AV_WB16);
+     } else {
+         FILL8TO9_OR_10(AV_WL16);
+     }
+ }
  static void copyPlane(const uint8_t *src, int srcStride,
                        int srcSliceY, int srcSliceH, int width,
                        uint8_t *dst, int dstStride)
@@@ -780,17 -698,19 +801,32 @@@ static int planarCopyWrapper(SwsContex
          // ignore palette for GRAY8
          if (plane == 1 && !dst[2]) continue;
          if (!src[plane] || (plane == 1 && !src[2])) {
-                         plane == 3, desc_dst->comp[plane].depth_minus1);
++#if 1
 +            if (is16BPS(c->dstFormat) || isNBPS(c->dstFormat)) {
 +                fillPlane16(dst[plane], dstStride[plane], length, height, y,
++                        plane == 3, desc_dst->comp[plane].depth_minus1,
++                        isBE(c->dstFormat));
 +            } else {
 +                fillPlane(dst[plane], dstStride[plane], length, height, y,
 +                        (plane == 3) ? 255 : 128);
 +            }
++#else
+             int val = (plane == 3) ? 255 : 128;
+             if (is16BPS(c->dstFormat))
+                 length *= 2;
+             if (is9_OR_10BPS(c->dstFormat)) {
+                 fill_plane9or10(dst[plane], dstStride[plane],
+                                 length, height, y, val,
+                                 desc_dst->comp[plane].depth_minus1 + 1,
+                                 isBE(c->dstFormat));
+             } else
+                 fillPlane(dst[plane], dstStride[plane], length, height, y,
+                           val);
++#endif
          } else {
 -            if (is9_OR_10BPS(c->srcFormat)) {
 +            if(isNBPS(c->srcFormat) || isNBPS(c->dstFormat)
 +               || (is16BPS(c->srcFormat) != is16BPS(c->dstFormat))
 +            ) {
                  const int src_depth = desc_src->comp[plane].depth_minus1 + 1;
                  const int dst_depth = desc_dst->comp[plane].depth_minus1 + 1;
                  const uint16_t *srcPtr2 = (const uint16_t *) srcPtr;
@@@ -116,10 -110,26 +116,28 @@@ static const FormatEntry format_entries
      [AV_PIX_FMT_YUVA420P]    = { 1, 1 },
      [AV_PIX_FMT_YUVA422P]    = { 1, 1 },
      [AV_PIX_FMT_YUVA444P]    = { 1, 1 },
+     [AV_PIX_FMT_YUVA420P9BE] = { 1, 1 },
+     [AV_PIX_FMT_YUVA420P9LE] = { 1, 1 },
+     [AV_PIX_FMT_YUVA422P9BE] = { 1, 1 },
+     [AV_PIX_FMT_YUVA422P9LE] = { 1, 1 },
+     [AV_PIX_FMT_YUVA444P9BE] = { 1, 1 },
+     [AV_PIX_FMT_YUVA444P9LE] = { 1, 1 },
+     [AV_PIX_FMT_YUVA420P10BE]= { 1, 1 },
+     [AV_PIX_FMT_YUVA420P10LE]= { 1, 1 },
+     [AV_PIX_FMT_YUVA422P10BE]= { 1, 1 },
+     [AV_PIX_FMT_YUVA422P10LE]= { 1, 1 },
+     [AV_PIX_FMT_YUVA444P10BE]= { 1, 1 },
+     [AV_PIX_FMT_YUVA444P10LE]= { 1, 1 },
+     [AV_PIX_FMT_YUVA420P16BE]= { 1, 1 },
+     [AV_PIX_FMT_YUVA420P16LE]= { 1, 1 },
+     [AV_PIX_FMT_YUVA422P16BE]= { 1, 1 },
+     [AV_PIX_FMT_YUVA422P16LE]= { 1, 1 },
+     [AV_PIX_FMT_YUVA444P16BE]= { 1, 1 },
+     [AV_PIX_FMT_YUVA444P16LE]= { 1, 1 },
      [AV_PIX_FMT_RGB48BE]     = { 1, 1 },
      [AV_PIX_FMT_RGB48LE]     = { 1, 1 },
 +    [AV_PIX_FMT_RGBA64BE]    = { 1, 0 },
 +    [AV_PIX_FMT_RGBA64LE]    = { 1, 0 },
      [AV_PIX_FMT_RGB565BE]    = { 1, 1 },
      [AV_PIX_FMT_RGB565LE]    = { 1, 1 },
      [AV_PIX_FMT_RGB555BE]    = { 1, 1 },
 -abgr                037bf9df6a765520ad6d490066bf4b89
 -argb                c442a8261c2265a07212ef0f72e35f5a
 -bgr24               0d0cb38ab3fa0b2ec0865c14f78b217b
 -bgr444be            d9ea9307d21b162225b8b2c524cf9477
 -bgr444le            88035350e9da3a8f67387890b956f0bc
 -bgr48be             00624e6c7ec7ab19897ba2f0a3257fe8
 -bgr48le             d02c235ebba7167881ca2d576497ff84
 -bgr4_byte           50d23cc82d9dcef2fd12adb81fb9b806
 -bgr555be            49f01b1f1f0c84fd9e776dd34cc3c280
 -bgr555le            378d6ac4223651a1adcbf94a3d0d807b
 -bgr565be            257cf78afa35dc31e9696f139c916715
 -bgr565le            1dfdd03995c287e3c754b164bf26a355
 -bgr8                24bd566170343d06fec6fccfff5abc54
 -bgra                76a18a5151242fa137133f604cd624d2
 -gray                db08f7f0751900347e6b8649e4164d21
 -gray16be            7becf34ae825a3df3969bf4c6bfeb5e2
 -gray16le            10bd87059b5c189f3caef2837f4f2b5c
 -monob               668ebe8b8103b9046b251b2fa8a1d88f
 -monow               9251497f3b0634f1165d12d5a289d943
 -nv12                e0af357888584d36eec5aa0f673793ef
 -nv21                9a3297f3b34baa038b1f37cb202b512f
 -rgb24               b41eba9651e1b5fe386289b506188105
 -rgb444be            9e89db334568c6b2e3d5d0540f4ba960
 -rgb444le            0a68cb6de8bf530aa30c5c1205c25155
 -rgb48be             cc139ec1dd9451f0e049c0cb3a0c8aa2
 -rgb48le             86c5608904f75360d492dbc5c9589969
 -rgb4_byte           c93ba89b74c504e7f5ae9d9ab1546c73
 -rgb555be            912a62c5e53bfcbac2a0340e10973cf2
 -rgb555le            a937a0fc764fb57dc1b3af87cba0273c
 -rgb565be            9cadf742e05ddc23a3b5b270f89aad3c
 -rgb565le            d39aa298bb525e9be8860351c6f62dab
 -rgb8                4a9d8e4f2f154e83a7e1735be6300700
 -rgba                93a5b3712e6eb8c5b9a09ffc7b9fbc12
 -uyvy422             adcf64516a19fce44df77082bdb16291
 -yuv410p             2d9225153c83ee1132397d619d94d1b3
 -yuv411p             8b298af3e43348ca1b11eb8a3252ac6c
 -yuv420p             eba2f135a08829387e2f698ff72a2939
 -yuv420p10be         299fe1d785a3d3dd5e70778700d7fb06
 -yuv420p10le         8aee004e765a5383be0954f5e916b72f
 -yuv420p16be         16c009a235cd52b74791a895423152a3
 -yuv420p16le         2d59c4f1d0314a5a957a7cfc4b6fabcc
 -yuv420p9be          ce880fa07830e5297c22acf6e20555ce
 -yuv420p9le          16543fda8f87d94a6cf857d2e8d4461a
 -yuv422p             c9bba4529821d796a6ab09f6a5fd355a
 -yuv422p10be         11af7dfafe8bc025c7e3bd82b830fe8a
 -yuv422p10le         ec04efb76efa79bf0d02b21572371a56
 -yuv422p16be         5499502e1c29534a158a1fe60e889f60
 -yuv422p16le         e3d61fde6978591596bc36b914386623
 -yuv422p9be          29b71579946940a8c00fa844c9dff507
 -yuv422p9le          062b7f9cbb972bf36b5bdb1a7623701a
 -yuv440p             5a064afe2b453bb52cdb3f176b1aa1cf
 -yuv444p             0a98447b78fd476aa39686da6a74fa2e
 -yuv444p10be         71be185a2fb7a353eb024df9bc63212d
 -yuv444p10le         c1c6b30a12065c7901c0a267e4861a0f
 -yuv444p16be         1c6ea2c2f5e539006112ceec3d4e7d90
 -yuv444p16le         20f86bc2f68d2b3f1f2b48b97b2189f4
 -yuv444p9be          6ab31f4c12b533ce318ecdff83cdd054
 -yuv444p9le          f0606604a5c08becab6ba500124c4b7c
 -yuva420p            a29884f3f3dfe1e00b961bc17bef3d47
 -yuva420p10be        145366ff1632de3e300d947f49844284
 -yuva420p10le        242b310218a41aacc59f78f42f949d60
 -yuva420p16be        25a335f66a0670911ced818aa42fb670
 -yuva420p16le        97bf252e6c030f0f0412d3826c2ea259
 -yuva420p9be         06b764d85bd3c22e9b7ca4babed84d4f
 -yuva420p9le         1f01cdd4fc46f98d4c11b2947307a0e3
 -yuva422p            92b6815f465297284cdb843711682cee
 -yuva422p10be        c8722cb6e86d478f501d514a2d004867
 -yuva422p10le        5c2767a47c94966052955bc48f72dd94
 -yuva422p16be        ef442b11b26e5e61f3c958fa309576dd
 -yuva422p16le        5789009759d7a44dacc6da2194e402b1
 -yuva422p9be         e0d2f45f7f5541eee988137c7ebb3495
 -yuva422p9le         a4ec81f328efd3856dec430fb27f2f56
 -yuva444p            c523716e4900cfe515eaab1d7124fdd9
 -yuva444p10be        03df7c3936c25626ea596c28e0466129
 -yuva444p10le        55398bb467bc7957288d59af9f0bfadd
 -yuva444p16be        ee7b9dd854e36b165d5b7cffb646ba6c
 -yuva444p16le        ec93b2907923d5655e9fb085479260ef
 -yuva444p9be         03414257d78e72c28d03e3c247319b7c
 -yuva444p9le         e421d753257e36a79c2c0ec1607ac9e6
 -yuvj420p            32eec78ba51857b16ce9b813a49b7189
 -yuvj422p            0dfa0ed434f73be51428758c69e082cb
 -yuvj440p            657501a28004e27a592757a7509f5189
 -yuvj444p            98d3d054f2ec09a75eeed5d328dc75b7
 -yuyv422             f2569f2b5069a0ee0cecae33de0455e3
 +0bgr                a06d3a7652e4885c65895e0e168aab28
 +0rgb                b6b5653d2228cdf2ba3c55a72f2e713f
 +abgr                1a147fa04ed70b9a7e67a4c89052f630
 +argb                997df0b5c268a0d8f9c611cae4e01e05
 +bgr0                218df6dc3eb5094a0c16a8bd18bc3999
 +bgr24               d6370f6dc34df2ea66e1718baf74137b
 +bgr444be            aba6dfea008ae12c2120a95f54293904
 +bgr444le            cfb5401e8f076cc8675e17ed1114a3df
 +bgr48be             ab65229b64606f6408cd732b967c0b01
 +bgr48le             f1b4e718cadee9bd2978289153ce43de
 +bgr4_byte           de96505ef9ad7078f87b4dfdf6fe4b61
 +bgr555be            8d5de9e9200d622f27dc73958a85045c
 +bgr555le            74eb9837706143a40e26305a16a79369
 +bgr565be            13a36d6502be88fc0c2aec05b8d2d501
 +bgr565le            ed027571692aecd522aa65a90cc7e09b
 +bgr8                71ef789609c746c2e7e4be9dec29062c
 +bgra                0364b074268682ea46168742a8239f7d
 +gray                1e5e2b8548843a6898eedd9c974c422c
 +gray16be            389f4e5a8ab413b3af32767b59ed7f9e
 +gray16le            a1f912941247e45b394b9cf4f0e81130
 +monob               309b5785a36bd988d17e15d88f4ffad1
 +monow               8809a02bc69b58d1114b09ca79ebffad
 +nv12                75e90c54d858b993e99f4ee6d2a2a38f
 +nv21                8831a3f411015d45fbc5dd191245ba9c
 +pal8                13de2a1c3c80cb64d14e2bc4f6f461d0
 +rgb0                992f5ad24802cc255edab45c3084db4a
 +rgb24               c71ba90f69f15c8275232bb3f62d0ced
 +rgb444be            26eaec65d7efd2b0c9c13b47dfd9b241
 +rgb444le            5f29863553107110ea817f52151d77b7
 +rgb48be             a3bc81c46c21818a989f23104a599ab0
 +rgb48le             e87c661ac49aea1f1e93939802883d92
 +rgb4_byte           293b1b84f01efd90bde40cb3faffc127
 +rgb555be            5229183fa64d4e5c7e3703d8263ee6ae
 +rgb555le            c3e9978cb2a4129a5575935e8cbc433a
 +rgb565be            bc123b962629ead1a06af0c18cbb6e5f
 +rgb565le            20757fafe4756e62d845b2ab4c0b8f93
 +rgb8                e01614f5416dcc8ad365ad7a57afc9fb
 +rgba                53796fa4c392a1b2659595b6a284f8c4
 +uyvy422             3f411f947e3ac8f842c88e717d68bd9a
 +yuv410p             7dcf3f4770c8b494290ceacd2c2ce6db
 +yuv411p             9461b188dab6f8b90d9a27e353a89f58
 +yuv420p             61fffd2d8425759a33ae07e718d0242d
 +yuv420p10be         2abf90242cb021cb6fcf9f2c3c92f6a7
 +yuv420p10le         180b7e4de684c7225d2fb37614f842cb
 +yuv420p12be         256c9e6cfc878a8abf681b30777c0620
 +yuv420p12le         8dc8b86c4790da3769d4a62e87608623
 +yuv420p14be         8d22756c5d2b9e501924c082bfb22a6c
 +yuv420p14le         c9da19d4818bcb119ad6481b75778f7e
 +yuv420p16be         4ccdcca6dd6a960f9a3333f0aee095bd
 +yuv420p16le         9c5847d9b0de258a10ee906dc47e24ea
 +yuv420p9be          fa7ad4f73232aac0e35def62af1e2c39
 +yuv420p9le          3720ba1786b56c8f4913e67dddebbb07
 +yuv422p             eee223e92f1f2e5ad4186b411ebf5816
 +yuv422p10be         80fa87750491dcc3e93d175b64835654
 +yuv422p10le         e1640cd315bd96c6b59f7753825a7306
 +yuv422p12be         8a17ae3a5f565479ec4aa230ef78a6fa
 +yuv422p12le         04215506e2eca5b79f47e322a5949a58
 +yuv422p14be         0fec4a6615ff610e3ea5e85acbd1b273
 +yuv422p14le         a54c6121c1cb713a33961ea0faa35956
 +yuv422p16be         1f3c216927d17966a009a42def124bba
 +yuv422p16le         90adbdffaeea9b09398339c8a1322b02
 +yuv422p9be          e46446534dd0821029d3b831c9c1d1b0
 +yuv422p9le          520e418a2429f7efee511b7fcbf45ab6
 +yuv440p             456d83524b299f2fa1bb988e421554d9
 +yuv444p             068bc09d282d18c9fa35c2787943fc2a
 +yuv444p10be         9f6e1490080a454243daee9229425e1e
 +yuv444p10le         cc183e51041351d9ac06c4df6e8ad5f7
 +yuv444p12be         df420773bb3cca2ffb585db3bbe01195
 +yuv444p12le         25c0c73d98c3c1e281044d79097608f5
 +yuv444p14be         516b18e8331e7d404c7541bafc5501e6
 +yuv444p14le         7c88d9a233979d73762cffef2fe08306
 +yuv444p16be         4000b12fa88ed0feef182da31c7e6b96
 +yuv444p16le         96a857dba8dc6792c58daec872825b32
 +yuv444p9be          07727e5c9040b7f0a17d591288ac330d
 +yuv444p9le          4d12d20a68dc28618594c96c2ade4ff4
 +yuva420p            3a8c5c142e051367c196f95696e0e2c3
++yuva420p10be        c15ea36665ebb6c6400b2817f8dc0959
++yuva420p10le        ad2d0424033e7acbafa6d58f59b4487e
++yuva420p16be        6afcf758f4b66c0b4173c942d42212d7
++yuva420p16le        13e195aa96329eb49921b6f9f07b875c
++yuva420p9be         bfbc86280eb417d53c3e09df1d6628b2
++yuva420p9le         78f5593bf51a31841ef83df41d0316eb
 +yuva422p            45ae66d6f69fd5b77e6831e98d228bf4
++yuva422p10be        90ce250a517843b3e8a1ac0f4fdad733
++yuva422p10le        c74cfda8934e3bf86940b7a08c809b35
++yuva422p16be        c3f7354b6013b43439e02aa02be5fe69
++yuva422p16le        a7ccc43820683ab15061d14cf8efce6c
++yuva422p9be         14c55a16d19499b54b4341f135d3e558
++yuva422p9le         a8bf168e5d2709222192d0aff46b1373
 +yuva444p            86b05da54db8c7e8cf5b6638e19c6fc5
++yuva444p10be        bea827ff82f229145a016954120b731f
++yuva444p10le        c51b0554cfba0fabacf979683dceee95
++yuva444p16be        52a9591ec0d5059e49b1b2803f8582aa
++yuva444p16le        a9272ac197e4a4195662ce90f533976c
++yuva444p9be         f72f646ef07cdab613420585aba041ac
++yuva444p9le         6d431b0a27bf4f86ea44ef5f14247a01
 +yuvj420p            73661456012f20cda81207b14bb0c0a5
 +yuvj422p            aa97862b57f47c5a6506156e9aaf129a
 +yuvj440p            ff8b9884a49d546b035f5d2ac1e673df
 +yuvj444p            b8142888d80b8065c54045839e79b331
 +yuyv422             f06a4fbbdb32807d05de825daa2c3a1b
 -abgr                037bf9df6a765520ad6d490066bf4b89
 -argb                c442a8261c2265a07212ef0f72e35f5a
 -bgr24               0d0cb38ab3fa0b2ec0865c14f78b217b
 -bgr444be            d9ea9307d21b162225b8b2c524cf9477
 -bgr444le            88035350e9da3a8f67387890b956f0bc
 -bgr48be             00624e6c7ec7ab19897ba2f0a3257fe8
 -bgr48le             d02c235ebba7167881ca2d576497ff84
 -bgr4_byte           50d23cc82d9dcef2fd12adb81fb9b806
 -bgr555be            49f01b1f1f0c84fd9e776dd34cc3c280
 -bgr555le            378d6ac4223651a1adcbf94a3d0d807b
 -bgr565be            257cf78afa35dc31e9696f139c916715
 -bgr565le            1dfdd03995c287e3c754b164bf26a355
 -bgr8                24bd566170343d06fec6fccfff5abc54
 -bgra                76a18a5151242fa137133f604cd624d2
 -gray                db08f7f0751900347e6b8649e4164d21
 -gray16be            7becf34ae825a3df3969bf4c6bfeb5e2
 -gray16le            10bd87059b5c189f3caef2837f4f2b5c
 -monob               668ebe8b8103b9046b251b2fa8a1d88f
 -monow               9251497f3b0634f1165d12d5a289d943
 -nv12                e0af357888584d36eec5aa0f673793ef
 -nv21                9a3297f3b34baa038b1f37cb202b512f
 -rgb24               b41eba9651e1b5fe386289b506188105
 -rgb444be            9e89db334568c6b2e3d5d0540f4ba960
 -rgb444le            0a68cb6de8bf530aa30c5c1205c25155
 -rgb48be             cc139ec1dd9451f0e049c0cb3a0c8aa2
 -rgb48le             86c5608904f75360d492dbc5c9589969
 -rgb4_byte           c93ba89b74c504e7f5ae9d9ab1546c73
 -rgb555be            912a62c5e53bfcbac2a0340e10973cf2
 -rgb555le            a937a0fc764fb57dc1b3af87cba0273c
 -rgb565be            9cadf742e05ddc23a3b5b270f89aad3c
 -rgb565le            d39aa298bb525e9be8860351c6f62dab
 -rgb8                4a9d8e4f2f154e83a7e1735be6300700
 -rgba                93a5b3712e6eb8c5b9a09ffc7b9fbc12
 -uyvy422             adcf64516a19fce44df77082bdb16291
 -yuv410p             2d9225153c83ee1132397d619d94d1b3
 -yuv411p             8b298af3e43348ca1b11eb8a3252ac6c
 -yuv420p             eba2f135a08829387e2f698ff72a2939
 -yuv420p10be         299fe1d785a3d3dd5e70778700d7fb06
 -yuv420p10le         8aee004e765a5383be0954f5e916b72f
 -yuv420p16be         16c009a235cd52b74791a895423152a3
 -yuv420p16le         2d59c4f1d0314a5a957a7cfc4b6fabcc
 -yuv420p9be          ce880fa07830e5297c22acf6e20555ce
 -yuv420p9le          16543fda8f87d94a6cf857d2e8d4461a
 -yuv422p             c9bba4529821d796a6ab09f6a5fd355a
 -yuv422p10be         11af7dfafe8bc025c7e3bd82b830fe8a
 -yuv422p10le         ec04efb76efa79bf0d02b21572371a56
 -yuv422p16be         5499502e1c29534a158a1fe60e889f60
 -yuv422p16le         e3d61fde6978591596bc36b914386623
 -yuv422p9be          29b71579946940a8c00fa844c9dff507
 -yuv422p9le          062b7f9cbb972bf36b5bdb1a7623701a
 -yuv440p             5a064afe2b453bb52cdb3f176b1aa1cf
 -yuv444p             0a98447b78fd476aa39686da6a74fa2e
 -yuv444p10be         71be185a2fb7a353eb024df9bc63212d
 -yuv444p10le         c1c6b30a12065c7901c0a267e4861a0f
 -yuv444p16be         1c6ea2c2f5e539006112ceec3d4e7d90
 -yuv444p16le         20f86bc2f68d2b3f1f2b48b97b2189f4
 -yuv444p9be          6ab31f4c12b533ce318ecdff83cdd054
 -yuv444p9le          f0606604a5c08becab6ba500124c4b7c
 -yuva420p            a29884f3f3dfe1e00b961bc17bef3d47
 -yuva420p10be        145366ff1632de3e300d947f49844284
 -yuva420p10le        242b310218a41aacc59f78f42f949d60
 -yuva420p16be        25a335f66a0670911ced818aa42fb670
 -yuva420p16le        97bf252e6c030f0f0412d3826c2ea259
 -yuva420p9be         06b764d85bd3c22e9b7ca4babed84d4f
 -yuva420p9le         1f01cdd4fc46f98d4c11b2947307a0e3
 -yuva422p            92b6815f465297284cdb843711682cee
 -yuva422p10be        c8722cb6e86d478f501d514a2d004867
 -yuva422p10le        5c2767a47c94966052955bc48f72dd94
 -yuva422p16be        ef442b11b26e5e61f3c958fa309576dd
 -yuva422p16le        5789009759d7a44dacc6da2194e402b1
 -yuva422p9be         e0d2f45f7f5541eee988137c7ebb3495
 -yuva422p9le         a4ec81f328efd3856dec430fb27f2f56
 -yuva444p            c523716e4900cfe515eaab1d7124fdd9
 -yuva444p10be        03df7c3936c25626ea596c28e0466129
 -yuva444p10le        55398bb467bc7957288d59af9f0bfadd
 -yuva444p16be        ee7b9dd854e36b165d5b7cffb646ba6c
 -yuva444p16le        ec93b2907923d5655e9fb085479260ef
 -yuva444p9be         03414257d78e72c28d03e3c247319b7c
 -yuva444p9le         e421d753257e36a79c2c0ec1607ac9e6
 -yuvj420p            32eec78ba51857b16ce9b813a49b7189
 -yuvj422p            0dfa0ed434f73be51428758c69e082cb
 -yuvj440p            657501a28004e27a592757a7509f5189
 -yuvj444p            98d3d054f2ec09a75eeed5d328dc75b7
 -yuyv422             f2569f2b5069a0ee0cecae33de0455e3
 +0bgr                a06d3a7652e4885c65895e0e168aab28
 +0rgb                b6b5653d2228cdf2ba3c55a72f2e713f
 +abgr                1a147fa04ed70b9a7e67a4c89052f630
 +argb                997df0b5c268a0d8f9c611cae4e01e05
 +bgr0                218df6dc3eb5094a0c16a8bd18bc3999
 +bgr24               d6370f6dc34df2ea66e1718baf74137b
 +bgr444be            aba6dfea008ae12c2120a95f54293904
 +bgr444le            cfb5401e8f076cc8675e17ed1114a3df
 +bgr48be             ab65229b64606f6408cd732b967c0b01
 +bgr48le             f1b4e718cadee9bd2978289153ce43de
 +bgr4_byte           de96505ef9ad7078f87b4dfdf6fe4b61
 +bgr555be            8d5de9e9200d622f27dc73958a85045c
 +bgr555le            74eb9837706143a40e26305a16a79369
 +bgr565be            13a36d6502be88fc0c2aec05b8d2d501
 +bgr565le            ed027571692aecd522aa65a90cc7e09b
 +bgr8                71ef789609c746c2e7e4be9dec29062c
 +bgra                0364b074268682ea46168742a8239f7d
 +gray                1e5e2b8548843a6898eedd9c974c422c
 +gray16be            389f4e5a8ab413b3af32767b59ed7f9e
 +gray16le            a1f912941247e45b394b9cf4f0e81130
 +monob               309b5785a36bd988d17e15d88f4ffad1
 +monow               8809a02bc69b58d1114b09ca79ebffad
 +nv12                75e90c54d858b993e99f4ee6d2a2a38f
 +nv21                8831a3f411015d45fbc5dd191245ba9c
 +pal8                13de2a1c3c80cb64d14e2bc4f6f461d0
 +rgb0                992f5ad24802cc255edab45c3084db4a
 +rgb24               c71ba90f69f15c8275232bb3f62d0ced
 +rgb444be            26eaec65d7efd2b0c9c13b47dfd9b241
 +rgb444le            5f29863553107110ea817f52151d77b7
 +rgb48be             a3bc81c46c21818a989f23104a599ab0
 +rgb48le             e87c661ac49aea1f1e93939802883d92
 +rgb4_byte           293b1b84f01efd90bde40cb3faffc127
 +rgb555be            5229183fa64d4e5c7e3703d8263ee6ae
 +rgb555le            c3e9978cb2a4129a5575935e8cbc433a
 +rgb565be            bc123b962629ead1a06af0c18cbb6e5f
 +rgb565le            20757fafe4756e62d845b2ab4c0b8f93
 +rgb8                e01614f5416dcc8ad365ad7a57afc9fb
 +rgba                53796fa4c392a1b2659595b6a284f8c4
 +uyvy422             3f411f947e3ac8f842c88e717d68bd9a
 +yuv410p             7dcf3f4770c8b494290ceacd2c2ce6db
 +yuv411p             9461b188dab6f8b90d9a27e353a89f58
 +yuv420p             61fffd2d8425759a33ae07e718d0242d
 +yuv420p10be         2abf90242cb021cb6fcf9f2c3c92f6a7
 +yuv420p10le         180b7e4de684c7225d2fb37614f842cb
 +yuv420p12be         256c9e6cfc878a8abf681b30777c0620
 +yuv420p12le         8dc8b86c4790da3769d4a62e87608623
 +yuv420p14be         8d22756c5d2b9e501924c082bfb22a6c
 +yuv420p14le         c9da19d4818bcb119ad6481b75778f7e
 +yuv420p16be         4ccdcca6dd6a960f9a3333f0aee095bd
 +yuv420p16le         9c5847d9b0de258a10ee906dc47e24ea
 +yuv420p9be          fa7ad4f73232aac0e35def62af1e2c39
 +yuv420p9le          3720ba1786b56c8f4913e67dddebbb07
 +yuv422p             eee223e92f1f2e5ad4186b411ebf5816
 +yuv422p10be         80fa87750491dcc3e93d175b64835654
 +yuv422p10le         e1640cd315bd96c6b59f7753825a7306
 +yuv422p12be         8a17ae3a5f565479ec4aa230ef78a6fa
 +yuv422p12le         04215506e2eca5b79f47e322a5949a58
 +yuv422p14be         0fec4a6615ff610e3ea5e85acbd1b273
 +yuv422p14le         a54c6121c1cb713a33961ea0faa35956
 +yuv422p16be         1f3c216927d17966a009a42def124bba
 +yuv422p16le         90adbdffaeea9b09398339c8a1322b02
 +yuv422p9be          e46446534dd0821029d3b831c9c1d1b0
 +yuv422p9le          520e418a2429f7efee511b7fcbf45ab6
 +yuv440p             456d83524b299f2fa1bb988e421554d9
 +yuv444p             068bc09d282d18c9fa35c2787943fc2a
 +yuv444p10be         9f6e1490080a454243daee9229425e1e
 +yuv444p10le         cc183e51041351d9ac06c4df6e8ad5f7
 +yuv444p12be         df420773bb3cca2ffb585db3bbe01195
 +yuv444p12le         25c0c73d98c3c1e281044d79097608f5
 +yuv444p14be         516b18e8331e7d404c7541bafc5501e6
 +yuv444p14le         7c88d9a233979d73762cffef2fe08306
 +yuv444p16be         4000b12fa88ed0feef182da31c7e6b96
 +yuv444p16le         96a857dba8dc6792c58daec872825b32
 +yuv444p9be          07727e5c9040b7f0a17d591288ac330d
 +yuv444p9le          4d12d20a68dc28618594c96c2ade4ff4
 +yuva420p            3a8c5c142e051367c196f95696e0e2c3
++yuva420p10be        c15ea36665ebb6c6400b2817f8dc0959
++yuva420p10le        ad2d0424033e7acbafa6d58f59b4487e
++yuva420p16be        6afcf758f4b66c0b4173c942d42212d7
++yuva420p16le        13e195aa96329eb49921b6f9f07b875c
++yuva420p9be         bfbc86280eb417d53c3e09df1d6628b2
++yuva420p9le         78f5593bf51a31841ef83df41d0316eb
 +yuva422p            45ae66d6f69fd5b77e6831e98d228bf4
++yuva422p10be        90ce250a517843b3e8a1ac0f4fdad733
++yuva422p10le        c74cfda8934e3bf86940b7a08c809b35
++yuva422p16be        c3f7354b6013b43439e02aa02be5fe69
++yuva422p16le        a7ccc43820683ab15061d14cf8efce6c
++yuva422p9be         14c55a16d19499b54b4341f135d3e558
++yuva422p9le         a8bf168e5d2709222192d0aff46b1373
 +yuva444p            86b05da54db8c7e8cf5b6638e19c6fc5
++yuva444p10be        bea827ff82f229145a016954120b731f
++yuva444p10le        c51b0554cfba0fabacf979683dceee95
++yuva444p16be        52a9591ec0d5059e49b1b2803f8582aa
++yuva444p16le        a9272ac197e4a4195662ce90f533976c
++yuva444p9be         f72f646ef07cdab613420585aba041ac
++yuva444p9le         6d431b0a27bf4f86ea44ef5f14247a01
 +yuvj420p            73661456012f20cda81207b14bb0c0a5
 +yuvj422p            aa97862b57f47c5a6506156e9aaf129a
 +yuvj440p            ff8b9884a49d546b035f5d2ac1e673df
 +yuvj444p            b8142888d80b8065c54045839e79b331
 +yuyv422             f06a4fbbdb32807d05de825daa2c3a1b
index 918efbc,0000000..67e5925
mode 100644,000000..100644
--- /dev/null
@@@ -1,83 -1,0 +1,101 @@@
 +0bgr                2b46a6ce47a19ffc240e4e93f498f491
 +0rgb                e90e5d377a3e5af69fdf7b60cbf88f51
 +abgr                1a147fa04ed70b9a7e67a4c89052f630
 +argb                997df0b5c268a0d8f9c611cae4e01e05
 +bgr0                b61591a68252e66c576b9bb074a9eaed
 +bgr24               d6370f6dc34df2ea66e1718baf74137b
 +bgr444be            aba6dfea008ae12c2120a95f54293904
 +bgr444le            cfb5401e8f076cc8675e17ed1114a3df
 +bgr48be             ab65229b64606f6408cd732b967c0b01
 +bgr48le             f1b4e718cadee9bd2978289153ce43de
 +bgr4_byte           de96505ef9ad7078f87b4dfdf6fe4b61
 +bgr555be            8d5de9e9200d622f27dc73958a85045c
 +bgr555le            74eb9837706143a40e26305a16a79369
 +bgr565be            13a36d6502be88fc0c2aec05b8d2d501
 +bgr565le            ed027571692aecd522aa65a90cc7e09b
 +bgr8                71ef789609c746c2e7e4be9dec29062c
 +bgra                0364b074268682ea46168742a8239f7d
 +gray                1e5e2b8548843a6898eedd9c974c422c
 +gray16be            389f4e5a8ab413b3af32767b59ed7f9e
 +gray16le            a1f912941247e45b394b9cf4f0e81130
 +monob               309b5785a36bd988d17e15d88f4ffad1
 +monow               8809a02bc69b58d1114b09ca79ebffad
 +nv12                75e90c54d858b993e99f4ee6d2a2a38f
 +nv21                8831a3f411015d45fbc5dd191245ba9c
 +pal8                13de2a1c3c80cb64d14e2bc4f6f461d0
 +rgb0                5774780b3c532896300fa326fcde01a8
 +rgb24               c71ba90f69f15c8275232bb3f62d0ced
 +rgb444be            26eaec65d7efd2b0c9c13b47dfd9b241
 +rgb444le            5f29863553107110ea817f52151d77b7
 +rgb48be             a3bc81c46c21818a989f23104a599ab0
 +rgb48le             e87c661ac49aea1f1e93939802883d92
 +rgb4_byte           293b1b84f01efd90bde40cb3faffc127
 +rgb555be            5229183fa64d4e5c7e3703d8263ee6ae
 +rgb555le            c3e9978cb2a4129a5575935e8cbc433a
 +rgb565be            bc123b962629ead1a06af0c18cbb6e5f
 +rgb565le            20757fafe4756e62d845b2ab4c0b8f93
 +rgb8                e01614f5416dcc8ad365ad7a57afc9fb
 +rgba                53796fa4c392a1b2659595b6a284f8c4
 +uyvy422             3f411f947e3ac8f842c88e717d68bd9a
 +yuv410p             7dcf3f4770c8b494290ceacd2c2ce6db
 +yuv411p             9461b188dab6f8b90d9a27e353a89f58
 +yuv420p             61fffd2d8425759a33ae07e718d0242d
 +yuv420p10be         2abf90242cb021cb6fcf9f2c3c92f6a7
 +yuv420p10le         180b7e4de684c7225d2fb37614f842cb
 +yuv420p12be         256c9e6cfc878a8abf681b30777c0620
 +yuv420p12le         8dc8b86c4790da3769d4a62e87608623
 +yuv420p14be         8d22756c5d2b9e501924c082bfb22a6c
 +yuv420p14le         c9da19d4818bcb119ad6481b75778f7e
 +yuv420p16be         4ccdcca6dd6a960f9a3333f0aee095bd
 +yuv420p16le         9c5847d9b0de258a10ee906dc47e24ea
 +yuv420p9be          fa7ad4f73232aac0e35def62af1e2c39
 +yuv420p9le          3720ba1786b56c8f4913e67dddebbb07
 +yuv422p             eee223e92f1f2e5ad4186b411ebf5816
 +yuv422p10be         80fa87750491dcc3e93d175b64835654
 +yuv422p10le         e1640cd315bd96c6b59f7753825a7306
 +yuv422p12be         8a17ae3a5f565479ec4aa230ef78a6fa
 +yuv422p12le         04215506e2eca5b79f47e322a5949a58
 +yuv422p14be         0fec4a6615ff610e3ea5e85acbd1b273
 +yuv422p14le         a54c6121c1cb713a33961ea0faa35956
 +yuv422p16be         1f3c216927d17966a009a42def124bba
 +yuv422p16le         90adbdffaeea9b09398339c8a1322b02
 +yuv422p9be          e46446534dd0821029d3b831c9c1d1b0
 +yuv422p9le          520e418a2429f7efee511b7fcbf45ab6
 +yuv440p             456d83524b299f2fa1bb988e421554d9
 +yuv444p             068bc09d282d18c9fa35c2787943fc2a
 +yuv444p10be         9f6e1490080a454243daee9229425e1e
 +yuv444p10le         cc183e51041351d9ac06c4df6e8ad5f7
 +yuv444p12be         df420773bb3cca2ffb585db3bbe01195
 +yuv444p12le         25c0c73d98c3c1e281044d79097608f5
 +yuv444p14be         516b18e8331e7d404c7541bafc5501e6
 +yuv444p14le         7c88d9a233979d73762cffef2fe08306
 +yuv444p16be         4000b12fa88ed0feef182da31c7e6b96
 +yuv444p16le         96a857dba8dc6792c58daec872825b32
 +yuv444p9be          07727e5c9040b7f0a17d591288ac330d
 +yuv444p9le          4d12d20a68dc28618594c96c2ade4ff4
 +yuva420p            3a8c5c142e051367c196f95696e0e2c3
++yuva420p10be        a3fd7193dc4abb551ab7f88b7e366d33
++yuva420p10le        ad2d0424033e7acbafa6d58f59b4487e
++yuva420p16be        6afcf758f4b66c0b4173c942d42212d7
++yuva420p16le        13e195aa96329eb49921b6f9f07b875c
++yuva420p9be         cb12ffe4ea54b118020b97d7bc0c7fe5
++yuva420p9le         78f5593bf51a31841ef83df41d0316eb
 +yuva422p            45ae66d6f69fd5b77e6831e98d228bf4
++yuva422p10be        90ce250a517843b3e8a1ac0f4fdad733
++yuva422p10le        c74cfda8934e3bf86940b7a08c809b35
++yuva422p16be        c3f7354b6013b43439e02aa02be5fe69
++yuva422p16le        a7ccc43820683ab15061d14cf8efce6c
++yuva422p9be         14c55a16d19499b54b4341f135d3e558
++yuva422p9le         a8bf168e5d2709222192d0aff46b1373
 +yuva444p            86b05da54db8c7e8cf5b6638e19c6fc5
++yuva444p10be        bea827ff82f229145a016954120b731f
++yuva444p10le        c51b0554cfba0fabacf979683dceee95
++yuva444p16be        52a9591ec0d5059e49b1b2803f8582aa
++yuva444p16le        a9272ac197e4a4195662ce90f533976c
++yuva444p9be         f72f646ef07cdab613420585aba041ac
++yuva444p9le         6d431b0a27bf4f86ea44ef5f14247a01
 +yuvj420p            73661456012f20cda81207b14bb0c0a5
 +yuvj422p            aa97862b57f47c5a6506156e9aaf129a
 +yuvj440p            ff8b9884a49d546b035f5d2ac1e673df
 +yuvj444p            b8142888d80b8065c54045839e79b331
 +yuyv422             f06a4fbbdb32807d05de825daa2c3a1b
 -abgr                d894cb97f6c80eb21bdbe8a4eea62d86
 -argb                54346f2b2eef10919e0f247241df3b24
 -bgr24               570f8d6b51a838aed022ef67535f6bdc
 -bgr444be            25fe04f73a3bad4140d1c4f96ca5b670
 -bgr444le            2fde227e6cea6dca5decdd0b7c0866f7
 -bgr48be             390d3058a12a99c2b153ed7922508bea
 -bgr48le             39fe06feb4ec1d9730dccc04a0cfac4c
 -bgr4_byte           ee1d35a7baf8e9016891929a2f565c0b
 -bgr555be            de8901c1358834fddea060fcb3a67beb
 -bgr555le            36b745067197f9ca8c1731cac51329c9
 -bgr565be            922a2503767036ae9536f4f7823c04ee
 -bgr565le            3a514a298c6161a071ddf9963c06509d
 -bgr8                7f007fa6c153a16e808a9c51605a4016
 -bgra                a5e7040f9a80cccd65e5acf2ca09ace5
 -gray                d7786a7d9d99ac74230cc045cab5632c
 -gray16be            b554d6c1cc8da23967445be4dd3e4a86
 -gray16le            715a33aa1c19cb26b14f5cc000e7a3d1
 -monob               88c4c050758e64d120f50c7eff694381
 -monow               d31772ebaa877fc2a78565937f7f9673
 -nv12                4676d59db43d657dc12841f6bc3ab452
 -nv21                69c699510ff1fb777b118ebee1002f14
 -rgb24               514692e28e8ff6860e415ce4fcf6eb8c
 -rgb444be            12254053ae93373869fca18b2afcba31
 -rgb444le            badbd68b59c87df6ae73248309637634
 -rgb48be             8fac63787a711886030f8e056872b488
 -rgb48le             ab92f2763a2eb264c3870cc758f97149
 -rgb4_byte           d81ffd3add95842a618eec81024f0b5c
 -rgb555be            4607309f9f217d51cbb53d13b84b4537
 -rgb555le            a350ef1dc2c9688ed49e7ba018843795
 -rgb565be            678ce231c4ea13629c1353b1df4ffbef
 -rgb565le            6f4bb711238baa762d73305213f8d035
 -rgb8                091d0170b354ef0e97312b95feb5483f
 -rgba                a3d362f222098a00e63867f612018659
 -uyvy422             314bd486277111a95d9369b944fa0400
 -yuv410p             7df8f6d69b56a8dcb6c7ee908e5018b5
 -yuv411p             1143e7c5cc28fe0922b051b17733bc4c
 -yuv420p             fdad2d8df8985e3d17e73c71f713cb14
 -yuv420p10be         27f28a6e09b1c04d0f755035a5db1f43
 -yuv420p10le         a5a1692e026590ba2eddb46b9b827529
 -yuv420p16be         d7270efce54eb59c7b01c14157a1b890
 -yuv420p16le         e85abf00bad940a922b623c91c9026d7
 -yuv420p9be          bb87fddca65d1742412c8d2b1caf96c6
 -yuv420p9le          828eec50014a41258a5423c1fe56ac97
 -yuv422p             918e37701ee7377d16a8a6c119c56a40
 -yuv422p10be         315654908d50718e175aae018c484732
 -yuv422p10le         91bbc78a9a56f659b55abc17722dcc09
 -yuv422p16be         e7e34fe9264784763ab6cb406524c0f3
 -yuv422p16le         c435b76b08204dda6908640fb5fd4621
 -yuv422p9be          82494823944912f73cebc58ad2979bbd
 -yuv422p9le          fc69c8a21f473916a4b4225636b97e06
 -yuv440p             461503fdb9b90451020aa3b25ddf041c
 -yuv444p             81b2eba962d12e8d64f003ac56f6faf2
 -yuv444p10be         fb304d77c6d2e18df5938662a22176f0
 -yuv444p10le         b17136913eb066dca6be6af645b9f7e8
 -yuv444p16be         0da9bed80f5542682ab286f3261cf24c
 -yuv444p16le         a0c5d3c7bf3f181db503cf8e450d1335
 -yuv444p9be          9ac2643ce7f7e5c4e17c8c9fd8494d4a
 -yuv444p9le          896a1cc9cccca1ba410dd53942d33cc4
 -yuva420p            8673a9131fb47de69788863f93a50eb7
 -yuva420p10be        cf397b35db9407496093b2ad64f3106c
 -yuva420p10le        8a06c377b8aa2b2979054e074582a5b5
 -yuva420p16be        a61d8ddb646e2d26020fc7ed2a48c1a9
 -yuva420p16le        90ef774f86ad3177ec57eca8744b4e09
 -yuva420p9be         b43d5d88a474c80abad8e887eb5a3317
 -yuva420p9le         ada2b719827059d70ebc57e2a3f9da92
 -yuva422p            3c76ebeca0a7d3aa5f8e31ef80a86ffe
 -yuva422p10be        c12a427d2b8fc84f93fd3cf9fd5bcb14
 -yuva422p10le        aefcda062e7e3463c887faa9d926aca7
 -yuva422p16be        a31bd04c58c22690f2a7c745f34cf48f
 -yuva422p16le        0bc3720dba6076dcce3b74b1d3c6c4b7
 -yuva422p9be         b21d2aa97ff643c86bbc08b578729c39
 -yuva422p9le         c3eda8831e9b9c94a3eb487d33114103
 -yuva444p            3268c6abe5e3cdbd16552a1eddced816
 -yuva444p10be        4f6eaf2bbe8a083773b9f061fec20e41
 -yuva444p10le        2eeda83856df77760cd30e477e8ba00b
 -yuva444p16be        3587f05da58a8435aad648506562d39b
 -yuva444p16le        3a3df23feb60d8832b566fd9765983d0
 -yuva444p9be         d5342be0074975ea65907f5b65c7a335
 -yuva444p9le         c41849b0134670d6f6253c337defbb04
 -yuvj420p            30427bd6caf5bda93a173dbebe759e09
 -yuvj422p            fc8288f64fd149573f73cf8da05d8e6d
 -yuvj440p            508ac7a9ddeb6d1794a1100ba7a1664c
 -yuvj444p            73aebe144085b22d1189caf6ca07e18c
 -yuyv422             169e19ac91b257bd84ace0fdf56559ad
 +0bgr                710350573339f608b23e5bf8ea3327d0
 +0rgb                ba87d80ccd24ffb20ac711511132adb8
 +abgr                e448ff50225b119979987e55399e49e2
 +argb                ef03d804e0de6315fd59e3d2edaddb9d
 +bgr0                93cd61cfcbef1789d2d5ccae4de75f79
 +bgr24               793fc4c2b1c92ad4f7f4dca157e624d1
 +bgr444be            9af6abe0bc74cdcc75b4ab2f441f5f67
 +bgr444le            b8c0e693ae2cbd7c03abcc3aeb4bf7b4
 +bgr48be             3aa33b667b9baefe3f17ef44360688cd
 +bgr48le             eaf353ab363fbb279fd72d6c6e3b8855
 +bgr4_byte           a6e269daf7085504a01113ce5e8bff57
 +bgr555be            9d71206c1a5373b8978126e5f5779726
 +bgr555le            025caaa21fed9d14c382cac26af778c8
 +bgr565be            fca6f07daf23d9dd84381dd4c9afd959
 +bgr565le            f524e9f16bdd68b247dbcb621e543fc0
 +bgr8                68a3a395043dc57335ad1f8e891229c5
 +bgra                3eaf5489b8aa13a3388aad3751b597bf
 +gray                045c35e6cc7d41460f2b96b3e254deab
 +gray16be            70064f9acdc5e3935ccda67e765bf2fb
 +gray16le            578241fb43029e5ae841a3c94d940dce
 +monob               91ec2a25b13f6ca34d42da778b217de0
 +monow               a991455fda8f60f373aeb744456996b9
 +nv12                0617f1e13ae4a43d4cb49282b9c02f71
 +nv21                8a00d5d29766c1251eeda74c0ddee3f2
 +pal8                7849884994cf99604f025b053332d08d
 +rgb0                6a9d26ebf674f02b5a8830583ba7a171
 +rgb24               1de2978e23ad10b9b4ca2777688b4546
 +rgb444be            88f534c5d07ebf5a4374484aed540893
 +rgb444le            c243685bfad7c243a78892a0dafe2b9f
 +rgb48be             874c8e2305ce9d82165ffddf2854d1f2
 +rgb48le             877075f2ff2d9a0aec6fec843385f126
 +rgb4_byte           4a8b119cf1996efe273302da29cbfbfb
 +rgb555be            8aeefa1fc4eba200abee3b1eb52186af
 +rgb555le            0495a7c13f9b0d0253379d5ae90cf6c4
 +rgb565be            5168b66e69c25351948085e5fc51bb3a
 +rgb565le            301a4d41f0db3aaed341d812ed0d7927
 +rgb8                8e5786e83099bc89d2e38a76e6dfcc52
 +rgba                de6a65b8c01bdad84e575202ca8b66a0
 +uyvy422             479105bc4c7fbb4a33ca8745aa8c2de8
 +yuv410p             d0daa93f5cee83360e219e39563ab6da
 +yuv411p             e5c8f3ca024a88dd07e0a92db3e2133d
 +yuv420p             485d9af8608f926ffffbf42230b4150d
 +yuv420p10be         e4f12002b46549779886f27fd3c6c645
 +yuv420p10le         698b7a346ae6d1315280d3e28c86b973
 +yuv420p12be         3d2f7485d277fb66503f6af88bc81b62
 +yuv420p12le         a19c3fd126c7a11d9632922e713ce555
 +yuv420p14be         a1fcbe583e2e687e89ced29260a51fe2
 +yuv420p14le         c689144ea25dd2f760331a6d525bebc2
 +yuv420p16be         6ebcf48a9317c6265430cd3ba5f569a2
 +yuv420p16le         604a7215f384488a38aa0cffdbcbe17e
 +yuv420p9be          7b293aec92897bf0a32ec3a02a20acf9
 +yuv420p9le          f37fdff7d6c62ebe2ab0cf791cd049db
 +yuv422p             b1724528079199908c667b3428a7c01c
 +yuv422p10be         1c7281254fb980c123148dfd145c4a05
 +yuv422p10le         959caa253354e897f01848db21b8006e
 +yuv422p12be         15f63e4cc4a175db4599af1c2aad4047
 +yuv422p12le         08d08b2d2ab7482c41ebdf50fcc3ee3c
 +yuv422p14be         ca008297abbb10b931a9e142747291ec
 +yuv422p14le         0fd39837ecd739f9da916dbf81f0b45c
 +yuv422p16be         4ccc3e0bc94eaf3a3350e4d694c3a56c
 +yuv422p16le         dde889032f13fa5f8d76b8484dd73116
 +yuv422p9be          ba5eae7669d02a13f54a592344612098
 +yuv422p9le          2deb39425d924a15c8946df79ceaa579
 +yuv440p             19de0ba1fd354b42189e96cdf73ef7cc
 +yuv444p             fba8a00cd0b182af82e9de3b2f4d2c8a
 +yuv444p10be         db89397ac4d33e66b5eab3678661f73a
 +yuv444p10le         28208677f07d4e4191ef228c096f3297
 +yuv444p12be         e41f8e27049c52da647e3d6927b591b3
 +yuv444p12le         9428605417583e26041cb2b8d166df62
 +yuv444p14be         a71cad94426e92d77e2f548d4d21a7c0
 +yuv444p14le         adfe8463839fe67394529299620c078d
 +yuv444p16be         07e27200d2f4382090ca260874f02e92
 +yuv444p16le         f8bac16bf1f2afbd3626e07bcc815a9f
 +yuv444p9be          db739906e3ae3b8792cdc5a0c3387565
 +yuv444p9le          693b8d30958ef1a37296b1690b4b36d2
 +yuva420p            df46b738bdaf30d3a7f880b5ae45b092
++yuva420p10be        8e5f3b069fdf2f0c14f49ad827991092
++yuva420p10le        e6915376ad7d0f2be9d50099e5ee33ef
++yuva420p16be        aa8ca29a93936c62ef038ca8a57f47d7
++yuva420p16le        ee0cbb31f9cdb897c1982df0caa8ffa0
++yuva420p9be         b8ca5603123aeb953b9d4fc8ec8e35e1
++yuva420p9le         220212a81cda0f2d112f7ae96d532ff9
 +yuva422p            650755270debb03d2c03b2e93b64c576
++yuva422p10be        fe0d8c2509d2d23f856093f9aea83cba
++yuva422p10le        c641064c6306c6eaf95b387e5ae08d67
++yuva422p16be        0b8f9385498d2449b18fb15237b0a448
++yuva422p16le        ce22b20deb93b4846a5043aa104f22d1
++yuva422p9be         62e767085855b9605513b39eed787e8e
++yuva422p9le         f69c09e872838fe392dfe1825263d3f1
 +yuva444p            72083e0941cc45af9f97b89d3cd16112
++yuva444p10be        d8b6fe8cfb60c6e516563c0a4f5c75a8
++yuva444p10le        4a85b717f21975216144efc11e2f2cda
++yuva444p16be        36a8797545163c24fc0d73f669c3108c
++yuva444p16le        c017c229aacb832a12c2297fb080a7a0
++yuva444p9be         3826abd6dd62d42ad02c9bb610dec561
++yuva444p9le         2c7bfb90f7db9faab6862537801e1143
 +yuvj420p            31386dce60a2dcc493da5d0ed9d880df
 +yuvj422p            492452e50a3fe66724840cad29be4098
 +yuvj440p            7632893e81d3f4f3ace3755f97479897
 +yuvj444p            389388dd5d623f660c30ab840807ce82
 +yuyv422             518be9b5ac93c365c0962453770fbe73
 -abgr                25e72e9dbd01ab00727c976d577f7be5
 -argb                19869bf1a5ac0b6af4d8bbe2c104533c
 -bgr24               89108a4ba00201f79b75b9305c42352d
 -bgr444be            9ef12c42fb791948ca4423c452dc6b9a
 -bgr444le            3650ecfc163abd1596c0cd29d130c4b0
 -bgr48be             2f23931844f57641f3737348182d118c
 -bgr48le             4242a026012b6c135a6aa138a6d67031
 -bgr4_byte           407fcf564ed764c38e1d748f700ab921
 -bgr555be            f739d2519f7e9d494359bf67a3821537
 -bgr555le            bd7b3ec4d684dfad075d89a606cb8b74
 -bgr565be            f19e9a4786395e1ddcd51399c98c9f6c
 -bgr565le            fdb617533e1e7ff512ea5b6b6233e738
 -bgr8                c60f93fd152c6903391d1fe9decd3547
 -bgra                7f9b799fb48544e49ce93e91d7f9fca8
 -gray                30d9014a9d43b5f37e7aa64be3a3ecfc
 -gray16be            6b84b85d3326182fa1217e138249edc5
 -gray16le            66bb8faa09dc149734aca3c768a6d4e1
 -monob               d0cf8732677a5360b6160133043590d8
 -monow               ff9869d067ecb94eb9d90c9750c31fea
 -nv12                046f00f598ce14d9854a3534a5c99114
 -nv21                01ea369dd2d0d3ed7451dc5c8d61497f
 -rgb24               eaefabc168d0b14576bab45bc1e56e1e
 -rgb444be            06722e03f8404e7d2226665ed2444a32
 -rgb444le            185c9a5d9c2877484310d4196ef4cd6f
 -rgb48be             62dd185862ed142283bd300eb6dbd216
 -rgb48le             dcb76353268bc5862194d131762220da
 -rgb4_byte           8c6ff02df0b06dd2d574836c3741b2a2
 -rgb555be            40dc33cfb5cf56aac1c5a290ac486c36
 -rgb555le            4f8eaad29a17e0f8e9d8ab743e76b999
 -rgb565be            b57623ad9df74648339311a0edcebc7b
 -rgb565le            73f247a3315dceaea3022ac7c197c5ef
 -rgb8                13a8d89ef78d8127297d899005456ff0
 -rgba                1fc6e920a42ec812aaa3b2aa02f37987
 -uyvy422             ffbd36720c77398d9a0d03ce2625928f
 -yuv410p             7bfb39d7afb49d6a6173e6b23ae321eb
 -yuv411p             4a90048cc3a65fac150e53289700efe1
 -yuv420p             2e6d6062e8cad37fb3ab2c433b55f382
 -yuv420p10be         fb0772f5e2b9da20ff826e64c3893137
 -yuv420p10le         e95879e14c4a6805f39643964baf41f7
 -yuv420p16be         539076782902664a8acf381bf4f713e8
 -yuv420p16le         0f609e588e5a258644ef85170d70e030
 -yuv420p9be          be40ec975fb2873891643cbbbddbc3b0
 -yuv420p9le          7e606310d3f5ff12badf911e8f333471
 -yuv422p             d7f5cb44d9b0210d66d6a8762640ab34
 -yuv422p10be         0be8378c3773e1c0b394315ef4994351
 -yuv422p10le         6518094fe8de6bee95af21af1e5dc1e1
 -yuv422p16be         9bd8f8c961822b586fa4cf992be54acc
 -yuv422p16le         9c4a1239605c7952b736ac3130163f14
 -yuv422p9be          7c6f1e140b3999ee7d923854e507752a
 -yuv422p9le          51f10d79c07989060dd06e767e6d7d60
 -yuv440p             876385e96165acf51271b20e5d85a416
 -yuv444p             9c3c667d1613b72d15bc6d851c5eb8f7
 -yuv444p10be         ee069cc6db48975eb029d72f889a7fe6
 -yuv444p10le         645b3335248113cafe3c29edb1d7f3be
 -yuv444p16be         de2dedfc6f12073ffead113f86e07ecf
 -yuv444p16le         8e83323cf102d6c823a03ae8a7b7e033
 -yuv444p9be          6ac92b7dc9ab2fc59bee99204886899a
 -yuv444p9le          85aef13a654953d3455d89770b0d74bd
 -yuva420p            c705d1cf061d8c6580ac690b55f92276
 -yuva420p10be        baa5e3b0ff6d0ebbb0958560cd763c6e
 -yuva420p10le        32473853156341586ed716090427fc10
 -yuva420p16be        bf3b134eb70878df9afba61d03e930b8
 -yuva420p16le        105d375154329a381aa58379a0a6ec46
 -yuva420p9be         8273d591e055f48990c29dd905a6cdfd
 -yuva420p9le         95ced0bb07e422d98db61a35cdb3fb8f
 -yuva422p            6aed0ea657ed51cc047a4fbdd981aec8
 -yuva422p10be        b76d8be9b4035d3164c35a2fdb020636
 -yuva422p10le        09aa2454075f999dbd3175b5c435dacf
 -yuva422p16be        39552c259ca242f2417e913ffc602fde
 -yuva422p16le        16faa558a34291ca32f6d94dce211ee2
 -yuva422p9be         a951eafb62c092c63f7566b6803f60df
 -yuva422p9le         00b39cfca78666e057ee527f5e174a04
 -yuva444p            da5d64f2b2bd2013c186456f595fad65
 -yuva444p10be        09375aa0c3a60436fc65ca0da76ca542
 -yuva444p10le        a4baf701134c7ff33f806ad00501d8f5
 -yuva444p16be        7e9b799b057e1446dabbf0f738480cfb
 -yuva444p16le        556d58b91a617fe4a83af99a4aea1c2e
 -yuva444p9be         b5a31de4fac408eeecaf3aff11f40e55
 -yuva444p9le         67467f1e1d9edbd59d3984ebbfe24be6
 -yuvj420p            41fd02b204da0ab62452cd14b595e2e4
 -yuvj422p            7f6ca9bc1812cde02036d7d29a7cce43
 -yuvj440p            25711c3c0fd15ec19c59a10784fcfb96
 -yuvj444p            e45dee2ac02276dfab92e8ebfbe52e00
 -yuyv422             e944ff7316cd03c42c091717ce74f602
 +0bgr                30d1f7d7081c012556da0373e6d389ee
 +0rgb                66cd838e9c19f750c61efd73f66c42ac
 +abgr                e6cc18ed21293e455d1dc63f9e1645e4
 +argb                b5383d783698a0b3d753d01f2498e490
 +bgr0                f99729e70a94d1c278c292a7acdddae5
 +bgr24               c48ec71c68a9840572a548c2ad141028
 +bgr444be            ab9253d2f836f58ff8f3f2b4ec76abdc
 +bgr444le            b1bd8245a286b615e75e10d34fda4e62
 +bgr48be             b5355b4fa578b9422288507cf7fba2b6
 +bgr48le             11dc232500b6339f58a9981f46d1d7a9
 +bgr4_byte           531fd9a2249a213c89b1afc9788d070e
 +bgr555be            54ba55dc1dcc5a7f27f2727976be6583
 +bgr555le            a45c637fe5ce84b238b1e6f66fc8c852
 +bgr565be            7100c2ddfee42e7efafec1ccefecf7c6
 +bgr565le            9fab295d966386d4ef99d5b43066da47
 +bgr8                275ce12eeb05de67a6915f67cbb43ce5
 +bgra                d29c35871248c476c366e678db580982
 +gray                a53528cdf80ed31c9897042a2ea16618
 +gray16be            9b23f3e79c54a6ccb62e0135a32e3045
 +gray16le            93cfa8fbb2a86ead275ce1817444e6d5
 +monob               c395a8efb9477b4ec53a77326e41ccd7
 +monow               efaee1c763ccd5ce1a8519d2ed5aa5a9
 +nv12                77373304a9c732b65dab0a33afba9295
 +nv21                1e70b3ce8be75f91f465a6d62df550c3
 +pal8                be51ffaaad8e8428f2ce1e10d5729d3d
 +rgb0                84a83e576fc59ffd1ac5549fd7aa0023
 +rgb24               a00171a51cbbdcc61ecbd0198b2e2513
 +rgb444be            09a819863d3fe75518376cdac01c069f
 +rgb444le            4ab35fc85b8550be2a9b96dec9bf7306
 +rgb48be             97a30a902d26b4840235926dae9028dd
 +rgb48le             82b33a864bab70d5463d57eaf693e78c
 +rgb4_byte           afbfab537406988eab7460ec748a0389
 +rgb555be            95e417e9429622245e2d2e0b1c3ab3e4
 +rgb555le            e4b35d8e9c1710f6d051fb4bda8700cc
 +rgb565be            c70d86afbd68a073f2d4fe0eee3a9832
 +rgb565le            991576c5d3308a73068a826543b3e7af
 +rgb8                42230235c5a2a66c0f9a2fcd20f9f5cd
 +rgba                a6973a2940a378d2a8284194da26eec0
 +uyvy422             21c48162379321bb83ec2399535f9253
 +yuv410p             8699f50c04f8ac931aa5a8306827364b
 +yuv411p             47af34559b92b68851df4c2b170f7736
 +yuv420p             c59b35b82b5a195128736021913b35a4
 +yuv420p10be         fc5eed1744cdd033728362772a450e32
 +yuv420p10le         141e6b39adac979765c846f3a5a8293c
 +yuv420p12be         0e0145d3592d56362c1bcc62cbd78a78
 +yuv420p12le         8c3a2b27126df203786d4e05fd79e269
 +yuv420p14be         6a11c75aa378f9628cd8fc3339474e68
 +yuv420p14le         e8b683876508bc0371582e2b8c0eb191
 +yuv420p16be         c467fae3a1936f3f91c19dd1c0c63e49
 +yuv420p16le         87f09595ac106e694c538382179bfcc5
 +yuv420p9be          31bc440f64fdd8d9e7cba897881345ec
 +yuv420p9le          c6fed3016f03c49aa01bdcd63f846d3a
 +yuv422p             5e48541d3e659046ac0e1eacb038485f
 +yuv422p10be         9097b4d06f1fc598375b7c6480a2ba50
 +yuv422p10le         da7bd36f65cac06bd54bc9857493d835
 +yuv422p12be         1203cc6c2294234ddc5435f48b192d7c
 +yuv422p12le         5cc76614210c026c3f1a5398f8654774
 +yuv422p14be         d52e4b435329e806c03860421b94f9fd
 +yuv422p14le         143937ee2e47fa35b71972a2aa74b772
 +yuv422p16be         95ed65e718929dbeb5092bf0d852026d
 +yuv422p16le         c62e554dde4a170177bec2efc3f4f1a2
 +yuv422p9be          b249cd58eaab5ccac6bae3e184774362
 +yuv422p9le          696fc2a55f155edaaa9fc289574b2bb8
 +yuv440p             fca8395b7e43e2d0f38dd6ba822ef747
 +yuv444p             1ef971a434c53e81c578e3c7cb9cbcad
 +yuv444p10be         3114a7469c2b9c440a9a9ccbd6e167d6
 +yuv444p10le         34cb8774a1eb627b5f32825ac7d0ae9a
 +yuv444p12be         d770e81c67d6fe707c239b422021dd29
 +yuv444p12le         9aa076fb7ac058b34ae4e8f09d7895e6
 +yuv444p14be         40a9bef6e22c4c3dfd1d9dbeecd701e3
 +yuv444p14le         123539bdc6946cfb61bd0d82cf8c6f17
 +yuv444p16be         35340098dc6956c34afce17bc6ffcedd
 +yuv444p16le         201e3acfa6f7628dfe2a1663de1128b1
 +yuv444p9be          6143c321929ade9e0bc93ddea926e936
 +yuv444p9le          e43ba2026848ec803fabf74d77c10125
 +yuva420p            dc8fd115eaf203a3eac351b92a7d8f18
++yuva420p10be        8dc20d4b654a82680dcb75391f1c8c28
++yuva420p10le        f43a991e8b5fe7e192cf4e0dfee2b6cb
++yuva420p16be        b5c54895e87521f65a298d33bab5eb08
++yuva420p16le        95e208bc6644e23a2126ac5fca085f06
++yuva420p9be         aa122367fc3fde822f812a4b878893f8
++yuva420p9le         4b57b8bd1534743f6740502c74bef385
 +yuva422p            6091f9c62a121c09eadb02e9173b2da2
++yuva422p10be        93b6afb2b1d1538b1c87caa040c43f4e
++yuva422p10le        1c9359025ab8d257f0f5296e6b5a5787
++yuva422p16be        3fa019b3d5e6dcb7c8e338837b9cffe1
++yuva422p16le        871f244989e14f5d3eda45abb6b3dfd1
++yuva422p9be         923c816778f782ff8a56bcd1b14ef08d
++yuva422p9le         bd882d40af0369d9ef7891c8e7891024
 +yuva444p            9a55e83047abcc7a709f20805070135e
++yuva444p10be        7ae88f488969b527c1348383c0d06ade
++yuva444p10le        79a8dab388eb4d6cd12949b456ef5975
++yuva444p16be        4699a802e8ea3e74e968122980c0b0b0
++yuva444p16le        6f54a8cff38c54a235b92a0f1314e0aa
++yuva444p9be         7472bb4b0c774d5d741035086d5e4330
++yuva444p9le         ae11ddd5a3e8d69a36989f6f2a8897a1
 +yuvj420p            200b0332de9944e76c94d2e0699a5a2d
 +yuvj422p            a19a89ef145305cf224ef5aa247d075a
 +yuvj440p            4240c9348d28af5f3edd0e642002bd2c
 +yuvj444p            9e11298ba9c4faae0f5c81420d2123f2
 +yuyv422             867fff568fa4170503779c48e5f25e6e