[FFmpeg-devel] [PATCH] sws: support 12&14 bit planar colorspaces

Michael Niedermayer michaelni at gmx.at
Tue Jul 3 19:19:50 CEST 2012


Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
---
 libswscale/input.c                  |   92 +++++++++++++++++++++++++++++++++++
 libswscale/ppc/swscale_altivec.c    |    2 +-
 libswscale/swscale.c                |    6 +--
 libswscale/swscale_internal.h       |    4 +-
 libswscale/utils.c                  |   22 +++++++--
 libswscale/x86/swscale_mmx.c        |   14 +++---
 libswscale/x86/swscale_template.c   |    2 +-
 tests/ref/lavfi/pixfmts_copy        |   12 +++++
 tests/ref/lavfi/pixfmts_null        |   12 +++++
 tests/ref/lavfi/pixfmts_pixdesctest |   12 +++++
 tests/ref/lavfi/pixfmts_scale       |   12 +++++
 tests/ref/lavfi/pixfmts_vflip       |   12 +++++
 12 files changed, 186 insertions(+), 16 deletions(-)

diff --git a/libswscale/input.c b/libswscale/input.c
index c9c91d0..9d03c68 100644
--- a/libswscale/input.c
+++ b/libswscale/input.c
@@ -727,6 +727,26 @@ static void planar_rgb10be_to_y(uint8_t *dst, const uint8_t *src[4], int w)
     planar_rgb16_to_y(dst, src, w, 10, 1);
 }
 
+static void planar_rgb12le_to_y(uint8_t *dst, const uint8_t *src[4], int w)
+{
+    planar_rgb16_to_y(dst, src, w, 12, 0);
+}
+
+static void planar_rgb12be_to_y(uint8_t *dst, const uint8_t *src[4], int w)
+{
+    planar_rgb16_to_y(dst, src, w, 12, 1);
+}
+
+static void planar_rgb14le_to_y(uint8_t *dst, const uint8_t *src[4], int w)
+{
+    planar_rgb16_to_y(dst, src, w, 14, 0);
+}
+
+static void planar_rgb14be_to_y(uint8_t *dst, const uint8_t *src[4], int w)
+{
+    planar_rgb16_to_y(dst, src, w, 14, 1);
+}
+
 static void planar_rgb16le_to_y(uint8_t *dst, const uint8_t *src[4], int w)
 {
     planar_rgb16_to_y(dst, src, w, 16, 0);
@@ -780,6 +800,30 @@ static void planar_rgb10be_to_uv(uint8_t *dstU, uint8_t *dstV,
     planar_rgb16_to_uv(dstU, dstV, src, w, 10, 1);
 }
 
+static void planar_rgb12le_to_uv(uint8_t *dstU, uint8_t *dstV,
+                                 const uint8_t *src[4], int w)
+{
+    planar_rgb16_to_uv(dstU, dstV, src, w, 12, 0);
+}
+
+static void planar_rgb12be_to_uv(uint8_t *dstU, uint8_t *dstV,
+                                 const uint8_t *src[4], int w)
+{
+    planar_rgb16_to_uv(dstU, dstV, src, w, 12, 1);
+}
+
+static void planar_rgb14le_to_uv(uint8_t *dstU, uint8_t *dstV,
+                                 const uint8_t *src[4], int w)
+{
+    planar_rgb16_to_uv(dstU, dstV, src, w, 14, 0);
+}
+
+static void planar_rgb14be_to_uv(uint8_t *dstU, uint8_t *dstV,
+                                 const uint8_t *src[4], int w)
+{
+    planar_rgb16_to_uv(dstU, dstV, src, w, 14, 1);
+}
+
 static void planar_rgb16le_to_uv(uint8_t *dstU, uint8_t *dstV,
                                  const uint8_t *src[4], int w)
 {
@@ -823,6 +867,12 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c)
     case PIX_FMT_GBRP10LE:
         c->readChrPlanar = planar_rgb10le_to_uv;
         break;
+    case PIX_FMT_GBRP12LE:
+        c->readChrPlanar = planar_rgb12le_to_uv;
+        break;
+    case PIX_FMT_GBRP14LE:
+        c->readChrPlanar = planar_rgb14le_to_uv;
+        break;
     case PIX_FMT_GBRP16LE:
         c->readChrPlanar = planar_rgb16le_to_uv;
         break;
@@ -832,6 +882,12 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c)
     case PIX_FMT_GBRP10BE:
         c->readChrPlanar = planar_rgb10be_to_uv;
         break;
