Also add missing glue code for recently added YUV422P10 formats to swscale.
Unified · Split
| @@ -878,6 +878,52 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB] = { · 877 unmodified lines | ||
| 878 | 878 | }, |
| 879 | 879 | .flags = PIX_FMT_BE, |
| 880 | 880 | }, |
| 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 | + }, | |
| 881 | 927 | [PIX_FMT_DXVA2_VLD] = { |
| 882 | 928 | .name = "dxva2_vld", |
| 883 | 929 | .log2_chroma_w = 1, |
| @@ -141,6 +141,10 @@ enum PixelFormat { · 140 unmodified lines | ||
| 141 | 141 | PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian |
| 142 | 142 | PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian |
| 143 | 143 | 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 | |
| 144 | 148 | 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 |
| 145 | 149 | }; |
| 146 | 150 | |
| @@ -166,8 +170,10 @@ enum PixelFormat { · 19 unmodified lines | ||
| 166 | 170 | #define PIX_FMT_BGR444 PIX_FMT_NE(BGR444BE, BGR444LE) |
| 167 | 171 | |
| 168 | 172 | #define PIX_FMT_YUV420P9 PIX_FMT_NE(YUV420P9BE , YUV420P9LE) |
| 173 | +#define PIX_FMT_YUV444P9 PIX_FMT_NE(YUV444P9BE , YUV444P9LE) | |
| 169 | 174 | #define PIX_FMT_YUV420P10 PIX_FMT_NE(YUV420P10BE, YUV420P10LE) |
| 170 | 175 | #define PIX_FMT_YUV422P10 PIX_FMT_NE(YUV422P10BE, YUV422P10LE) |
| 176 | +#define PIX_FMT_YUV444P10 PIX_FMT_NE(YUV444P10BE, YUV444P10LE) | |
| 171 | 177 | #define PIX_FMT_YUV420P16 PIX_FMT_NE(YUV420P16BE, YUV420P16LE) |
| 172 | 178 | #define PIX_FMT_YUV422P16 PIX_FMT_NE(YUV422P16BE, YUV422P16LE) |
| 173 | 179 | #define PIX_FMT_YUV444P16 PIX_FMT_NE(YUV444P16BE, YUV444P16LE) |
| @@ -1821,7 +1821,7 @@ find_c_packed_planar_out_funcs(SwsContext *c, · 1820 unmodified lines | ||
| 1821 | 1821 | } else if (is16BPS(dstFormat)) { |
| 1822 | 1822 | *yuv2yuvX = isBE(dstFormat) ? yuv2yuvX16BE_c : yuv2yuvX16LE_c; |
| 1823 | 1823 | } 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) { | |
| 1825 | 1825 | *yuv2yuvX = isBE(dstFormat) ? yuv2yuvX9BE_c : yuv2yuvX9LE_c; |
| 1826 | 1826 | } else { |
| 1827 | 1827 | *yuv2yuvX = isBE(dstFormat) ? yuv2yuvX10BE_c : yuv2yuvX10LE_c; |
| @@ -2161,9 +2161,15 @@ static av_cold void sws_init_swScale_c(SwsContext *c) · 333 unmodified lines | ||
| 2161 | 2161 | case PIX_FMT_PAL8 : |
| 2162 | 2162 | case PIX_FMT_BGR4_BYTE: |
| 2163 | 2163 | case PIX_FMT_RGB4_BYTE: c->chrToYV12 = palToUV_c; break; |
| 2164 | + case PIX_FMT_YUV444P9BE: | |
| 2164 | 2165 | case PIX_FMT_YUV420P9BE: c->chrToYV12 = BE9ToUV_c; break; |
| 2166 | + case PIX_FMT_YUV444P9LE: | |
| 2165 | 2167 | case PIX_FMT_YUV420P9LE: c->chrToYV12 = LE9ToUV_c; break; |
| 2168 | + case PIX_FMT_YUV444P10BE: | |
| 2169 | + case PIX_FMT_YUV422P10BE: | |
| 2166 | 2170 | case PIX_FMT_YUV420P10BE: c->chrToYV12 = BE10ToUV_c; break; |
| 2171 | + case PIX_FMT_YUV422P10LE: | |
| 2172 | + case PIX_FMT_YUV444P10LE: | |
| 2167 | 2173 | case PIX_FMT_YUV420P10LE: c->chrToYV12 = LE10ToUV_c; break; |
| 2168 | 2174 | case PIX_FMT_YUV420P16BE: |
| 2169 | 2175 | case PIX_FMT_YUV422P16BE: |
| @@ -2219,9 +2225,15 @@ static av_cold void sws_init_swScale_c(SwsContext *c) · 49 unmodified lines | ||
| 2219 | 2225 | c->lumToYV12 = NULL; |
| 2220 | 2226 | c->alpToYV12 = NULL; |
| 2221 | 2227 | switch (srcFormat) { |
| 2228 | + case PIX_FMT_YUV444P9BE: | |
| 2222 | 2229 | case PIX_FMT_YUV420P9BE: c->lumToYV12 = BE9ToY_c; break; |
| 2230 | + case PIX_FMT_YUV444P9LE: | |
| 2223 | 2231 | case PIX_FMT_YUV420P9LE: c->lumToYV12 = LE9ToY_c; break; |
| 2232 | + case PIX_FMT_YUV444P10BE: | |
| 2233 | + case PIX_FMT_YUV422P10BE: | |
| 2224 | 2234 | case PIX_FMT_YUV420P10BE: c->lumToYV12 = BE10ToY_c; break; |
| 2235 | + case PIX_FMT_YUV444P10LE: | |
| 2236 | + case PIX_FMT_YUV422P10LE: | |
| 2225 | 2237 | case PIX_FMT_YUV420P10LE: c->lumToYV12 = LE10ToY_c; break; |
| 2226 | 2238 | case PIX_FMT_YUYV422 : |
| 2227 | 2239 | case PIX_FMT_YUV420P16BE: |
| @@ -355,6 +355,12 @@ const char *sws_format_name(enum PixelFormat format); · 354 unmodified lines | ||
| 355 | 355 | #define is9_OR_10BPS(x) ( \ |
| 356 | 356 | (x)==PIX_FMT_YUV420P9LE \ |
| 357 | 357 | || (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 \ | |
| 358 | 364 | || (x)==PIX_FMT_YUV420P10LE \ |
| 359 | 365 | || (x)==PIX_FMT_YUV420P10BE \ |
| 360 | 366 | ) |
| @@ -373,12 +379,18 @@ const char *sws_format_name(enum PixelFormat format); · 12 unmodified lines | ||
| 373 | 379 | #define isPlanarYUV(x) ( \ |
| 374 | 380 | isPlanar8YUV(x) \ |
| 375 | 381 | || (x)==PIX_FMT_YUV420P9LE \ |
| 382 | + || (x)==PIX_FMT_YUV444P9LE \ | |
| 376 | 383 | || (x)==PIX_FMT_YUV420P10LE \ |
| 384 | + || (x)==PIX_FMT_YUV422P10LE \ | |
| 385 | + || (x)==PIX_FMT_YUV444P10LE \ | |
| 377 | 386 | || (x)==PIX_FMT_YUV420P16LE \ |
| 378 | 387 | || (x)==PIX_FMT_YUV422P16LE \ |
| 379 | 388 | || (x)==PIX_FMT_YUV444P16LE \ |
| 380 | 389 | || (x)==PIX_FMT_YUV420P9BE \ |
| 390 | + || (x)==PIX_FMT_YUV444P9BE \ | |
| 381 | 391 | || (x)==PIX_FMT_YUV420P10BE \ |
| 392 | + || (x)==PIX_FMT_YUV422P10BE \ | |
| 393 | + || (x)==PIX_FMT_YUV444P10BE \ | |
| 382 | 394 | || (x)==PIX_FMT_YUV420P16BE \ |
| 383 | 395 | || (x)==PIX_FMT_YUV422P16BE \ |
| 384 | 396 | || (x)==PIX_FMT_YUV444P16BE \ |
| @@ -110,12 +110,18 @@ const char *swscale_license(void) · 109 unmodified lines | ||
| 110 | 110 | || (x)==PIX_FMT_MONOWHITE \ |
| 111 | 111 | || (x)==PIX_FMT_MONOBLACK \ |
| 112 | 112 | || (x)==PIX_FMT_YUV420P9LE \ |
| 113 | + || (x)==PIX_FMT_YUV444P9LE \ | |
| 113 | 114 | || (x)==PIX_FMT_YUV420P10LE \ |
| 115 | + || (x)==PIX_FMT_YUV422P10LE \ | |
| 116 | + || (x)==PIX_FMT_YUV444P10LE \ | |
| 114 | 117 | || (x)==PIX_FMT_YUV420P16LE \ |
| 115 | 118 | || (x)==PIX_FMT_YUV422P16LE \ |
| 116 | 119 | || (x)==PIX_FMT_YUV444P16LE \ |
| 117 | 120 | || (x)==PIX_FMT_YUV420P9BE \ |
| 121 | + || (x)==PIX_FMT_YUV444P9BE \ | |
| 118 | 122 | || (x)==PIX_FMT_YUV420P10BE \ |
| 123 | + || (x)==PIX_FMT_YUV444P10BE \ | |
| 124 | + || (x)==PIX_FMT_YUV422P10BE \ | |
| 119 | 125 | || (x)==PIX_FMT_YUV420P16BE \ |
| 120 | 126 | || (x)==PIX_FMT_YUV422P16BE \ |
| 121 | 127 | || (x)==PIX_FMT_YUV444P16BE \ |