Browse code

sws/pixfmt/pixdesc: add support for yuv420p9le/be.

Ronald S. Bultje authored on 2011/10/21 16:38:04
Showing 11 changed files
... ...
@@ -158,6 +158,8 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, int l
158 158
     case PIX_FMT_YUV420P9BE:
159 159
     case PIX_FMT_YUV420P10LE:
160 160
     case PIX_FMT_YUV420P10BE:
161
+    case PIX_FMT_YUV422P9LE:
162
+    case PIX_FMT_YUV422P9BE:
161 163
     case PIX_FMT_YUV422P10LE:
162 164
     case PIX_FMT_YUV422P10BE:
163 165
     case PIX_FMT_YUV444P9LE:
... ...
@@ -809,6 +809,29 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB] = {
809 809
         },
810 810
         .flags = PIX_FMT_BE,
811 811
     },
812
+    [PIX_FMT_YUV422P9LE] = {
813
+        .name = "yuv422p9le",
814
+        .nb_components= 3,
815
+        .log2_chroma_w= 1,
816
+        .log2_chroma_h= 0,
817
+        .comp = {
818
+            {0,1,1,0,8},        /* Y */
819
+            {1,1,1,0,8},        /* U */
820
+            {2,1,1,0,8},        /* V */
821
+        },
822
+    },
823
+    [PIX_FMT_YUV422P9BE] = {
824
+        .name = "yuv422p9be",
825
+        .nb_components= 3,
826
+        .log2_chroma_w= 1,
827
+        .log2_chroma_h= 0,
828
+        .comp = {
829
+            {0,1,1,0,8},        /* Y */
830
+            {1,1,1,0,8},        /* U */
831
+            {2,1,1,0,8},        /* V */
832
+        },
833
+        .flags = PIX_FMT_BE,
834
+    },
812 835
     [PIX_FMT_YUV422P10LE] = {
813 836
         .name = "yuv422p10le",
814 837
         .nb_components= 3,
... ...
@@ -145,6 +145,8 @@ enum PixelFormat {
145 145
     PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
146 146
     PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
147 147
     PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
148
+    PIX_FMT_YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
149
+    PIX_FMT_YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
148 150
     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
149 151
 };
150 152
 
... ...
@@ -170,6 +172,7 @@ enum PixelFormat {
170 170
 #define PIX_FMT_BGR444 PIX_FMT_NE(BGR444BE, BGR444LE)
171 171
 
172 172
 #define PIX_FMT_YUV420P9  PIX_FMT_NE(YUV420P9BE , YUV420P9LE)
173
+#define PIX_FMT_YUV422P9  PIX_FMT_NE(YUV422P9BE , YUV422P9LE)
173 174
 #define PIX_FMT_YUV444P9  PIX_FMT_NE(YUV444P9BE , YUV444P9LE)
174 175
 #define PIX_FMT_YUV420P10 PIX_FMT_NE(YUV420P10BE, YUV420P10LE)
175 176
 #define PIX_FMT_YUV422P10 PIX_FMT_NE(YUV422P10BE, YUV422P10LE)
... ...
@@ -2662,6 +2662,7 @@ static av_cold void sws_init_swScale_c(SwsContext *c)
2662 2662
         case PIX_FMT_RGB4_BYTE: c->chrToYV12 = palToUV_c; break;
2663 2663
 #if HAVE_BIGENDIAN
2664 2664
         case PIX_FMT_YUV444P9LE:
2665
+        case PIX_FMT_YUV422P9LE:
2665 2666
         case PIX_FMT_YUV420P9LE:
2666 2667
         case PIX_FMT_YUV422P10LE:
2667 2668
         case PIX_FMT_YUV444P10LE:
... ...
@@ -2671,6 +2672,7 @@ static av_cold void sws_init_swScale_c(SwsContext *c)
2671 2671
         case PIX_FMT_YUV444P16LE: c->chrToYV12 = bswap16UV_c; break;
2672 2672
 #else
2673 2673
         case PIX_FMT_YUV444P9BE:
2674
+        case PIX_FMT_YUV422P9BE:
2674 2675
         case PIX_FMT_YUV420P9BE:
2675 2676
         case PIX_FMT_YUV444P10BE:
2676 2677
         case PIX_FMT_YUV422P10BE:
... ...
@@ -2729,6 +2731,7 @@ static av_cold void sws_init_swScale_c(SwsContext *c)
2729 2729
     switch (srcFormat) {
2730 2730
 #if HAVE_BIGENDIAN
2731 2731
     case PIX_FMT_YUV444P9LE:
2732
+    case PIX_FMT_YUV422P9LE:
2732 2733
     case PIX_FMT_YUV420P9LE:
2733 2734
     case PIX_FMT_YUV444P10LE:
2734 2735
     case PIX_FMT_YUV422P10LE:
... ...
@@ -2739,6 +2742,7 @@ static av_cold void sws_init_swScale_c(SwsContext *c)
2739 2739
     case PIX_FMT_GRAY16LE: c->lumToYV12 = bswap16Y_c; break;
2740 2740
 #else
2741 2741
     case PIX_FMT_YUV444P9BE:
2742
+    case PIX_FMT_YUV422P9BE:
2742 2743
     case PIX_FMT_YUV420P9BE:
2743 2744
     case PIX_FMT_YUV444P10BE:
2744 2745
     case PIX_FMT_YUV422P10BE:
... ...
@@ -535,6 +535,8 @@ const char *sws_format_name(enum PixelFormat format);
535 535
 #define is9_OR_10BPS(x) (           \
536 536
            (x)==PIX_FMT_YUV420P9LE  \
537 537
         || (x)==PIX_FMT_YUV420P9BE  \
538
+        || (x)==PIX_FMT_YUV422P9LE  \
539
+        || (x)==PIX_FMT_YUV422P9BE  \
538 540
         || (x)==PIX_FMT_YUV444P9BE  \
539 541
         || (x)==PIX_FMT_YUV444P9LE  \
540 542
         || (x)==PIX_FMT_YUV422P10BE \
... ...
@@ -559,6 +561,7 @@ const char *sws_format_name(enum PixelFormat format);
559 559
 #define isPlanarYUV(x)  (           \
560 560
         isPlanar8YUV(x)             \
561 561
         || (x)==PIX_FMT_YUV420P9LE  \
562
+        || (x)==PIX_FMT_YUV422P9LE  \
562 563
         || (x)==PIX_FMT_YUV444P9LE  \
563 564
         || (x)==PIX_FMT_YUV420P10LE \
564 565
         || (x)==PIX_FMT_YUV422P10LE \
... ...
@@ -567,6 +570,7 @@ const char *sws_format_name(enum PixelFormat format);
567 567
         || (x)==PIX_FMT_YUV422P16LE \
568 568
         || (x)==PIX_FMT_YUV444P16LE \
569 569
         || (x)==PIX_FMT_YUV420P9BE  \
570
+        || (x)==PIX_FMT_YUV422P9BE  \
570 571
         || (x)==PIX_FMT_YUV444P9BE  \
571 572
         || (x)==PIX_FMT_YUV420P10BE \
572 573
         || (x)==PIX_FMT_YUV422P10BE \
... ...
@@ -129,6 +129,8 @@ const static FormatEntry format_entries[PIX_FMT_NB] = {
129 129
     [PIX_FMT_YUV420P9LE]  = { 1 , 1 },
130 130
     [PIX_FMT_YUV420P10BE] = { 1 , 1 },
131 131
     [PIX_FMT_YUV420P10LE] = { 1 , 1 },
132
+    [PIX_FMT_YUV422P9BE]  = { 1 , 1 },
133
+    [PIX_FMT_YUV422P9LE]  = { 1 , 1 },
132 134
     [PIX_FMT_YUV422P10BE] = { 1 , 1 },
133 135
     [PIX_FMT_YUV422P10LE] = { 1 , 1 },
134 136
     [PIX_FMT_YUV444P9BE]  = { 1 , 1 },
... ...
@@ -42,6 +42,8 @@ yuv422p10be         bdc13b630fd668b34c6fe1aae28dfc71
42 42
 yuv422p10le         d0607c260a45c973e6639f4e449730ad
43 43
 yuv422p16be         4e9b3b3467aeebb6a528cee5966800ed
44 44
 yuv422p16le         f87c81bf16916b64d201359be0b4b6f4
45
+yuv422p9be          29b71579946940a8c00fa844c9dff507
46
+yuv422p9le          062b7f9cbb972bf36b5bdb1a7623701a
45 47
 yuv440p             5a064afe2b453bb52cdb3f176b1aa1cf
46 48
 yuv444p             0a98447b78fd476aa39686da6a74fa2e
47 49
 yuv444p10be         e65cbae7e4f1892c23defbc8e8052cf6
... ...
@@ -42,6 +42,8 @@ yuv422p10be         bdc13b630fd668b34c6fe1aae28dfc71
42 42
 yuv422p10le         d0607c260a45c973e6639f4e449730ad
43 43
 yuv422p16be         4e9b3b3467aeebb6a528cee5966800ed
44 44
 yuv422p16le         f87c81bf16916b64d201359be0b4b6f4
45
+yuv422p9be          29b71579946940a8c00fa844c9dff507
46
+yuv422p9le          062b7f9cbb972bf36b5bdb1a7623701a
45 47
 yuv440p             5a064afe2b453bb52cdb3f176b1aa1cf
46 48
 yuv444p             0a98447b78fd476aa39686da6a74fa2e
47 49
 yuv444p10be         e65cbae7e4f1892c23defbc8e8052cf6
... ...
@@ -42,6 +42,8 @@ yuv422p10be         bdc13b630fd668b34c6fe1aae28dfc71
42 42
 yuv422p10le         d0607c260a45c973e6639f4e449730ad
43 43
 yuv422p16be         4e9b3b3467aeebb6a528cee5966800ed
44 44
 yuv422p16le         f87c81bf16916b64d201359be0b4b6f4
45
+yuv422p9be          29b71579946940a8c00fa844c9dff507
46
+yuv422p9le          062b7f9cbb972bf36b5bdb1a7623701a
45 47
 yuv440p             5a064afe2b453bb52cdb3f176b1aa1cf
46 48
 yuv444p             0a98447b78fd476aa39686da6a74fa2e
47 49
 yuv444p10be         e65cbae7e4f1892c23defbc8e8052cf6
... ...
@@ -42,6 +42,8 @@ yuv422p10be         cea7ca6b0e66d6f29539885896c88603
42 42
 yuv422p10le         a10c4a5837547716f13cd61918b145f9
43 43
 yuv422p16be         285993ee0c0f4f8e511ee46f93c5f38c
44 44
 yuv422p16le         61bfcee8e54465f760164f5a75d40b5e
45
+yuv422p9be          82494823944912f73cebc58ad2979bbd
46
+yuv422p9le          fc69c8a21f473916a4b4225636b97e06
45 47
 yuv440p             461503fdb9b90451020aa3b25ddf041c
46 48
 yuv444p             81b2eba962d12e8d64f003ac56f6faf2
47 49
 yuv444p10be         e9d3c8e744b8b0d8187ca092fa203fc9
... ...
@@ -42,6 +42,8 @@ yuv422p10be         588fe319b96513c32e21d3e32b45447f
42 42
 yuv422p10le         11b57f2bd9661024153f3973b9090cdb
43 43
 yuv422p16be         c092d083548c2a144c372a98c46875c7
44 44
 yuv422p16le         c071b9397a416d51cbe339345cbcba84
45
+yuv422p9be          7c6f1e140b3999ee7d923854e507752a
46
+yuv422p9le          51f10d79c07989060dd06e767e6d7d60
45 47
 yuv440p             876385e96165acf51271b20e5d85a416
46 48
 yuv444p             9c3c667d1613b72d15bc6d851c5eb8f7
47 49
 yuv444p10be         944a4997c4edb3a8dd0f0493cfd5a1fd