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