+    case PIX_FMT_GBRP12BE:
+        c->readChrPlanar = planar_rgb12be_to_uv;
+        break;
+    case PIX_FMT_GBRP14BE:
+        c->readChrPlanar = planar_rgb14be_to_uv;
+        break;
     case PIX_FMT_GBRP16BE:
         c->readChrPlanar = planar_rgb16be_to_uv;
         break;
@@ -845,6 +901,12 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c)
     case PIX_FMT_YUV422P10LE:
     case PIX_FMT_YUV444P10LE:
     case PIX_FMT_YUV420P10LE:
+    case PIX_FMT_YUV422P12LE:
+    case PIX_FMT_YUV444P12LE:
+    case PIX_FMT_YUV420P12LE:
+    case PIX_FMT_YUV422P14LE:
+    case PIX_FMT_YUV444P14LE:
+    case PIX_FMT_YUV420P14LE:
     case PIX_FMT_YUV420P16LE:
     case PIX_FMT_YUV422P16LE:
     case PIX_FMT_YUV444P16LE:
@@ -857,6 +919,12 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c)
     case PIX_FMT_YUV444P10BE:
     case PIX_FMT_YUV422P10BE:
     case PIX_FMT_YUV420P10BE:
+    case PIX_FMT_YUV444P12BE:
+    case PIX_FMT_YUV422P12BE:
+    case PIX_FMT_YUV420P12BE:
+    case PIX_FMT_YUV444P14BE:
+    case PIX_FMT_YUV422P14BE:
+    case PIX_FMT_YUV420P14BE:
     case PIX_FMT_YUV420P16BE:
     case PIX_FMT_YUV422P16BE:
     case PIX_FMT_YUV444P16BE:
@@ -1028,6 +1096,12 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c)
     case PIX_FMT_GBRP10LE:
         c->readLumPlanar = planar_rgb10le_to_y;
         break;
+    case PIX_FMT_GBRP12LE:
+        c->readLumPlanar = planar_rgb12le_to_y;
+        break;
+    case PIX_FMT_GBRP14LE:
+        c->readLumPlanar = planar_rgb14le_to_y;
+        break;
     case PIX_FMT_GBRP16LE:
         c->readLumPlanar = planar_rgb16le_to_y;
         break;
@@ -1037,6 +1111,12 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c)
     case PIX_FMT_GBRP10BE:
         c->readLumPlanar = planar_rgb10be_to_y;
         break;
+    case PIX_FMT_GBRP12BE:
+        c->readLumPlanar = planar_rgb12be_to_y;
+        break;
+    case PIX_FMT_GBRP14BE:
+        c->readLumPlanar = planar_rgb14be_to_y;
+        break;
     case PIX_FMT_GBRP16BE:
         c->readLumPlanar = planar_rgb16be_to_y;
         break;
@@ -1050,6 +1130,12 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c)
     case PIX_FMT_YUV444P10LE:
     case PIX_FMT_YUV422P10LE:
     case PIX_FMT_YUV420P10LE:
+    case PIX_FMT_YUV444P12LE:
+    case PIX_FMT_YUV422P12LE:
+    case PIX_FMT_YUV420P12LE:
+    case PIX_FMT_YUV444P14LE:
+    case PIX_FMT_YUV422P14LE:
+    case PIX_FMT_YUV420P14LE:
     case PIX_FMT_YUV420P16LE:
     case PIX_FMT_YUV422P16LE:
     case PIX_FMT_YUV444P16LE:
@@ -1063,6 +1149,12 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c)
     case PIX_FMT_YUV444P10BE:
     case PIX_FMT_YUV422P10BE:
     case PIX_FMT_YUV420P10BE:
+    case PIX_FMT_YUV444P12BE:
+    case PIX_FMT_YUV422P12BE:
+    case PIX_FMT_YUV420P12BE:
+    case PIX_FMT_YUV444P14BE:
+    case PIX_FMT_YUV422P14BE:
+    case PIX_FMT_YUV420P14BE:
     case PIX_FMT_YUV420P16BE:
     case PIX_FMT_YUV422P16BE:
     case PIX_FMT_YUV444P16BE:
diff --git a/libswscale/ppc/swscale_altivec.c b/libswscale/ppc/swscale_altivec.c
index df8afb0..694c8d8 100644
--- a/libswscale/ppc/swscale_altivec.c
+++ b/libswscale/ppc/swscale_altivec.c
@@ -317,7 +317,7 @@ void ff_sws_init_swScale_altivec(SwsContext *c)
     if (!(av_get_cpu_flags() & AV_CPU_FLAG_ALTIVEC))
         return;
 
