History

libavutil/swscale: YUV444P10/YUV444P9 support.

Also add missing glue code for recently added YUV422P10 formats to swscale.

Ronald S. Bultje committed 15 years ago

Commit 103278f1 parent c1498435 files · +83 −1Browse files

Unified · Split

5 files
  1. libavutil/pixdesc.c +46 −0
  2. libavutil/pixfmt.h +6 −0
  3. libswscale/swscale.c +13 −1
  4. libswscale/swscale_internal.h +12 −0
  5. libswscale/utils.c +6 −0
libavutil/pixdesc.c+46−0
@@ -878,6 +878,52 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB] = { · 877 unmodified lines
878878 },
879879 .flags = PIX_FMT_BE,
880880 },
881+ [PIX_FMT_YUV444P10LE] = {
882+ .name = "yuv444p10le",
883+ .nb_components= 3,
884+ .log2_chroma_w= 0,
885+ .log2_chroma_h= 0,
886+ .comp = {
887+ {0,1,1,0,9}, /* Y */
888+ {1,1,1,0,9}, /* U */
889+ {2,1,1,0,9}, /* V */
890+ },
891+ },
892+ [PIX_FMT_YUV444P10BE] = {
893+ .name = "yuv444p10be",
894+ .nb_components= 3,
895+ .log2_chroma_w= 0,
896+ .log2_chroma_h= 0,
897+ .comp = {
898+ {0,1,1,0,9}, /* Y */
899+ {1,1,1,0,9}, /* U */
900+ {2,1,1,0,9}, /* V */
901+ },
902+ .flags = PIX_FMT_BE,
903+ },
904+ [PIX_FMT_YUV444P9LE] = {
905+ .name = "yuv444p9le",
906+ .nb_components= 3,
907+ .log2_chroma_w= 0,
908+ .log2_chroma_h= 0,
909+ .comp = {
910+ {0,1,1,0,8}, /* Y */
911+ {1,1,1,0,8}, /* U */
912+ {2,1,1,0,8}, /* V */
913+ },
914+ },
915+ [PIX_FMT_YUV444P9BE] = {
916+ .name = "yuv444p9be",
917+ .nb_components= 3,
918+ .log2_chroma_w= 0,
919+ .log2_chroma_h= 0,
920+ .comp = {
921+ {0,1,1,0,9}, /* Y */
922+ {1,1,1,0,9}, /* U */
923+ {2,1,1,0,9}, /* V */
924+ },
925+ .flags = PIX_FMT_BE,
926+ },
881927 [PIX_FMT_DXVA2_VLD] = {
882928 .name = "dxva2_vld",
883929 .log2_chroma_w = 1,
libavutil/pixfmt.h+6−0
@@ -141,6 +141,10 @@ enum PixelFormat { · 140 unmodified lines
141141 PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
142142 PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
143143 PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
144+ PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
145+ PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
146+ PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
147+ PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
144148 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
145149 };
146150
@@ -166,8 +170,10 @@ enum PixelFormat { · 19 unmodified lines
166170 #define PIX_FMT_BGR444 PIX_FMT_NE(BGR444BE, BGR444LE)
167171
168172 #define PIX_FMT_YUV420P9 PIX_FMT_NE(YUV420P9BE , YUV420P9LE)
173+#define PIX_FMT_YUV444P9 PIX_FMT_NE(YUV444P9BE , YUV444P9LE)
169174 #define PIX_FMT_YUV420P10 PIX_FMT_NE(YUV420P10BE, YUV420P10LE)
170175 #define PIX_FMT_YUV422P10 PIX_FMT_NE(YUV422P10BE, YUV422P10LE)
176+#define PIX_FMT_YUV444P10 PIX_FMT_NE(YUV444P10BE, YUV444P10LE)
171177 #define PIX_FMT_YUV420P16 PIX_FMT_NE(YUV420P16BE, YUV420P16LE)
172178 #define PIX_FMT_YUV422P16 PIX_FMT_NE(YUV422P16BE, YUV422P16LE)
173179 #define PIX_FMT_YUV444P16 PIX_FMT_NE(YUV444P16BE, YUV444P16LE)
libswscale/swscale.c+13−1
@@ -1821,7 +1821,7 @@ find_c_packed_planar_out_funcs(SwsContext *c, · 1820 unmodified lines
18211821 } else if (is16BPS(dstFormat)) {
18221822 *yuv2yuvX = isBE(dstFormat) ? yuv2yuvX16BE_c : yuv2yuvX16LE_c;
18231823 } else if (is9_OR_10BPS(dstFormat)) {
1824− if (dstFormat == PIX_FMT_YUV420P9BE || dstFormat == PIX_FMT_YUV420P9LE) {
1824+ if (av_pix_fmt_descriptors[dstFormat].comp[0].depth_minus1 == 8) {
18251825 *yuv2yuvX = isBE(dstFormat) ? yuv2yuvX9BE_c : yuv2yuvX9LE_c;
18261826 } else {
18271827 *yuv2yuvX = isBE(dstFormat) ? yuv2yuvX10BE_c : yuv2yuvX10LE_c;
@@ -2161,9 +2161,15 @@ static av_cold void sws_init_swScale_c(SwsContext *c) · 333 unmodified lines
21612161 case PIX_FMT_PAL8 :
21622162 case PIX_FMT_BGR4_BYTE:
21632163 case PIX_FMT_RGB4_BYTE: c->chrToYV12 = palToUV_c; break;
2164+ case PIX_FMT_YUV444P9BE:
21642165 case PIX_FMT_YUV420P9BE: c->chrToYV12 = BE9ToUV_c; break;
2166+ case PIX_FMT_YUV444P9LE:
21652167 case PIX_FMT_YUV420P9LE: c->chrToYV12 = LE9ToUV_c; break;
2168+ case PIX_FMT_YUV444P10BE:
2169+ case PIX_FMT_YUV422P10BE:
21662170 case PIX_FMT_YUV420P10BE: c->chrToYV12 = BE10ToUV_c; break;
2171+ case PIX_FMT_YUV422P10LE:
2172+ case PIX_FMT_YUV444P10LE:
21672173 case PIX_FMT_YUV420P10LE: c->chrToYV12 = LE10ToUV_c; break;
21682174 case PIX_FMT_YUV420P16BE:
21692175 case PIX_FMT_YUV422P16BE:
@@ -2219,9 +2225,15 @@ static av_cold void sws_init_swScale_c(SwsContext *c) · 49 unmodified lines
22192225 c->lumToYV12 = NULL;
22202226 c->alpToYV12 = NULL;
22212227 switch (srcFormat) {
2228+ case PIX_FMT_YUV444P9BE:
22222229 case PIX_FMT_YUV420P9BE: c->lumToYV12 = BE9ToY_c; break;
2230+ case PIX_FMT_YUV444P9LE:
22232231 case PIX_FMT_YUV420P9LE: c->lumToYV12 = LE9ToY_c; break;
2232+ case PIX_FMT_YUV444P10BE:
2233+ case PIX_FMT_YUV422P10BE:
22242234 case PIX_FMT_YUV420P10BE: c->lumToYV12 = BE10ToY_c; break;
2235+ case PIX_FMT_YUV444P10LE:
2236+ case PIX_FMT_YUV422P10LE:
22252237 case PIX_FMT_YUV420P10LE: c->lumToYV12 = LE10ToY_c; break;
22262238 case PIX_FMT_YUYV422 :
22272239 case PIX_FMT_YUV420P16BE:
libswscale/swscale_internal.h+12−0
@@ -355,6 +355,12 @@ const char *sws_format_name(enum PixelFormat format); · 354 unmodified lines
355355 #define is9_OR_10BPS(x) ( \
356356 (x)==PIX_FMT_YUV420P9LE \
357357 || (x)==PIX_FMT_YUV420P9BE \
358+ || (x)==PIX_FMT_YUV444P9BE \
359+ || (x)==PIX_FMT_YUV444P9LE \
360+ || (x)==PIX_FMT_YUV422P10BE \
361+ || (x)==PIX_FMT_YUV422P10LE \
362+ || (x)==PIX_FMT_YUV444P10BE \
363+ || (x)==PIX_FMT_YUV444P10LE \
358364 || (x)==PIX_FMT_YUV420P10LE \
359365 || (x)==PIX_FMT_YUV420P10BE \
360366 )
@@ -373,12 +379,18 @@ const char *sws_format_name(enum PixelFormat format); · 12 unmodified lines
373379 #define isPlanarYUV(x) ( \
374380 isPlanar8YUV(x) \
375381 || (x)==PIX_FMT_YUV420P9LE \
382+ || (x)==PIX_FMT_YUV444P9LE \
376383 || (x)==PIX_FMT_YUV420P10LE \
384+ || (x)==PIX_FMT_YUV422P10LE \
385+ || (x)==PIX_FMT_YUV444P10LE \
377386 || (x)==PIX_FMT_YUV420P16LE \
378387 || (x)==PIX_FMT_YUV422P16LE \
379388 || (x)==PIX_FMT_YUV444P16LE \
380389 || (x)==PIX_FMT_YUV420P9BE \
390+ || (x)==PIX_FMT_YUV444P9BE \
381391 || (x)==PIX_FMT_YUV420P10BE \
392+ || (x)==PIX_FMT_YUV422P10BE \
393+ || (x)==PIX_FMT_YUV444P10BE \
382394 || (x)==PIX_FMT_YUV420P16BE \
383395 || (x)==PIX_FMT_YUV422P16BE \
384396 || (x)==PIX_FMT_YUV444P16BE \
libswscale/utils.c+6−0
@@ -110,12 +110,18 @@ const char *swscale_license(void) · 109 unmodified lines
110110 || (x)==PIX_FMT_MONOWHITE \
111111 || (x)==PIX_FMT_MONOBLACK \
112112 || (x)==PIX_FMT_YUV420P9LE \
113+ || (x)==PIX_FMT_YUV444P9LE \
113114 || (x)==PIX_FMT_YUV420P10LE \
115+ || (x)==PIX_FMT_YUV422P10LE \
116+ || (x)==PIX_FMT_YUV444P10LE \
114117 || (x)==PIX_FMT_YUV420P16LE \
115118 || (x)==PIX_FMT_YUV422P16LE \
116119 || (x)==PIX_FMT_YUV444P16LE \
117120 || (x)==PIX_FMT_YUV420P9BE \
121+ || (x)==PIX_FMT_YUV444P9BE \
118122 || (x)==PIX_FMT_YUV420P10BE \
123+ || (x)==PIX_FMT_YUV444P10BE \
124+ || (x)==PIX_FMT_YUV422P10BE \
119125 || (x)==PIX_FMT_YUV420P16BE \
120126 || (x)==PIX_FMT_YUV422P16BE \
121127 || (x)==PIX_FMT_YUV444P16BE \

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t