-    if (c->srcBpc == 8 && c->dstBpc <= 10) {
+    if (c->srcBpc == 8 && c->dstBpc <= 14) {
         c->hyScale = c->hcScale = hScale_altivec_real;
     }
     if (!is16BPS(dstFormat) && !is9_OR_10BPS(dstFormat) &&
diff --git a/libswscale/swscale.c b/libswscale/swscale.c
index 5dd4124..1f80785 100644
--- a/libswscale/swscale.c
+++ b/libswscale/swscale.c
@@ -691,7 +691,7 @@ static av_cold void sws_init_swScale_c(SwsContext *c)
 
 
     if (c->srcBpc == 8) {
-        if (c->dstBpc <= 10) {
+        if (c->dstBpc <= 14) {
             c->hyScale = c->hcScale = hScale8To15_c;
             if (c->flags & SWS_FAST_BILINEAR) {
                 c->hyscale_fast = hyscale_fast_c;
@@ -701,12 +701,12 @@ static av_cold void sws_init_swScale_c(SwsContext *c)
             c->hyScale = c->hcScale = hScale8To19_c;
         }
     } else {
-        c->hyScale = c->hcScale = c->dstBpc > 10 ? hScale16To19_c
+        c->hyScale = c->hcScale = c->dstBpc > 14 ? hScale16To19_c
                                                  : hScale16To15_c;
     }
 
     if (c->srcRange != c->dstRange && !isAnyRGB(c->dstFormat)) {
-        if (c->dstBpc <= 10) {
+        if (c->dstBpc <= 14) {
             if (c->srcRange) {
                 c->lumConvertRange = lumRangeFromJpeg_c;
                 c->chrConvertRange = chrRangeFromJpeg_c;
diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h
index ae53b88..5a584f0 100644
--- a/libswscale/swscale_internal.h
+++ b/libswscale/swscale_internal.h
@@ -558,8 +558,8 @@ const char *sws_format_name(enum PixelFormat format);
     (av_pix_fmt_descriptors[x].comp[0].depth_minus1 == 15)
 
 #define is9_OR_10BPS(x) \
-    (av_pix_fmt_descriptors[x].comp[0].depth_minus1 == 8 || \
-     av_pix_fmt_descriptors[x].comp[0].depth_minus1 == 9)
+    (av_pix_fmt_descriptors[x].comp[0].depth_minus1 >= 8 && \
+     av_pix_fmt_descriptors[x].comp[0].depth_minus1 <= 13)
 
 #define isNBPS(x) is9_OR_10BPS(x)
 
diff --git a/libswscale/utils.c b/libswscale/utils.c
index 9508413..4047fb5 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
@@ -145,19 +145,35 @@ static const FormatEntry format_entries[PIX_FMT_NB] = {
     [PIX_FMT_YUV420P9LE]  = { 1, 1 },
     [PIX_FMT_YUV420P10BE] = { 1, 1 },
     [PIX_FMT_YUV420P10LE] = { 1, 1 },
+    [PIX_FMT_YUV420P12BE] = { 1, 1 },
+    [PIX_FMT_YUV420P12LE] = { 1, 1 },
+    [PIX_FMT_YUV420P14BE] = { 1, 1 },
+    [PIX_FMT_YUV420P14LE] = { 1, 1 },
     [PIX_FMT_YUV422P9BE]  = { 1, 1 },
     [PIX_FMT_YUV422P9LE]  = { 1, 1 },
     [PIX_FMT_YUV422P10BE] = { 1, 1 },
     [PIX_FMT_YUV422P10LE] = { 1, 1 },
+    [PIX_FMT_YUV422P12BE] = { 1, 1 },
+    [PIX_FMT_YUV422P12LE] = { 1, 1 },
+    [PIX_FMT_YUV422P14BE] = { 1, 1 },
+    [PIX_FMT_YUV422P14LE] = { 1, 1 },
     [PIX_FMT_YUV444P9BE]  = { 1, 1 },
     [PIX_FMT_YUV444P9LE]  = { 1, 1 },
     [PIX_FMT_YUV444P10BE] = { 1, 1 },
     [PIX_FMT_YUV444P10LE] = { 1, 1 },
+    [PIX_FMT_YUV444P12BE] = { 1, 1 },
+    [PIX_FMT_YUV444P12LE] = { 1, 1 },
+    [PIX_FMT_YUV444P14BE] = { 1, 1 },
+    [PIX_FMT_YUV444P14LE] = { 1, 1 },
     [PIX_FMT_GBRP]        = { 1, 0 },
     [PIX_FMT_GBRP9LE]     = { 1, 0 },
     [PIX_FMT_GBRP9BE]     = { 1, 0 },
     [PIX_FMT_GBRP10LE]    = { 1, 0 },
     [PIX_FMT_GBRP10BE]    = { 1, 0 },
+    [PIX_FMT_GBRP12LE]    = { 1, 0 },
+    [PIX_FMT_GBRP12BE]    = { 1, 0 },
+    [PIX_FMT_GBRP14LE]    = { 1, 0 },
+    [PIX_FMT_GBRP14BE]    = { 1, 0 },
     [PIX_FMT_GBRP16LE]    = { 1, 0 },
     [PIX_FMT_GBRP16BE]    = { 1, 0 },
 };
@@ -1006,7 +1022,7 @@ int sws_init_context(SwsContext *c, SwsFilter *srcFilter, SwsFilter *dstFilter)
         dst_stride <<= 1;
     FF_ALLOC_OR_GOTO(c, c->formatConvBuffer, FFALIGN(srcW*2+78, 16) * 2, fail);
     if (HAVE_MMX2 && cpu_flags & AV_CPU_FLAG_MMX2 &&
-        c->srcBpc == 8 && c->dstBpc <= 10) {
+        c->srcBpc == 8 && c->dstBpc <= 14) {
         c->canMMX2BeUsed = (dstW >= srcW && (dstW & 31) == 0 &&
                             (srcW & 15) == 0) ? 1 : 0;
         if (!c->canMMX2BeUsed && dstW >= srcW && (srcW & 15) == 0
@@ -1036,7 +1052,7 @@ int sws_init_context(SwsContext *c, SwsFilter *srcFilter, SwsFilter *dstFilter)
             c->chrXInc += 20;
         }
         // we don't use the x86 asm scaler if MMX is available
-        else if (HAVE_MMX && cpu_flags & AV_CPU_FLAG_MMX && c->dstBpc <= 10) {
+        else if (HAVE_MMX && cpu_flags & AV_CPU_FLAG_MMX && c->dstBpc <= 14) {
             c->lumXInc = ((int64_t)(srcW       - 2) << 16) / (dstW       - 2) - 20;
             c->chrXInc = ((int64_t)(c->chrSrcW - 2) << 16) / (c->chrDstW - 2) - 20;
         }
@@ -1207,7 +1223,7 @@ int sws_init_context(SwsContext *c, SwsFilter *srcFilter, SwsFilter *dstFilter)
     // try to avoid drawing green stuff between the right end and the stride end
     for (i = 0; i < c->vChrBufSize; i++)
         if(av_pix_fmt_descriptors[c->dstFormat].comp[0].depth_minus1 == 15){
-            av_assert0(c->dstBpc > 10);
+            av_assert0(c->dstBpc > 14);
             for(j=0; j<dst_stride/2+1; j++)
                 ((int32_t*)(c->chrUPixBuf[i]))[j] = 1<<18;
         } else
diff --git a/libswscale/x86/swscale_mmx.c b/libswscale/x86/swscale_mmx.c
index 0c8732c..e768dd6 100644
--- a/libswscale/x86/swscale_mmx.c
+++ b/libswscale/x86/swscale_mmx.c
@@ -22,6 +22,7 @@
 #include "config.h"
 #include "libswscale/swscale.h"
 #include "libswscale/swscale_internal.h"
+#include "libavutil/avassert.h"
 #include "libavutil/intreadwrite.h"
 #include "libavutil/x86_cpu.h"
 #include "libavutil/cpu.h"
@@ -378,19 +379,19 @@ void ff_sws_init_swScale_mmx(SwsContext *c)
 #if HAVE_YASM
 #define ASSIGN_SCALE_FUNC2(hscalefn, filtersize, opt1, opt2) do { \
     if (c->srcBpc == 8) { \
-        hscalefn = c->dstBpc <= 10 ? ff_hscale8to15_ ## filtersize ## _ ## opt2 : \
+        hscalefn = c->dstBpc <= 14 ? ff_hscale8to15_ ## filtersize ## _ ## opt2 : \
                                      ff_hscale8to19_ ## filtersize ## _ ## opt1; \
     } else if (c->srcBpc == 9) { \
-        hscalefn = c->dstBpc <= 10 ? ff_hscale9to15_ ## filtersize ## _ ## opt2 : \
+        hscalefn = c->dstBpc <= 14 ? ff_hscale9to15_ ## filtersize ## _ ## opt2 : \
                                      ff_hscale9to19_ ## filtersize ## _ ## opt1; \
     } else if (c->srcBpc == 10) { \
-        hscalefn = c->dstBpc <= 10 ? ff_hscale10to15_ ## filtersize ## _ ## opt2 : \
+        hscalefn = c->dstBpc <= 14 ? ff_hscale10to15_ ## filtersize ## _ ## opt2 : \
                                      ff_hscale10to19_ ## filtersize ## _ ## opt1; \
     } else if (c->srcBpc == 14 || ((c->srcFormat==PIX_FMT_PAL8||isAnyRGB(c->srcFormat)) && av_pix_fmt_descriptors[c->srcFormat].comp[0].depth_minus1<15)) { \
-        hscalefn = c->dstBpc <= 10 ? ff_hscale14to15_ ## filtersize ## _ ## opt2 : \
+        hscalefn = c->dstBpc <= 14 ? ff_hscale14to15_ ## filtersize ## _ ## opt2 : \
                                      ff_hscale14to19_ ## filtersize ## _ ## opt1; \
     } else { /* c->srcBpc == 16 */ \
-        hscalefn = c->dstBpc <= 10 ? ff_hscale16to15_ ## filtersize ## _ ## opt2 : \
+        hscalefn = c->dstBpc <= 14 ? ff_hscale16to15_ ## filtersize ## _ ## opt2 : \
                                      ff_hscale16to19_ ## filtersize ## _ ## opt1; \
     } \
 } while (0)
@@ -412,7 +413,8 @@ switch(c->dstBpc){ \
     case 16: if (!isBE(c->dstFormat))            vscalefn = ff_yuv2plane1_16_ ## opt1; break; \
     case 10: if (!isBE(c->dstFormat) && opt2chk) vscalefn = ff_yuv2plane1_10_ ## opt2; break; \
     case 9:  if (!isBE(c->dstFormat) && opt2chk) vscalefn = ff_yuv2plane1_9_  ## opt2;  break; \
-    default:                                     vscalefn = ff_yuv2plane1_8_  ## opt1;  break; \
+    case 8:                                      vscalefn = ff_yuv2plane1_8_  ## opt1;  break; \
+    default: av_assert0(c->dstBpc>8); \
     }
 #define case_rgb(x, X, opt) \
         case PIX_FMT_ ## X: \
diff --git a/libswscale/x86/swscale_template.c b/libswscale/x86/swscale_template.c
index cf8e802..245bfde 100644
--- a/libswscale/x86/swscale_template.c
+++ b/libswscale/x86/swscale_template.c
@@ -1689,7 +1689,7 @@ static av_cold void RENAME(sws_init_swScale)(SwsContext *c)
         }
     }
 
-    if (c->srcBpc == 8 && c->dstBpc <= 10) {
+    if (c->srcBpc == 8 && c->dstBpc <= 14) {
     // Use the new MMX scaler if the MMX2 one can't be used (it is faster than the x86 ASM one).
 #if COMPILE_TEMPLATE_MMX2
     if (c->flags & SWS_FAST_BILINEAR && c->canMMX2BeUsed)
diff --git a/tests/ref/lavfi/pixfmts_copy b/tests/ref/lavfi/pixfmts_copy
index 26f5151..2df6c30 100644
--- a/tests/ref/lavfi/pixfmts_copy
+++ b/tests/ref/lavfi/pixfmts_copy
@@ -42,6 +42,10 @@ yuv411p             8b298af3e43348ca1b11eb8a3252ac6c
 yuv420p             eba2f135a08829387e2f698ff72a2939
 yuv420p10be         2f88c301feeaccd2a5fb55f54fc30be9
 yuv420p10le         93f175084af4e78f97c7710e505f3057
+yuv420p12be         4a5001c006b8ee177d10fe9fdb59b98a
+yuv420p12le         d8aa40e7907413d396f9b4ce55ae3a84
+yuv420p14be         cb3f0486a1eaa92bd2bf69c43eabf0b3
+yuv420p14le         f15e2673af0eb0d896caf9448b4422c4
 yuv420p16be         ba858ff4246368c28f03152487f57ef3
 yuv420p16le         de239729a4fe1d4cfa3743e006654e78
 yuv420p9be          64e36fd90573f67ac2006d103972a79b
@@ -49,6 +53,10 @@ yuv420p9le          9ed4b1dfabc53fd9e586ff6c4c43af80
 yuv422p             c9bba4529821d796a6ab09f6a5fd355a
 yuv422p10be         11af7dfafe8bc025c7e3bd82b830fe8a
 yuv422p10le         ec04efb76efa79bf0d02b21572371a56
+yuv422p12be         bdc13b630fd668b34c6fe1aae28dfc71
+yuv422p12le         d0607c260a45c973e6639f4e449730ad
+yuv422p14be         bdc13b630fd668b34c6fe1aae28dfc71
+yuv422p14le         d0607c260a45c973e6639f4e449730ad
 yuv422p16be         5499502e1c29534a158a1fe60e889f60
 yuv422p16le         e3d61fde6978591596bc36b914386623
 yuv422p9be          29b71579946940a8c00fa844c9dff507
@@ -57,6 +65,10 @@ yuv440p             5a064afe2b453bb52cdb3f176b1aa1cf
 yuv444p             0a98447b78fd476aa39686da6a74fa2e
 yuv444p10be         71be185a2fb7a353eb024df9bc63212d
 yuv444p10le         c1c6b30a12065c7901c0a267e4861a0f
+yuv444p12be         e65cbae7e4f1892c23defbc8e8052cf6
+yuv444p12le         767179dd82846cf00ee4c340c9c1ab74
+yuv444p14be         e65cbae7e4f1892c23defbc8e8052cf6
+yuv444p14le         767179dd82846cf00ee4c340c9c1ab74
 yuv444p16be         1c6ea2c2f5e539006112ceec3d4e7d90
 yuv444p16le         20f86bc2f68d2b3f1f2b48b97b2189f4
 yuv444p9be          6ab31f4c12b533ce318ecdff83cdd054
diff --git a/tests/ref/lavfi/pixfmts_null b/tests/ref/lavfi/pixfmts_null
index 26f5151..2df6c30 100644
--- a/tests/ref/lavfi/pixfmts_null
+++ b/tests/ref/lavfi/pixfmts_null
@@ -42,6 +42,10 @@ yuv411p             8b298af3e43348ca1b11eb8a3252ac6c
 yuv420p             eba2f135a08829387e2f698ff72a2939
 yuv420p10be         2f88c301feeaccd2a5fb55f54fc30be9
 yuv420p10le         93f175084af4e78f97c7710e505f3057
+yuv420p12be         4a5001c006b8ee177d10fe9fdb59b98a
+yuv420p12le         d8aa40e7907413d396f9b4ce55ae3a84
+yuv420p14be         cb3f0486a1eaa92bd2bf69c43eabf0b3
+yuv420p14le         f15e2673af0eb0d896caf9448b4422c4
 yuv420p16be         ba858ff4246368c28f03152487f57ef3
 yuv420p16le         de239729a4fe1d4cfa3743e006654e78
 yuv420p9be          64e36fd90573f67ac2006d103972a79b
@@ -49,6 +53,10 @@ yuv420p9le          9ed4b1dfabc53fd9e586ff6c4c43af80
 yuv422p             c9bba4529821d796a6ab09f6a5fd355a
 yuv422p10be         11af7dfafe8bc025c7e3bd82b830fe8a
 yuv422p10le         ec04efb76efa79bf0d02b21572371a56
+yuv422p12be         bdc13b630fd668b34c6fe1aae28dfc71
+yuv422p12le         d0607c260a45c973e6639f4e449730ad
+yuv422p14be         bdc13b630fd668b34c6fe1aae28dfc71
+yuv422p14le         d0607c260a45c973e6639f4e449730ad
 yuv422p16be         5499502e1c29534a158a1fe60e889f60
 yuv422p16le         e3d61fde6978591596bc36b914386623
 yuv422p9be          29b71579946940a8c00fa844c9dff507
@@ -57,6 +65,10 @@ yuv440p             5a064afe2b453bb52cdb3f176b1aa1cf
 yuv444p             0a98447b78fd476aa39686da6a74fa2e
 yuv444p10be         71be185a2fb7a353eb024df9bc63212d
 yuv444p10le         c1c6b30a12065c7901c0a267e4861a0f
+yuv444p12be         e65cbae7e4f1892c23defbc8e8052cf6
+yuv444p12le         767179dd82846cf00ee4c340c9c1ab74
+yuv444p14be         e65cbae7e4f1892c23defbc8e8052cf6
+yuv444p14le         767179dd82846cf00ee4c340c9c1ab74
 yuv444p16be         1c6ea2c2f5e539006112ceec3d4e7d90
 yuv444p16le         20f86bc2f68d2b3f1f2b48b97b2189f4
 yuv444p9be          6ab31f4c12b533ce318ecdff83cdd054
diff --git a/tests/ref/lavfi/pixfmts_pixdesctest b/tests/ref/lavfi/pixfmts_pixdesctest
index b033d69..d11c290 100644
--- a/tests/ref/lavfi/pixfmts_pixdesctest
+++ b/tests/ref/lavfi/pixfmts_pixdesctest
@@ -42,6 +42,10 @@ yuv411p             8b298af3e43348ca1b11eb8a3252ac6c
 yuv420p             eba2f135a08829387e2f698ff72a2939
 yuv420p10be         2f88c301feeaccd2a5fb55f54fc30be9
 yuv420p10le         93f175084af4e78f97c7710e505f3057
+yuv420p12be         4a5001c006b8ee177d10fe9fdb59b98a
+yuv420p12le         d8aa40e7907413d396f9b4ce55ae3a84
+yuv420p14be         cb3f0486a1eaa92bd2bf69c43eabf0b3
+yuv420p14le         f15e2673af0eb0d896caf9448b4422c4
 yuv420p16be         ba858ff4246368c28f03152487f57ef3
 yuv420p16le         de239729a4fe1d4cfa3743e006654e78
 yuv420p9be          64e36fd90573f67ac2006d103972a79b
@@ -49,6 +53,10 @@ yuv420p9le          9ed4b1dfabc53fd9e586ff6c4c43af80
 yuv422p             c9bba4529821d796a6ab09f6a5fd355a
 yuv422p10be         11af7dfafe8bc025c7e3bd82b830fe8a
 yuv422p10le         ec04efb76efa79bf0d02b21572371a56
+yuv422p12be         bdc13b630fd668b34c6fe1aae28dfc71
+yuv422p12le         d0607c260a45c973e6639f4e449730ad
+yuv422p14be         bdc13b630fd668b34c6fe1aae28dfc71
+yuv422p14le         d0607c260a45c973e6639f4e449730ad
 yuv422p16be         5499502e1c29534a158a1fe60e889f60
 yuv422p16le         e3d61fde6978591596bc36b914386623
 yuv422p9be          29b71579946940a8c00fa844c9dff507
@@ -57,6 +65,10 @@ yuv440p             5a064afe2b453bb52cdb3f176b1aa1cf
 yuv444p             0a98447b78fd476aa39686da6a74fa2e
 yuv444p10be         71be185a2fb7a353eb024df9bc63212d
 yuv444p10le         c1c6b30a12065c7901c0a267e4861a0f
+yuv444p12be         e65cbae7e4f1892c23defbc8e8052cf6
+yuv444p12le         767179dd82846cf00ee4c340c9c1ab74
+yuv444p14be         e65cbae7e4f1892c23defbc8e8052cf6
+yuv444p14le         767179dd82846cf00ee4c340c9c1ab74
 yuv444p16be         1c6ea2c2f5e539006112ceec3d4e7d90
 yuv444p16le         20f86bc2f68d2b3f1f2b48b97b2189f4
 yuv444p9be          6ab31f4c12b533ce318ecdff83cdd054
diff --git a/tests/ref/lavfi/pixfmts_scale b/tests/ref/lavfi/pixfmts_scale
index 60a977e..635f32f 100644
--- a/tests/ref/lavfi/pixfmts_scale
+++ b/tests/ref/lavfi/pixfmts_scale
@@ -42,6 +42,10 @@ yuv411p             1143e7c5cc28fe0922b051b17733bc4c
 yuv420p             fdad2d8df8985e3d17e73c71f713cb14
 yuv420p10be         418039dbd82cf612db88417276aa0d1a
 yuv420p10le         ff7e5321208ab995b4f95634ebdf192b
+yuv420p12be         e50f22a1af717c8e986b760e082f67b9
+yuv420p12le         b94dae7fcf3f97cb591d727564168602
+yuv420p14be         6d335e75b553da590135cf8bb999610c
+yuv420p14le         d510ddbabefd03ef39ec943fcb51b709
 yuv420p16be         31988e9a5d6acacaa710f67bc1172f3a
 yuv420p16le         f5390ce399f88e0e4e2621ed7833b250
 yuv420p9be          ec4983b7a949c0472110a7a2c58e278a
@@ -49,6 +53,10 @@ yuv420p9le          c136dce5913a722eee44ab72cff664b2
 yuv422p             918e37701ee7377d16a8a6c119c56a40
 yuv422p10be         315654908d50718e175aae018c484732
 yuv422p10le         91bbc78a9a56f659b55abc17722dcc09
+yuv422p12be         0e15336f06c20eb0224dbbb3c45e579e
+yuv422p12le         223b9235c541365d994160e7ff5bedf7
+yuv422p14be         091c5e50b7aff789f8f49d02aeb98cdb
+yuv422p14le         a42363449e2acbe784a57f15b389ded8
 yuv422p16be         e7e34fe9264784763ab6cb406524c0f3
 yuv422p16le         c435b76b08204dda6908640fb5fd4621
 yuv422p9be          82494823944912f73cebc58ad2979bbd
@@ -57,6 +65,10 @@ yuv440p             461503fdb9b90451020aa3b25ddf041c
 yuv444p             81b2eba962d12e8d64f003ac56f6faf2
 yuv444p10be         fb304d77c6d2e18df5938662a22176f0
 yuv444p10le         b17136913eb066dca6be6af645b9f7e8
+yuv444p12be         eb0102b8ccbf3c0f1e493ebe8990345f
+yuv444p12le         059ee3758b0f184decc84ee16a574d1a
+yuv444p14be         00656b655ebc6d7d8787c966365d75c2
+yuv444p14le         3d7d0b41989fb416cb200533bad9435d
 yuv444p16be         0da9bed80f5542682ab286f3261cf24c
 yuv444p16le         a0c5d3c7bf3f181db503cf8e450d1335
 yuv444p9be          9ac2643ce7f7e5c4e17c8c9fd8494d4a
diff --git a/tests/ref/lavfi/pixfmts_vflip b/tests/ref/lavfi/pixfmts_vflip
index 2b4f85b..29dddd3 100644
--- a/tests/ref/lavfi/pixfmts_vflip
+++ b/tests/ref/lavfi/pixfmts_vflip
@@ -42,6 +42,10 @@ yuv411p             4a90048cc3a65fac150e53289700efe1
 yuv420p             2e6d6062e8cad37fb3ab2c433b55f382
 yuv420p10be         7ce787a888381dd46b0212c099ecaad9
 yuv420p10le         bf22a1c543a7b3dbc556a0eb9592e179
+yuv420p12be         dca4f9402d34c83a524ab319126e9948
+yuv420p12le         1800b5a8edc5997b79c12a645058da87
+yuv420p14be         0199fb46ed3e20d09aa226d444b875f9
+yuv420p14le         1f9a0543e0c1efa5e42ccb9f21a96f9e
 yuv420p16be         b6d25ba55bc1831d352f379311b42b6d
 yuv420p16le         1d7ef427b6f79a02b93948738dab5442
 yuv420p9be          9865bf5c4392b56b1c4eb4f5a3fd32f9
@@ -49,6 +53,10 @@ yuv420p9le          0f1e371a1374d3cba2205b70cc7cac90
 yuv422p             d7f5cb44d9b0210d66d6a8762640ab34
 yuv422p10be         0be8378c3773e1c0b394315ef4994351
 yuv422p10le         6518094fe8de6bee95af21af1e5dc1e1
+yuv422p12be         588fe319b96513c32e21d3e32b45447f
+yuv422p12le         11b57f2bd9661024153f3973b9090cdb
+yuv422p14be         588fe319b96513c32e21d3e32b45447f
+yuv422p14le         11b57f2bd9661024153f3973b9090cdb
 yuv422p16be         9bd8f8c961822b586fa4cf992be54acc
 yuv422p16le         9c4a1239605c7952b736ac3130163f14
 yuv422p9be          7c6f1e140b3999ee7d923854e507752a
@@ -57,6 +65,10 @@ yuv440p             876385e96165acf51271b20e5d85a416
 yuv444p             9c3c667d1613b72d15bc6d851c5eb8f7
 yuv444p10be         ee069cc6db48975eb029d72f889a7fe6
 yuv444p10le         645b3335248113cafe3c29edb1d7f3be
+yuv444p12be         944a4997c4edb3a8dd0f0493cfd5a1fd
+yuv444p12le         2d0947ae89ecc6a501eee6832cb27e06
+yuv444p14be         944a4997c4edb3a8dd0f0493cfd5a1fd
+yuv444p14le         2d0947ae89ecc6a501eee6832cb27e06
 yuv444p16be         de2dedfc6f12073ffead113f86e07ecf
 yuv444p16le         8e83323cf102d6c823a03ae8a7b7e033
 yuv444p9be          6ac92b7dc9ab2fc59bee99204886899a
-- 
1.7.9.5



More information about the ffmpeg-devel mailing list