History

swscale: add support for new 10/12 bit MSB formats

Timo Rothenpieler committed 1 year ago

Commit 02a7c851 parent e93de9931 files · +436 −57Browse files

Unified · Split

31 files
  1. libswscale/format.c +8 −0
  2. libswscale/input.c +188 −52
  3. libswscale/loongarch/output_lasx.c +1 −0
  4. libswscale/loongarch/output_lsx.c +1 −0
  5. libswscale/output.c +117 −0
  6. libswscale/ppc/swscale_altivec.c +1 −1
  7. libswscale/ppc/swscale_vsx.c +1 −1
  8. libswscale/swscale_unscaled.c +5 −1
  9. libswscale/tests/floatimg_cmp.c +2 −0
  10. libswscale/utils.c +2 −0
  11. libswscale/x86/swscale.c +2 −2
  12. tests/ref/fate/filter-pixdesc-gbrp10msbbe +1 −0
  13. tests/ref/fate/filter-pixdesc-gbrp10msble +1 −0
  14. tests/ref/fate/filter-pixdesc-gbrp12msbbe +1 −0
  15. tests/ref/fate/filter-pixdesc-gbrp12msble +1 −0
  16. tests/ref/fate/filter-pixdesc-yuv444p10msbbe +1 −0
  17. tests/ref/fate/filter-pixdesc-yuv444p10msble +1 −0
  18. tests/ref/fate/filter-pixdesc-yuv444p12msbbe +1 −0
  19. tests/ref/fate/filter-pixdesc-yuv444p12msble +1 −0
  20. tests/ref/fate/filter-pixfmts-copy +8 −0
  21. tests/ref/fate/filter-pixfmts-crop +8 −0
  22. tests/ref/fate/filter-pixfmts-field +8 −0
  23. tests/ref/fate/filter-pixfmts-fieldorder +8 −0
  24. tests/ref/fate/filter-pixfmts-hflip +8 −0
  25. tests/ref/fate/filter-pixfmts-il +8 −0
  26. tests/ref/fate/filter-pixfmts-null +8 −0
  27. tests/ref/fate/filter-pixfmts-pad +4 −0
  28. tests/ref/fate/filter-pixfmts-scale +8 −0
  29. tests/ref/fate/filter-pixfmts-transpose +8 −0
  30. tests/ref/fate/filter-pixfmts-vflip +8 −0
  31. tests/ref/fate/sws-floatimg-cmp +16 −0
libswscale/format.c+8−0
@@ -157,6 +157,10 @@ static const FormatEntry format_entries[] = { · 156 unmodified lines
157 [AV_PIX_FMT_YUV444P12LE] = { 1, 1 },157 [AV_PIX_FMT_YUV444P12LE] = { 1, 1 },
158 [AV_PIX_FMT_YUV444P14BE] = { 1, 1 },158 [AV_PIX_FMT_YUV444P14BE] = { 1, 1 },
159 [AV_PIX_FMT_YUV444P14LE] = { 1, 1 },159 [AV_PIX_FMT_YUV444P14LE] = { 1, 1 },
160 [AV_PIX_FMT_YUV444P10MSBBE] = { 1, 1 },
161 [AV_PIX_FMT_YUV444P10MSBLE] = { 1, 1 },
162 [AV_PIX_FMT_YUV444P12MSBBE] = { 1, 1 },
163 [AV_PIX_FMT_YUV444P12MSBLE] = { 1, 1 },
160 [AV_PIX_FMT_GBRP] = { 1, 1 },164 [AV_PIX_FMT_GBRP] = { 1, 1 },
161 [AV_PIX_FMT_GBRP9LE] = { 1, 1 },165 [AV_PIX_FMT_GBRP9LE] = { 1, 1 },
162 [AV_PIX_FMT_GBRP9BE] = { 1, 1 },166 [AV_PIX_FMT_GBRP9BE] = { 1, 1 },
@@ -164,8 +168,12 @@ static const FormatEntry format_entries[] = { · 1 unmodified line
164 [AV_PIX_FMT_GBRP10BE] = { 1, 1 },168 [AV_PIX_FMT_GBRP10BE] = { 1, 1 },
165 [AV_PIX_FMT_GBRAP10LE] = { 1, 1 },169 [AV_PIX_FMT_GBRAP10LE] = { 1, 1 },
166 [AV_PIX_FMT_GBRAP10BE] = { 1, 1 },170 [AV_PIX_FMT_GBRAP10BE] = { 1, 1 },
171 [AV_PIX_FMT_GBRP10MSBLE] = { 1, 1 },
172 [AV_PIX_FMT_GBRP10MSBBE] = { 1, 1 },
167 [AV_PIX_FMT_GBRP12LE] = { 1, 1 },173 [AV_PIX_FMT_GBRP12LE] = { 1, 1 },
168 [AV_PIX_FMT_GBRP12BE] = { 1, 1 },174 [AV_PIX_FMT_GBRP12BE] = { 1, 1 },
175 [AV_PIX_FMT_GBRP12MSBLE] = { 1, 1 },
176 [AV_PIX_FMT_GBRP12MSBBE] = { 1, 1 },
169 [AV_PIX_FMT_GBRAP12LE] = { 1, 1 },177 [AV_PIX_FMT_GBRAP12LE] = { 1, 1 },
170 [AV_PIX_FMT_GBRAP12BE] = { 1, 1 },178 [AV_PIX_FMT_GBRAP12BE] = { 1, 1 },
171 [AV_PIX_FMT_GBRP14LE] = { 1, 1 },179 [AV_PIX_FMT_GBRP14LE] = { 1, 1 },
libswscale/input.c+188−52
@@ -1006,6 +1006,64 @@ p01x_wrapper(p010, 6) · 1005 unmodified lines
1006p01x_wrapper(p012, 4)1006p01x_wrapper(p012, 4)
1007p01x_uv_wrapper(p016, 0)1007p01x_uv_wrapper(p016, 0)
1008 1008
1009#define shf16_uv_wrapper(shift) \
1010 static void shf16_ ## shift ## LEToUV_c(uint8_t *dstU, \
1011 uint8_t *dstV, \
1012 const uint8_t *unused0, \
1013 const uint8_t *src1, \
1014 const uint8_t *src2, int width, \
1015 uint32_t *unused, void *opq) \
1016 { \
1017 int i; \
1018 for (i = 0; i < width; i++) { \
1019 AV_WN16(dstU + i * 2, AV_RL16(src1 + i * 2) >> (16 - shift)); \
1020 AV_WN16(dstV + i * 2, AV_RL16(src2 + i * 2) >> (16 - shift)); \
1021 } \
1022 } \
1023 \
1024 static void shf16_ ## shift ## BEToUV_c(uint8_t *dstU, \
1025 uint8_t *dstV, \
1026 const uint8_t *unused0, \
1027 const uint8_t *src1, \
1028 const uint8_t *src2, int width, \
1029 uint32_t *unused, void *opq) \
1030 { \
1031 int i; \
1032 for (i = 0; i < width; i++) { \
1033 AV_WN16(dstU + i * 2, AV_RB16(src1 + i * 2) >> (16 - shift)); \
1034 AV_WN16(dstV + i * 2, AV_RB16(src2 + i * 2) >> (16 - shift)); \
1035 } \
1036 }
1037
1038#define shf16_wrapper(shift) \
1039 static void shf16_ ## shift ## LEToY_c(uint8_t *dst, \
1040 const uint8_t *src, \
1041 const uint8_t *unused1, \
1042 const uint8_t *unused2, int width, \
1043 uint32_t *unused, void *opq) \
1044 { \
1045 int i; \
1046 for (i = 0; i < width; i++) { \
1047 AV_WN16(dst + i * 2, AV_RL16(src + i * 2) >> (16 - shift)); \
1048 } \
1049 } \
1050 \
1051 static void shf16_ ## shift ## BEToY_c(uint8_t *dst, \
1052 const uint8_t *src, \
1053 const uint8_t *unused1, \
1054 const uint8_t *unused2, int width, \
1055 uint32_t *unused, void *opq) \
1056 { \
1057 int i; \
1058 for (i = 0; i < width; i++) { \
1059 AV_WN16(dst + i * 2, AV_RB16(src + i * 2) >> (16 - shift)); \
1060 } \
1061 } \
1062 shf16_uv_wrapper(shift)
1063
1064shf16_wrapper(10)
1065shf16_wrapper(12)
1066
1009static void bgr24ToY_c(uint8_t *_dst, const uint8_t *src, const uint8_t *unused1, const uint8_t *unused2,1067static void bgr24ToY_c(uint8_t *_dst, const uint8_t *src, const uint8_t *unused1, const uint8_t *unused2,
1010 int width, uint32_t *rgb2yuv, void *opq)1068 int width, uint32_t *rgb2yuv, void *opq)
1011{1069{
@@ -1153,56 +1211,66 @@ static void planar_rgb_to_uv(uint8_t *_dstU, uint8_t *_dstV, const uint8_t *src[ · 141 unmodified lines
1153 1211
1154#define rdpx(src) \1212#define rdpx(src) \
1155 (is_be ? AV_RB16(src) : AV_RL16(src))1213 (is_be ? AV_RB16(src) : AV_RL16(src))
1156static av_always_inline void planar_rgb16_to_y(uint8_t *_dst, const uint8_t *_src[4],
1157 int width, int bpc, int is_be, int32_t *rgb2yuv)
1158{
1159 int i;
1160 const uint16_t **src = (const uint16_t **)_src;
1161 uint16_t *dst = (uint16_t *)_dst;
1162 int32_t ry = rgb2yuv[RY_IDX], gy = rgb2yuv[GY_IDX], by = rgb2yuv[BY_IDX];
1163 int shift = bpc < 16 ? bpc : 14;
1164 for (i = 0; i < width; i++) {
1165 int g = rdpx(src[0] + i);
1166 int b = rdpx(src[1] + i);
1167 int r = rdpx(src[2] + i);
1168 1214
1169 dst[i] = (ry*r + gy*g + by*b + (16 << (RGB2YUV_SHIFT + bpc - 8)) + (1 << (RGB2YUV_SHIFT + shift - 15))) >> (RGB2YUV_SHIFT + shift - 14);1215#define shifted_planar_rgb16(rdpx_shift) \
1170 }1216 static av_always_inline void planar_rgb16_s ## rdpx_shift ## _to_y(uint8_t *_dst, const uint8_t *_src[4], \
1171}1217 int width, int bpc, int is_be, int32_t *rgb2yuv) \
1172 1218 { \
1173static av_always_inline void planar_rgb16_to_a(uint8_t *_dst, const uint8_t *_src[4],1219 int i; \
1174 int width, int bpc, int is_be, int32_t *rgb2yuv)1220 const uint16_t **src = (const uint16_t **)_src; \
1175{1221 uint16_t *dst = (uint16_t *)_dst; \
1176 int i;1222 int32_t ry = rgb2yuv[RY_IDX], gy = rgb2yuv[GY_IDX], by = rgb2yuv[BY_IDX]; \
1177 const uint16_t **src = (const uint16_t **)_src;1223 int shift = bpc < 16 ? bpc : 14; \
1178 uint16_t *dst = (uint16_t *)_dst;1224 for (i = 0; i < width; i++) { \
1179 int shift = bpc < 16 ? bpc : 14;1225 int g = rdpx(src[0] + i) >> (16 - rdpx_shift); \
1180 1226 int b = rdpx(src[1] + i) >> (16 - rdpx_shift); \
1181 for (i = 0; i < width; i++) {1227 int r = rdpx(src[2] + i) >> (16 - rdpx_shift); \
1182 dst[i] = rdpx(src[3] + i) << (14 - shift);1228 \
1183 }1229 dst[i] = (ry*r + gy*g + by*b + (16 << (RGB2YUV_SHIFT + bpc - 8)) \
1184}1230 + (1 << (RGB2YUV_SHIFT + shift - 15))) >> (RGB2YUV_SHIFT + shift - 14); \
1185 1231 } \
1186static av_always_inline void planar_rgb16_to_uv(uint8_t *_dstU, uint8_t *_dstV,1232 } \
1187 const uint8_t *_src[4], int width,1233 \
1188 int bpc, int is_be, int32_t *rgb2yuv)1234 static av_always_inline void planar_rgb16_s ## rdpx_shift ## _to_a(uint8_t *_dst, const uint8_t *_src[4], \
1189{1235 int width, int bpc, int is_be, int32_t *rgb2yuv) \
1190 int i;1236 { \
1191 const uint16_t **src = (const uint16_t **)_src;1237 int i; \
1192 uint16_t *dstU = (uint16_t *)_dstU;1238 const uint16_t **src = (const uint16_t **)_src; \
1193 uint16_t *dstV = (uint16_t *)_dstV;1239 uint16_t *dst = (uint16_t *)_dst; \
1194 int32_t ru = rgb2yuv[RU_IDX], gu = rgb2yuv[GU_IDX], bu = rgb2yuv[BU_IDX];1240 int shift = (bpc < 16 ? bpc : 14) + 16 - rdpx_shift; \
1195 int32_t rv = rgb2yuv[RV_IDX], gv = rgb2yuv[GV_IDX], bv = rgb2yuv[BV_IDX];1241 \
1196 int shift = bpc < 16 ? bpc : 14;1242 for (i = 0; i < width; i++) { \
1197 for (i = 0; i < width; i++) {1243 dst[i] = rdpx(src[3] + i) << (14 - shift); \
1198 int g = rdpx(src[0] + i);1244 } \
1199 int b = rdpx(src[1] + i);1245 } \
1200 int r = rdpx(src[2] + i);1246 \
1247 static av_always_inline void planar_rgb16_s ## rdpx_shift ## _to_uv(uint8_t *_dstU, uint8_t *_dstV, \
1248 const uint8_t *_src[4], int width, \
1249 int bpc, int is_be, int32_t *rgb2yuv) \
1250 { \
1251 int i; \
1252 const uint16_t **src = (const uint16_t **)_src; \
1253 uint16_t *dstU = (uint16_t *)_dstU; \
1254 uint16_t *dstV = (uint16_t *)_dstV; \
1255 int32_t ru = rgb2yuv[RU_IDX], gu = rgb2yuv[GU_IDX], bu = rgb2yuv[BU_IDX]; \
1256 int32_t rv = rgb2yuv[RV_IDX], gv = rgb2yuv[GV_IDX], bv = rgb2yuv[BV_IDX]; \
1257 int shift = bpc < 16 ? bpc : 14; \
1258 for (i = 0; i < width; i++) { \
1259 int g = rdpx(src[0] + i) >> (16 - rdpx_shift); \
1260 int b = rdpx(src[1] + i) >> (16 - rdpx_shift); \
1261 int r = rdpx(src[2] + i) >> (16 - rdpx_shift); \
1262 \
1263 dstU[i] = (ru*r + gu*g + bu*b + (128 << (RGB2YUV_SHIFT + bpc - 8)) \
1264 + (1 << (RGB2YUV_SHIFT + shift - 15))) >> (RGB2YUV_SHIFT + shift - 14); \
1265 dstV[i] = (rv*r + gv*g + bv*b + (128 << (RGB2YUV_SHIFT + bpc - 8)) \
1266 + (1 << (RGB2YUV_SHIFT + shift - 15))) >> (RGB2YUV_SHIFT + shift - 14); \
1267 } \
1268 }
1269
1270shifted_planar_rgb16(16)
1271shifted_planar_rgb16(12)
1272shifted_planar_rgb16(10)
1201 1273
1202 dstU[i] = (ru*r + gu*g + bu*b + (128 << (RGB2YUV_SHIFT + bpc - 8)) + (1 << (RGB2YUV_SHIFT + shift - 15))) >> (RGB2YUV_SHIFT + shift - 14);
1203 dstV[i] = (rv*r + gv*g + bv*b + (128 << (RGB2YUV_SHIFT + bpc - 8)) + (1 << (RGB2YUV_SHIFT + shift - 15))) >> (RGB2YUV_SHIFT + shift - 14);
1204 }
1205}
1206#undef rdpx1274#undef rdpx
1207 1275
1208#define rdpx(src) (is_be ? av_int2float(AV_RB32(src)): av_int2float(AV_RL32(src)))1276#define rdpx(src) (is_be ? av_int2float(AV_RB32(src)): av_int2float(AV_RL32(src)))
@@ -1334,13 +1402,13 @@ static av_always_inline void read_yaf32_alpha_c(uint8_t *_dst, const uint8_t *_s · 125 unmodified lines
1334static void planar_rgb##nbits##endian_name##_to_y(uint8_t *dst, const uint8_t *src[4], \1402static void planar_rgb##nbits##endian_name##_to_y(uint8_t *dst, const uint8_t *src[4], \
1335 int w, int32_t *rgb2yuv, void *opq) \1403 int w, int32_t *rgb2yuv, void *opq) \
1336{ \1404{ \
1337 planar_rgb16_to_y(dst, src, w, nbits, endian, rgb2yuv); \1405 planar_rgb16_s16_to_y(dst, src, w, nbits, endian, rgb2yuv); \
1338} \1406} \
1339static void planar_rgb##nbits##endian_name##_to_uv(uint8_t *dstU, uint8_t *dstV, \1407static void planar_rgb##nbits##endian_name##_to_uv(uint8_t *dstU, uint8_t *dstV, \
1340 const uint8_t *src[4], int w, int32_t *rgb2yuv, \1408 const uint8_t *src[4], int w, int32_t *rgb2yuv, \
1341 void *opq) \1409 void *opq) \
1342{ \1410{ \
1343 planar_rgb16_to_uv(dstU, dstV, src, w, nbits, endian, rgb2yuv); \1411 planar_rgb16_s16_to_uv(dstU, dstV, src, w, nbits, endian, rgb2yuv); \
1344} \1412} \
1345 1413
1346#define rgb9plus_planar_transparency_funcs(nbits) \1414#define rgb9plus_planar_transparency_funcs(nbits) \
@@ -1348,19 +1416,36 @@ static void planar_rgb##nbits##le_to_a(uint8_t *dst, const uint8_t *src[4], \ · 1 unmodified line
1348 int w, int32_t *rgb2yuv, \1416 int w, int32_t *rgb2yuv, \
1349 void *opq) \1417 void *opq) \
1350{ \1418{ \
1351 planar_rgb16_to_a(dst, src, w, nbits, 0, rgb2yuv); \1419 planar_rgb16_s16_to_a(dst, src, w, nbits, 0, rgb2yuv); \
1352} \1420} \
1353static void planar_rgb##nbits##be_to_a(uint8_t *dst, const uint8_t *src[4], \1421static void planar_rgb##nbits##be_to_a(uint8_t *dst, const uint8_t *src[4], \
1354 int w, int32_t *rgb2yuv, \1422 int w, int32_t *rgb2yuv, \
1355 void *opq) \1423 void *opq) \
1356{ \1424{ \
1357 planar_rgb16_to_a(dst, src, w, nbits, 1, rgb2yuv); \1425 planar_rgb16_s16_to_a(dst, src, w, nbits, 1, rgb2yuv); \
1426}
1427
1428#define rgb9plus_msb_planar_funcs_endian(nbits, endian_name, endian) \
1429static void msb_planar_rgb##nbits##endian_name##_to_y(uint8_t *dst, const uint8_t *src[4], \
1430 int w, int32_t *rgb2yuv, void *opq) \
1431{ \
1432 planar_rgb16_s##nbits##_to_y(dst, src, w, nbits, endian, rgb2yuv); \
1433} \
1434static void msb_planar_rgb##nbits##endian_name##_to_uv(uint8_t *dstU, uint8_t *dstV, \
1435 const uint8_t *src[4], int w, int32_t *rgb2yuv, \
1436 void *opq) \
1437{ \
1438 planar_rgb16_s##nbits##_to_uv(dstU, dstV, src, w, nbits, endian, rgb2yuv); \
1358}1439}
1359 1440
1360#define rgb9plus_planar_funcs(nbits) \1441#define rgb9plus_planar_funcs(nbits) \
1361 rgb9plus_planar_funcs_endian(nbits, le, 0) \1442 rgb9plus_planar_funcs_endian(nbits, le, 0) \
1362 rgb9plus_planar_funcs_endian(nbits, be, 1)1443 rgb9plus_planar_funcs_endian(nbits, be, 1)
1363 1444
1445#define rgb9plus_msb_planar_funcs(nbits) \
1446 rgb9plus_msb_planar_funcs_endian(nbits, le, 0) \
1447 rgb9plus_msb_planar_funcs_endian(nbits, be, 1)
1448
1364rgb9plus_planar_funcs(9)1449rgb9plus_planar_funcs(9)
1365rgb9plus_planar_funcs(10)1450rgb9plus_planar_funcs(10)
1366rgb9plus_planar_funcs(12)1451rgb9plus_planar_funcs(12)
@@ -1372,6 +1457,9 @@ rgb9plus_planar_transparency_funcs(12) · 5 unmodified lines
1372rgb9plus_planar_transparency_funcs(14)1457rgb9plus_planar_transparency_funcs(14)
1373rgb9plus_planar_transparency_funcs(16)1458rgb9plus_planar_transparency_funcs(16)
1374 1459
1460rgb9plus_msb_planar_funcs(10)
1461rgb9plus_msb_planar_funcs(12)
1462
1375#define rgbf32_funcs_endian(endian_name, endian) \1463#define rgbf32_funcs_endian(endian_name, endian) \
1376static void planar_rgbf32##endian_name##_to_y(uint8_t *dst, const uint8_t *src[4], \1464static void planar_rgbf32##endian_name##_to_y(uint8_t *dst, const uint8_t *src[4], \
1377 int w, int32_t *rgb2yuv, void *opq) \1465 int w, int32_t *rgb2yuv, void *opq) \
@@ -1786,6 +1874,12 @@ av_cold void ff_sws_init_input_funcs(SwsInternal *c, · 408 unmodified lines
1786 case AV_PIX_FMT_GBRPF16LE:1874 case AV_PIX_FMT_GBRPF16LE:
1787 *readChrPlanar = planar_rgbf16le_to_uv;1875 *readChrPlanar = planar_rgbf16le_to_uv;
1788 break;1876 break;
1877 case AV_PIX_FMT_GBRP10MSBLE:
1878 *readChrPlanar = msb_planar_rgb10le_to_uv;
1879 break;
1880 case AV_PIX_FMT_GBRP12MSBLE:
1881 *readChrPlanar = msb_planar_rgb12le_to_uv;
1882 break;
1789 case AV_PIX_FMT_GBRP9BE:1883 case AV_PIX_FMT_GBRP9BE:
1790 *readChrPlanar = planar_rgb9be_to_uv;1884 *readChrPlanar = planar_rgb9be_to_uv;
1791 break;1885 break;
@@ -1813,6 +1907,12 @@ av_cold void ff_sws_init_input_funcs(SwsInternal *c, · 21 unmodified lines
1813 case AV_PIX_FMT_GBRPF16BE:1907 case AV_PIX_FMT_GBRPF16BE:
1814 *readChrPlanar = planar_rgbf16be_to_uv;1908 *readChrPlanar = planar_rgbf16be_to_uv;
1815 break;1909 break;
1910 case AV_PIX_FMT_GBRP10MSBBE:
1911 *readChrPlanar = msb_planar_rgb10be_to_uv;
1912 break;
1913 case AV_PIX_FMT_GBRP12MSBBE:
1914 *readChrPlanar = msb_planar_rgb12be_to_uv;
1915 break;
1816 case AV_PIX_FMT_GBRAP:1916 case AV_PIX_FMT_GBRAP:
1817 case AV_PIX_FMT_GBRP:1917 case AV_PIX_FMT_GBRP:
1818 *readChrPlanar = planar_rgb_to_uv;1918 *readChrPlanar = planar_rgb_to_uv;
@@ -1882,6 +1982,18 @@ av_cold void ff_sws_init_input_funcs(SwsInternal *c, · 63 unmodified lines
1882 *chrToYV12 = bswap16UV_c;1982 *chrToYV12 = bswap16UV_c;
1883 break;1983 break;
1884#endif1984#endif
1985 case AV_PIX_FMT_YUV444P10MSBLE:
1986 *chrToYV12 = shf16_10LEToUV_c;
1987 break;
1988 case AV_PIX_FMT_YUV444P12MSBLE:
1989 *chrToYV12 = shf16_12LEToUV_c;
1990 break;
1991 case AV_PIX_FMT_YUV444P10MSBBE:
1992 *chrToYV12 = shf16_10BEToUV_c;
1993 break;
1994 case AV_PIX_FMT_YUV444P12MSBBE:
1995 *chrToYV12 = shf16_12BEToUV_c;
1996 break;
1885 case AV_PIX_FMT_VUYA:1997 case AV_PIX_FMT_VUYA:
1886 case AV_PIX_FMT_VUYX:1998 case AV_PIX_FMT_VUYX:
1887 *chrToYV12 = read_vuyx_UV_c;1999 *chrToYV12 = read_vuyx_UV_c;
@@ -2208,6 +2320,12 @@ av_cold void ff_sws_init_input_funcs(SwsInternal *c, · 320 unmodified lines
2208 case AV_PIX_FMT_GBRPF16LE:2320 case AV_PIX_FMT_GBRPF16LE:
2209 *readLumPlanar = planar_rgbf16le_to_y;2321 *readLumPlanar = planar_rgbf16le_to_y;
2210 break;2322 break;
2323 case AV_PIX_FMT_GBRP10MSBLE:
2324 *readLumPlanar = msb_planar_rgb10le_to_y;
2325 break;
2326 case AV_PIX_FMT_GBRP12MSBLE:
2327 *readLumPlanar = msb_planar_rgb12le_to_y;
2328 break;
2211 case AV_PIX_FMT_GBRP9BE:2329 case AV_PIX_FMT_GBRP9BE:
2212 *readLumPlanar = planar_rgb9be_to_y;2330 *readLumPlanar = planar_rgb9be_to_y;
2213 break;2331 break;
@@ -2241,6 +2359,12 @@ av_cold void ff_sws_init_input_funcs(SwsInternal *c, · 27 unmodified lines
2241 case AV_PIX_FMT_GBRPF16BE:2359 case AV_PIX_FMT_GBRPF16BE:
2242 *readLumPlanar = planar_rgbf16be_to_y;2360 *readLumPlanar = planar_rgbf16be_to_y;
2243 break;2361 break;
2362 case AV_PIX_FMT_GBRP10MSBBE:
2363 *readLumPlanar = msb_planar_rgb10be_to_y;
2364 break;
2365 case AV_PIX_FMT_GBRP12MSBBE:
2366 *readLumPlanar = msb_planar_rgb12be_to_y;
2367 break;
2244 case AV_PIX_FMT_GBRAP:2368 case AV_PIX_FMT_GBRAP:
2245 *readAlpPlanar = planar_rgb_to_a;2369 *readAlpPlanar = planar_rgb_to_a;
2246 case AV_PIX_FMT_GBRP:2370 case AV_PIX_FMT_GBRP:
@@ -2335,6 +2459,18 @@ av_cold void ff_sws_init_input_funcs(SwsInternal *c, · 88 unmodified lines
2335 *alpToYV12 = bswap16Y_c;2459 *alpToYV12 = bswap16Y_c;
2336 break;2460 break;
2337#endif2461#endif
2462 case AV_PIX_FMT_YUV444P10MSBLE:
2463 *lumToYV12 = shf16_10LEToY_c;
2464 break;
2465 case AV_PIX_FMT_YUV444P12MSBLE:
2466 *lumToYV12 = shf16_12LEToY_c;
2467 break;
2468 case AV_PIX_FMT_YUV444P10MSBBE:
2469 *lumToYV12 = shf16_10BEToY_c;
2470 break;
2471 case AV_PIX_FMT_YUV444P12MSBBE:
2472 *lumToYV12 = shf16_12BEToY_c;
2473 break;
2338 case AV_PIX_FMT_YA16LE:2474 case AV_PIX_FMT_YA16LE:
2339 *lumToYV12 = read_ya16le_gray_c;2475 *lumToYV12 = read_ya16le_gray_c;
2340 break;2476 break;
libswscale/loongarch/output_lasx.c+1−0
@@ -1768,6 +1768,7 @@ av_cold void ff_sws_init_output_lasx(SwsInternal *c, · 1767 unmodified lines
1768 /* Add initialization once optimized */1768 /* Add initialization once optimized */
1769 if (isSemiPlanarYUV(dstFormat) && isDataInHighBits(dstFormat)) {1769 if (isSemiPlanarYUV(dstFormat) && isDataInHighBits(dstFormat)) {
1770 } else if (is16BPS(dstFormat)) {1770 } else if (is16BPS(dstFormat)) {
1771 } else if (isNBPS(dstFormat) && isDataInHighBits(dstFormat)) {
1771 } else if (isNBPS(dstFormat)) {1772 } else if (isNBPS(dstFormat)) {
1772 } else if (dstFormat == AV_PIX_FMT_GRAYF32BE) {1773 } else if (dstFormat == AV_PIX_FMT_GRAYF32BE) {
1773 } else if (dstFormat == AV_PIX_FMT_GRAYF32LE) {1774 } else if (dstFormat == AV_PIX_FMT_GRAYF32LE) {
libswscale/loongarch/output_lsx.c+1−0
@@ -1623,6 +1623,7 @@ av_cold void ff_sws_init_output_lsx(SwsInternal *c, · 1622 unmodified lines
1623 /* Add initialization once optimized */1623 /* Add initialization once optimized */
1624 if (isSemiPlanarYUV(dstFormat) && isDataInHighBits(dstFormat)) {1624 if (isSemiPlanarYUV(dstFormat) && isDataInHighBits(dstFormat)) {
1625 } else if (is16BPS(dstFormat)) {1625 } else if (is16BPS(dstFormat)) {
1626 } else if (isNBPS(dstFormat) && isDataInHighBits(dstFormat)) {
1626 } else if (isNBPS(dstFormat)) {1627 } else if (isNBPS(dstFormat)) {
1627 } else if (dstFormat == AV_PIX_FMT_GRAYF32BE) {1628 } else if (dstFormat == AV_PIX_FMT_GRAYF32BE) {
1628 } else if (dstFormat == AV_PIX_FMT_GRAYF32LE) {1629 } else if (dstFormat == AV_PIX_FMT_GRAYF32LE) {
libswscale/output.c+117−0
@@ -386,6 +386,68 @@ yuv2NBPS(14, LE, 0, 10, int16_t) · 385 unmodified lines
386yuv2NBPS(16, BE, 1, 16, int32_t)386yuv2NBPS(16, BE, 1, 16, int32_t)
387yuv2NBPS(16, LE, 0, 16, int32_t)387yuv2NBPS(16, LE, 0, 16, int32_t)
388 388
389#define output_pixel(pos, val) \
390 if (big_endian) { \
391 AV_WB16(pos, av_clip_uintp2(val >> shift, output_bits) << (16 - output_bits)); \
392 } else { \
393 AV_WL16(pos, av_clip_uintp2(val >> shift, output_bits) << (16 - output_bits)); \
394 }
395
396static av_always_inline void
397yuv2msbplane1_10_c_template(const int16_t *src, uint16_t *dest, int dstW,
398 int big_endian, int output_bits)
399{
400 int i;
401 int shift = 15 - output_bits;
402
403 for (i = 0; i < dstW; i++) {
404 int val = src[i] + (1 << (shift - 1));
405 output_pixel(&dest[i], val);
406 }
407}
408
409static av_always_inline void
410yuv2msbplaneX_10_c_template(const int16_t *filter, int filterSize,
411 const int16_t **src, uint16_t *dest, int dstW,
412 int big_endian, int output_bits)
413{
414 int i;
415 int shift = 11 + 16 - output_bits;
416
417 for (i = 0; i < dstW; i++) {
418 int val = 1 << (shift - 1);
419 int j;
420
421 for (j = 0; j < filterSize; j++)
422 val += src[j][i] * filter[j];
423
424 output_pixel(&dest[i], val);
425 }
426}
427
428#define yuv2MSBNBPS(bits, BE_LE, is_be, template_size, typeX_t) \
429static void yuv2msbplane1_ ## bits ## BE_LE ## _c(const int16_t *src, \
430 uint8_t *dest, int dstW, \
431 const uint8_t *dither, int offset)\
432{ \
433 yuv2msbplane1_ ## template_size ## _c_template((const typeX_t *) src, \
434 (uint16_t *) dest, dstW, is_be, bits); \
435}\
436static void yuv2msbplaneX_ ## bits ## BE_LE ## _c(const int16_t *filter, int filterSize, \
437 const int16_t **src, uint8_t *dest, int dstW, \
438 const uint8_t *dither, int offset)\
439{ \
440 yuv2msbplaneX_## template_size ## _c_template(filter, \
441 filterSize, (const typeX_t **) src, \
442 (uint16_t *) dest, dstW, is_be, bits); \
443}
444
445yuv2MSBNBPS(10, BE, 1, 10, int16_t)
446yuv2MSBNBPS(10, LE, 0, 10, int16_t)
447yuv2MSBNBPS(12, BE, 1, 10, int16_t)
448yuv2MSBNBPS(12, LE, 0, 10, int16_t)
449
450#undef output_pixel
389 451
390static void yuv2nv12cX_16LE_c(enum AVPixelFormat dstFormat, const uint8_t *chrDither,452static void yuv2nv12cX_16LE_c(enum AVPixelFormat dstFormat, const uint8_t *chrDither,
391 const int16_t *chrFilter, int chrFilterSize,453 const int16_t *chrFilter, int chrFilterSize,
@@ -2352,6 +2414,46 @@ yuv2gbrp_full_X_c(SwsInternal *c, const int16_t *lumFilter, · 1960 unmodified lines
2352 }2414 }
2353}2415}
2354 2416
2417static void
2418yuv2gbrpmsb_full_X_c(SwsInternal *c, const int16_t *lumFilter,
2419 const int16_t **lumSrc, int lumFilterSize,
2420 const int16_t *chrFilter, const int16_t **chrUSrc,
2421 const int16_t **chrVSrc, int chrFilterSize,
2422 const int16_t **alpSrc, uint8_t **dest,
2423 int dstW, int y)
2424{
2425 const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(c->opts.dst_format);
2426 int hasAlpha = (desc->flags & AV_PIX_FMT_FLAG_ALPHA) && alpSrc;
2427 uint16_t **dest16 = (uint16_t**)dest;
2428 int shift = 16 - desc->comp[0].depth;
2429 int i;
2430
2431 yuv2gbrp_full_X_c(c, lumFilter, lumSrc, lumFilterSize,
2432 chrFilter, chrUSrc, chrVSrc, chrFilterSize,
2433 alpSrc, dest, dstW, y);
2434
2435 if (desc->comp[0].depth <= 8)
2436 return;
2437
2438 if ((!isBE(c->opts.dst_format)) != (!HAVE_BIGENDIAN)) {
2439 for (i = 0; i < dstW; i++) {
2440 dest16[0][i] = av_bswap16(av_bswap16(dest16[0][i]) << shift);
2441 dest16[1][i] = av_bswap16(av_bswap16(dest16[1][i]) << shift);
2442 dest16[2][i] = av_bswap16(av_bswap16(dest16[2][i]) << shift);
2443 if (hasAlpha)
2444 dest16[3][i] = av_bswap16(av_bswap16(dest16[3][i]) << shift);
2445 }
2446 } else {
2447 for (i = 0; i < dstW; i++) {
2448 dest16[0][i] = dest16[0][i] << shift;
2449 dest16[1][i] = dest16[1][i] << shift;
2450 dest16[2][i] = dest16[2][i] << shift;
2451 if (hasAlpha)
2452 dest16[3][i] = dest16[3][i] << shift;
2453 }
2454 }
2455}
2456
2355static void2457static void
2356yuv2gbrp16_full_X_c(SwsInternal *c, const int16_t *lumFilter,2458yuv2gbrp16_full_X_c(SwsInternal *c, const int16_t *lumFilter,
2357 const int16_t **lumSrcx, int lumFilterSize,2459 const int16_t **lumSrcx, int lumFilterSize,
@@ -3215,6 +3317,15 @@ av_cold void ff_sws_init_output_funcs(SwsInternal *c, · 857 unmodified lines
3215 if (isSemiPlanarYUV(dstFormat)) {3317 if (isSemiPlanarYUV(dstFormat)) {
3216 *yuv2nv12cX = isBE(dstFormat) ? yuv2nv12cX_16BE_c : yuv2nv12cX_16LE_c;3318 *yuv2nv12cX = isBE(dstFormat) ? yuv2nv12cX_16BE_c : yuv2nv12cX_16LE_c;
3217 }3319 }
3320 } else if (isDataInHighBits(dstFormat) && isNBPS(dstFormat)) {
3321 if (desc->comp[0].depth == 10) {
3322 *yuv2planeX = isBE(dstFormat) ? yuv2msbplaneX_10BE_c : yuv2msbplaneX_10LE_c;
3323 *yuv2plane1 = isBE(dstFormat) ? yuv2msbplane1_10BE_c : yuv2msbplane1_10LE_c;
3324 } else if (desc->comp[0].depth == 12) {
3325 *yuv2planeX = isBE(dstFormat) ? yuv2msbplaneX_12BE_c : yuv2msbplaneX_12LE_c;
3326 *yuv2plane1 = isBE(dstFormat) ? yuv2msbplane1_12BE_c : yuv2msbplane1_12LE_c;
3327 } else
3328 av_assert0(0);
3218 } else if (isNBPS(dstFormat)) {3329 } else if (isNBPS(dstFormat)) {
3219 if (desc->comp[0].depth == 9) {3330 if (desc->comp[0].depth == 9) {
3220 *yuv2planeX = isBE(dstFormat) ? yuv2planeX_9BE_c : yuv2planeX_9LE_c;3331 *yuv2planeX = isBE(dstFormat) ? yuv2planeX_9BE_c : yuv2planeX_9LE_c;
@@ -3460,6 +3571,12 @@ av_cold void ff_sws_init_output_funcs(SwsInternal *c, · 239 unmodified lines
3460 case AV_PIX_FMT_GBRAP14LE:3571 case AV_PIX_FMT_GBRAP14LE:
3461 *yuv2anyX = yuv2gbrp_full_X_c;3572 *yuv2anyX = yuv2gbrp_full_X_c;
3462 break;3573 break;
3574 case AV_PIX_FMT_GBRP10MSBBE:
3575 case AV_PIX_FMT_GBRP10MSBLE:
3576 case AV_PIX_FMT_GBRP12MSBBE:
3577 case AV_PIX_FMT_GBRP12MSBLE:
3578 *yuv2anyX = yuv2gbrpmsb_full_X_c;
3579 break;
3463 case AV_PIX_FMT_GBRP16BE:3580 case AV_PIX_FMT_GBRP16BE:
3464 case AV_PIX_FMT_GBRP16LE:3581 case AV_PIX_FMT_GBRP16LE:
3465 case AV_PIX_FMT_GBRAP16BE:3582 case AV_PIX_FMT_GBRAP16BE:
libswscale/ppc/swscale_altivec.c+1−1
@@ -242,7 +242,7 @@ av_cold void ff_sws_init_swscale_ppc(SwsInternal *c) · 241 unmodified lines
242 if (c->srcBpc == 8 && c->dstBpc <= 14) {242 if (c->srcBpc == 8 && c->dstBpc <= 14) {
243 c->hyScale = c->hcScale = hScale_real_altivec;243 c->hyScale = c->hcScale = hScale_real_altivec;
244 }244 }
245 if (!is16BPS(dstFormat) && !isNBPS(dstFormat) && !isSemiPlanarYUV(dstFormat) &&245 if (!is16BPS(dstFormat) && !isNBPS(dstFormat) && !isSemiPlanarYUV(dstFormat) && !isDataInHighBits(dstFormat) &&
246 dstFormat != AV_PIX_FMT_GRAYF32BE && dstFormat != AV_PIX_FMT_GRAYF32LE &&246 dstFormat != AV_PIX_FMT_GRAYF32BE && dstFormat != AV_PIX_FMT_GRAYF32LE &&
247 !c->needAlpha) {247 !c->needAlpha) {
248 c->yuv2planeX = yuv2planeX_altivec;248 c->yuv2planeX = yuv2planeX_altivec;
libswscale/ppc/swscale_vsx.c+1−1
@@ -2041,7 +2041,7 @@ av_cold void ff_sws_init_swscale_vsx(SwsInternal *c) · 2040 unmodified lines
2041 : hScale16To15_vsx;2041 : hScale16To15_vsx;
2042 }2042 }
2043 }2043 }
2044 if (!is16BPS(dstFormat) && !isNBPS(dstFormat) && !isSemiPlanarYUV(dstFormat) &&2044 if (!is16BPS(dstFormat) && !isNBPS(dstFormat) && !isSemiPlanarYUV(dstFormat) && !isDataInHighBits(dstFormat) &&
2045 dstFormat != AV_PIX_FMT_GRAYF32BE && dstFormat != AV_PIX_FMT_GRAYF32LE &&2045 dstFormat != AV_PIX_FMT_GRAYF32BE && dstFormat != AV_PIX_FMT_GRAYF32LE &&
2046 !c->needAlpha) {2046 !c->needAlpha) {
2047 c->yuv2planeX = yuv2planeX_vsx;2047 c->yuv2planeX = yuv2planeX_vsx;
libswscale/swscale_unscaled.c+5−1
@@ -2567,6 +2567,8 @@ void ff_get_unscaled_swscale(SwsInternal *c) · 2566 unmodified lines
2567 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRP12) ||2567 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRP12) ||
2568 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRP14) ||2568 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRP14) ||
2569 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRP16) ||2569 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRP16) ||
2570 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRP10MSB) ||
2571 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRP12MSB) ||
2570 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRAP10) ||2572 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRAP10) ||
2571 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRAP12) ||2573 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRAP12) ||
2572 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRAP14) ||2574 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRAP14) ||
@@ -2595,7 +2597,9 @@ void ff_get_unscaled_swscale(SwsInternal *c) · 22 unmodified lines
2595 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV444P10) ||2597 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV444P10) ||
2596 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV444P12) ||2598 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV444P12) ||
2597 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV444P14) ||2599 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV444P14) ||
2598 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV444P16))2600 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV444P16) ||
2601 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV444P10MSB) ||
2602 IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV444P12MSB))
2599 c->convert_unscaled = bswap_16bpc;2603 c->convert_unscaled = bswap_16bpc;
2600 2604
2601 /* bswap 32 bits per pixel/component formats */2605 /* bswap 32 bits per pixel/component formats */
libswscale/tests/floatimg_cmp.c+2−0
@@ -42,6 +42,7 @@ static const enum AVPixelFormat pix_fmts[] = { · 41 unmodified lines
42 AV_PIX_FMT_YUV444P,42 AV_PIX_FMT_YUV444P,
43 AV_PIX_FMT_YUV444P9LE, AV_PIX_FMT_YUV444P10LE,43 AV_PIX_FMT_YUV444P9LE, AV_PIX_FMT_YUV444P10LE,
44 AV_PIX_FMT_YUV444P12LE, AV_PIX_FMT_YUV444P14LE,44 AV_PIX_FMT_YUV444P12LE, AV_PIX_FMT_YUV444P14LE,
45 AV_PIX_FMT_YUV444P10MSBLE, AV_PIX_FMT_YUV444P12MSBLE,
45 AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24,46 AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24,
46 AV_PIX_FMT_RGBA, AV_PIX_FMT_BGRA,47 AV_PIX_FMT_RGBA, AV_PIX_FMT_BGRA,
47 AV_PIX_FMT_ARGB, AV_PIX_FMT_ABGR,48 AV_PIX_FMT_ARGB, AV_PIX_FMT_ABGR,
@@ -52,6 +53,7 @@ static const enum AVPixelFormat pix_fmts[] = { · 4 unmodified lines
52 AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRAP,53 AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRAP,
53 AV_PIX_FMT_GBRP9LE,54 AV_PIX_FMT_GBRP9LE,
54 AV_PIX_FMT_GBRP10LE, AV_PIX_FMT_GBRAP10LE,55 AV_PIX_FMT_GBRP10LE, AV_PIX_FMT_GBRAP10LE,
56 AV_PIX_FMT_GBRP10MSBLE, AV_PIX_FMT_GBRP12MSBLE,
55 AV_PIX_FMT_GBRP12LE, AV_PIX_FMT_GBRAP12LE,57 AV_PIX_FMT_GBRP12LE, AV_PIX_FMT_GBRAP12LE,
56 AV_PIX_FMT_GBRP14LE,58 AV_PIX_FMT_GBRP14LE,
57 AV_PIX_FMT_GBRP16LE, AV_PIX_FMT_GBRAP16LE59 AV_PIX_FMT_GBRP16LE, AV_PIX_FMT_GBRAP16LE
libswscale/utils.c+2−0
@@ -1334,8 +1334,10 @@ av_cold int ff_sws_init_single_context(SwsContext *sws, SwsFilter *srcFilter, · 1333 unmodified lines
1334 srcFormat != AV_PIX_FMT_RGB4_BYTE && srcFormat != AV_PIX_FMT_BGR4_BYTE &&1334 srcFormat != AV_PIX_FMT_RGB4_BYTE && srcFormat != AV_PIX_FMT_BGR4_BYTE &&
1335 srcFormat != AV_PIX_FMT_GBRP9BE && srcFormat != AV_PIX_FMT_GBRP9LE &&1335 srcFormat != AV_PIX_FMT_GBRP9BE && srcFormat != AV_PIX_FMT_GBRP9LE &&
1336 srcFormat != AV_PIX_FMT_GBRP10BE && srcFormat != AV_PIX_FMT_GBRP10LE &&1336 srcFormat != AV_PIX_FMT_GBRP10BE && srcFormat != AV_PIX_FMT_GBRP10LE &&
1337 srcFormat != AV_PIX_FMT_GBRP10MSBBE && srcFormat != AV_PIX_FMT_GBRP10MSBLE &&
1337 srcFormat != AV_PIX_FMT_GBRAP10BE && srcFormat != AV_PIX_FMT_GBRAP10LE &&1338 srcFormat != AV_PIX_FMT_GBRAP10BE && srcFormat != AV_PIX_FMT_GBRAP10LE &&
1338 srcFormat != AV_PIX_FMT_GBRP12BE && srcFormat != AV_PIX_FMT_GBRP12LE &&1339 srcFormat != AV_PIX_FMT_GBRP12BE && srcFormat != AV_PIX_FMT_GBRP12LE &&
1340 srcFormat != AV_PIX_FMT_GBRP12MSBBE && srcFormat != AV_PIX_FMT_GBRP12MSBLE &&
1339 srcFormat != AV_PIX_FMT_GBRAP12BE && srcFormat != AV_PIX_FMT_GBRAP12LE &&1341 srcFormat != AV_PIX_FMT_GBRAP12BE && srcFormat != AV_PIX_FMT_GBRAP12LE &&
1340 srcFormat != AV_PIX_FMT_GBRAP14BE && srcFormat != AV_PIX_FMT_GBRAP14LE &&1342 srcFormat != AV_PIX_FMT_GBRAP14BE && srcFormat != AV_PIX_FMT_GBRAP14LE &&
1341 srcFormat != AV_PIX_FMT_GBRP14BE && srcFormat != AV_PIX_FMT_GBRP14LE &&1343 srcFormat != AV_PIX_FMT_GBRP14BE && srcFormat != AV_PIX_FMT_GBRP14LE &&
libswscale/x86/swscale.c+2−2
@@ -543,14 +543,14 @@ av_cold void ff_sws_init_swscale_x86(SwsInternal *c) · 542 unmodified lines
543#define ASSIGN_VSCALEX_FUNC(vscalefn, opt, do_16_case, condition_8bit) \543#define ASSIGN_VSCALEX_FUNC(vscalefn, opt, do_16_case, condition_8bit) \
544switch(c->dstBpc){ \544switch(c->dstBpc){ \
545 case 16: do_16_case; break; \545 case 16: do_16_case; break; \
546 case 10: if (!isBE(c->opts.dst_format) && !isSemiPlanarYUV(c->opts.dst_format)) vscalefn = ff_yuv2planeX_10_ ## opt; break; \546 case 10: if (!isBE(c->opts.dst_format) && !isSemiPlanarYUV(c->opts.dst_format) && !isDataInHighBits(c->opts.dst_format)) vscalefn = ff_yuv2planeX_10_ ## opt; break; \
547 case 9: if (!isBE(c->opts.dst_format)) vscalefn = ff_yuv2planeX_9_ ## opt; break; \547 case 9: if (!isBE(c->opts.dst_format)) vscalefn = ff_yuv2planeX_9_ ## opt; break; \
548 case 8: if ((condition_8bit) && !c->use_mmx_vfilter) vscalefn = ff_yuv2planeX_8_ ## opt; break; \548 case 8: if ((condition_8bit) && !c->use_mmx_vfilter) vscalefn = ff_yuv2planeX_8_ ## opt; break; \
549 }549 }
550#define ASSIGN_VSCALE_FUNC(vscalefn, opt) \550#define ASSIGN_VSCALE_FUNC(vscalefn, opt) \
551 switch(c->dstBpc){ \551 switch(c->dstBpc){ \
552 case 16: if (!isBE(c->opts.dst_format)) vscalefn = ff_yuv2plane1_16_ ## opt; break; \552 case 16: if (!isBE(c->opts.dst_format)) vscalefn = ff_yuv2plane1_16_ ## opt; break; \
553 case 10: if (!isBE(c->opts.dst_format) && !isSemiPlanarYUV(c->opts.dst_format)) vscalefn = ff_yuv2plane1_10_ ## opt; break; \553 case 10: if (!isBE(c->opts.dst_format) && !isSemiPlanarYUV(c->opts.dst_format) && !isDataInHighBits(c->opts.dst_format)) vscalefn = ff_yuv2plane1_10_ ## opt; break; \
554 case 9: if (!isBE(c->opts.dst_format)) vscalefn = ff_yuv2plane1_9_ ## opt; break; \554 case 9: if (!isBE(c->opts.dst_format)) vscalefn = ff_yuv2plane1_9_ ## opt; break; \
555 case 8: vscalefn = ff_yuv2plane1_8_ ## opt; break; \555 case 8: vscalefn = ff_yuv2plane1_8_ ## opt; break; \
556 default: av_assert0(c->dstBpc>8); \556 default: av_assert0(c->dstBpc>8); \
tests/ref/fate/filter-pixdesc-gbrp10msbbe+1−0
@@ -0,0 +1 @@
1pixdesc-gbrp10msbbe fc1a397ca61a80383b134d902cd4ae24
tests/ref/fate/filter-pixdesc-gbrp10msble+1−0
@@ -0,0 +1 @@
1pixdesc-gbrp10msble 1acc24b493137f465be216a4d3eee77a
tests/ref/fate/filter-pixdesc-gbrp12msbbe+1−0
@@ -0,0 +1 @@
1pixdesc-gbrp12msbbe 6bd47ffb08879dcd69c0ee86bee3600a
tests/ref/fate/filter-pixdesc-gbrp12msble+1−0
@@ -0,0 +1 @@
1pixdesc-gbrp12msble 9ba8fe8131c643f49c5522a56449a40b
tests/ref/fate/filter-pixdesc-yuv444p10msbbe+1−0
@@ -0,0 +1 @@
1pixdesc-yuv444p10msbbeff1c8fa25341156ee539790dc8c34efd
tests/ref/fate/filter-pixdesc-yuv444p10msble+1−0
@@ -0,0 +1 @@
1pixdesc-yuv444p10msbled250ae9fc413980fbbd846460bb8d616
tests/ref/fate/filter-pixdesc-yuv444p12msbbe+1−0
@@ -0,0 +1 @@
1pixdesc-yuv444p12msbbe7a306f73ba8c35c04405c5568219e87b
tests/ref/fate/filter-pixdesc-yuv444p12msble+1−0
@@ -0,0 +1 @@
1pixdesc-yuv444p12msble618b9bafd6bf66ffd1265b1d611380b7
tests/ref/fate/filter-pixfmts-copy+8−0
@@ -34,8 +34,12 @@ gbrapf32le 1ac76b9418062a95e5c62da3ba1c8c5a · 33 unmodified lines
34gbrp 5fbc319e30110d19d539f5b274eddb6d34gbrp 5fbc319e30110d19d539f5b274eddb6d
35gbrp10be 703a17591a2a5c236675c5101c349bcc35gbrp10be 703a17591a2a5c236675c5101c349bcc
36gbrp10le ee014153f55c011918df5b239481578036gbrp10le ee014153f55c011918df5b2394815780
37gbrp10msbbe 2fcce5d0a33eb93bc1065a46b77696ee
38gbrp10msble eb68e8a797a8aa8d69d3b896013e1290
37gbrp12be 527d337eb5813ebba7cf969ee660d42339gbrp12be 527d337eb5813ebba7cf969ee660d423
38gbrp12le fd192920b171a0cf88d61e8310e95d8140gbrp12le fd192920b171a0cf88d61e8310e95d81
41gbrp12msbbe 73ea99e86472f0c047dce85fa76dd428
42gbrp12msble 102df5b20bb722c391dd1ab6ec9953a3
39gbrp14be 46d502db6dc5eb7e9da3c60016b2df9143gbrp14be 46d502db6dc5eb7e9da3c60016b2df91
40gbrp14le 1607f5c8f13360b53b8186f523996b1b44gbrp14le 1607f5c8f13360b53b8186f523996b1b
41gbrp16be 7b6764a504c853b09f5c7d0b2223c5a445gbrp16be 7b6764a504c853b09f5c7d0b2223c5a4
@@ -153,8 +157,12 @@ yuv440p12le 2fff7746ae7c07d407075c0e372baf46 · 111 unmodified lines
153yuv444p 8f90fb3a757878c545a8bfe5d19a9bab157yuv444p 8f90fb3a757878c545a8bfe5d19a9bab
154yuv444p10be 6683d5cb82c708d5f3a2a89d0311f7a4158yuv444p10be 6683d5cb82c708d5f3a2a89d0311f7a4
155yuv444p10le 6d736fa464ff2de2b07e0a56af8444b7159yuv444p10le 6d736fa464ff2de2b07e0a56af8444b7
160yuv444p10msbbe 9542f394ed36ff084bbcc09883d24cac
161yuv444p10msble bf8b831e6d6bf8bc5c2e9609fa98b01e
156yuv444p12be 04320ad158450ee158f84a27c6325702162yuv444p12be 04320ad158450ee158f84a27c6325702
157yuv444p12le 08a81b2ea9c7c8b447e40ef8f4a46a4a163yuv444p12le 08a81b2ea9c7c8b447e40ef8f4a46a4a
164yuv444p12msbbe 5bd7623158e0bc62edb900821ce2df72
165yuv444p12msble 425731663df58c875319a0b02f4ab4cc
158yuv444p14be ea3057d469d0c49c24e844256ef7871e166yuv444p14be ea3057d469d0c49c24e844256ef7871e
159yuv444p14le 940f5908ccf06e01411f0a7bddb45c6a167yuv444p14le 940f5908ccf06e01411f0a7bddb45c6a
160yuv444p16be aee24ab2e9a4656f889399f1b0d98639168yuv444p16be aee24ab2e9a4656f889399f1b0d98639
tests/ref/fate/filter-pixfmts-crop+8−0
@@ -34,8 +34,12 @@ gbrapf32le 34875869f093bddf94f14c8542eca9f0 · 33 unmodified lines
34gbrp ec671f573c2105072ab68a1933c58fee34gbrp ec671f573c2105072ab68a1933c58fee
35gbrp10be 6f0130a41f01e58593d3840446dd94b735gbrp10be 6f0130a41f01e58593d3840446dd94b7
36gbrp10le 9c152b7dfb7ad7bc477518d97316d04f36gbrp10le 9c152b7dfb7ad7bc477518d97316d04f
37gbrp10msbbe 2bdde24ebec8d80aafa08352965cdf6d
38gbrp10msble f500f798cc5469b9ba30fb48e584b51a
37gbrp12be 561516202a6e37dd19543f9bb3af339f39gbrp12be 561516202a6e37dd19543f9bb3af339f
38gbrp12le 3e7f87d834748844ab326e22eb2b748740gbrp12le 3e7f87d834748844ab326e22eb2b7487
41gbrp12msbbe 1fe5466eb3de5186d5cad87a30666dbf
42gbrp12msble 2c0d510341e757861f3a85899f04e52c
39gbrp14be 057232bca98c472a003cc46b3fd939e443gbrp14be 057232bca98c472a003cc46b3fd939e4
40gbrp14le d4764dba3c3efd1263c2c8e0f5ac9f6a44gbrp14le d4764dba3c3efd1263c2c8e0f5ac9f6a
41gbrp16be 59e4c27ee33520e23dbceafbec27aa9b45gbrp16be 59e4c27ee33520e23dbceafbec27aa9b
@@ -147,8 +151,12 @@ yuv440p12le 33c5cae9acde262b194efdf78ad44258 · 105 unmodified lines
147yuv444p 28166fdead6f87f57f4c77156dce0466151yuv444p 28166fdead6f87f57f4c77156dce0466
148yuv444p10be 2c9b7f39c006b68d6b53791472ade1d5152yuv444p10be 2c9b7f39c006b68d6b53791472ade1d5
149yuv444p10le 8427e65a1608ff8c5c88492f4926f6c1153yuv444p10le 8427e65a1608ff8c5c88492f4926f6c1
154yuv444p10msbbe bc2c25584af692ea8a43a931bb1afddb
155yuv444p10msble 6ec78c600f77619c2b9c3b5ab365be26
150yuv444p12be 6e1f91ed1c6fc42fbc912d7d3aed0aca156yuv444p12be 6e1f91ed1c6fc42fbc912d7d3aed0aca
151yuv444p12le 6a674498003ca57c8c2700b7d0ecb290157yuv444p12le 6a674498003ca57c8c2700b7d0ecb290
158yuv444p12msbbe 96df9462a4b5ac0c9d428f3be4932723
159yuv444p12msble 65cbf6aae7b3124643655e2305150b08
152yuv444p14be bb07382a868b35875b771b37dd234605160yuv444p14be bb07382a868b35875b771b37dd234605
153yuv444p14le f8f6e6124bae7e95d0061b95bd64be66161yuv444p14le f8f6e6124bae7e95d0061b95bd64be66
154yuv444p16be 25b9244db531ccab7095a44b3115032d162yuv444p16be 25b9244db531ccab7095a44b3115032d
tests/ref/fate/filter-pixfmts-field+8−0
@@ -34,8 +34,12 @@ gbrapf32le 401239fe76ef69d945f1d2c8efd116e9 · 33 unmodified lines
34gbrp 838025a3062f7f31e99196ce66961ad734gbrp 838025a3062f7f31e99196ce66961ad7
35gbrp10be f63c2555ea19fc78b00fd5b3e2b48e8c35gbrp10be f63c2555ea19fc78b00fd5b3e2b48e8c
36gbrp10le be64c374ab318235d912372e99a0516a36gbrp10le be64c374ab318235d912372e99a0516a
37gbrp10msbbe e7a069412732d633b104b6c2d93469f9
38gbrp10msble 36f3476db6bb05fd8cdce9ef84a2f58c
37gbrp12be ef164a1c062dc3572c61b9ef10897ca139gbrp12be ef164a1c062dc3572c61b9ef10897ca1
38gbrp12le 0527fdb6f75b1cb0d380809eb7a7589a40gbrp12le 0527fdb6f75b1cb0d380809eb7a7589a
41gbrp12msbbe 1e92a3cbeec6bd487a7d7577baf36756
42gbrp12msble 38762c94d7e55c6010e93794f14ff332
39gbrp14be 6aff3ad388e2ed97d59b71a75029746d43gbrp14be 6aff3ad388e2ed97d59b71a75029746d
40gbrp14le ed9ccbc7a4f3e269a2ec37d210359fd844gbrp14le ed9ccbc7a4f3e269a2ec37d210359fd8
41gbrp16be 020eff1626415ea726c55b23162ce59a45gbrp16be 020eff1626415ea726c55b23162ce59a
@@ -153,8 +157,12 @@ yuv440p12le a529385f94a4d46fa339746693975d99 · 111 unmodified lines
153yuv444p 389eda40a7a3bd5d3b280b448e99f27e157yuv444p 389eda40a7a3bd5d3b280b448e99f27e
154yuv444p10be 80b1cf057149a1f7dfae1da061e00523158yuv444p10be 80b1cf057149a1f7dfae1da061e00523
155yuv444p10le cdd8ba90dfc7689e0771dc36a70db433159yuv444p10le cdd8ba90dfc7689e0771dc36a70db433
160yuv444p10msbbe b0a75c6c59d96707a41ce4990314f36f
161yuv444p10msble e306771f12f7885907689e63ba29a5c2
156yuv444p12be caaa959ed39a74dcec478f23690f5ffc162yuv444p12be caaa959ed39a74dcec478f23690f5ffc
157yuv444p12le a7965a51a2e45723f650d1313f2aa356163yuv444p12le a7965a51a2e45723f650d1313f2aa356
164yuv444p12msbbe 31ec6c32401562a8c9aaf168a6b37e1b
165yuv444p12msble d947a1e44481ea0ce7be8b30ae653497
158yuv444p14be 18a46dde1fafcc7bbc6ebb3fd6681e7c166yuv444p14be 18a46dde1fafcc7bbc6ebb3fd6681e7c
159yuv444p14le 90058811cf9c35a4ddfab367bea40c51167yuv444p14le 90058811cf9c35a4ddfab367bea40c51
160yuv444p16be 1ff6ee64bcc33be585712e86359430d5168yuv444p16be 1ff6ee64bcc33be585712e86359430d5
tests/ref/fate/filter-pixfmts-fieldorder+8−0
@@ -34,8 +34,12 @@ gbrapf32le f1c3079716d6ce7b629511ec1fcb98ad · 33 unmodified lines
34gbrp 506dea2fe492e985a396d1b11ccd8db334gbrp 506dea2fe492e985a396d1b11ccd8db3
35gbrp10be 55bbfe2d472780dcbadf3027778caa0e35gbrp10be 55bbfe2d472780dcbadf3027778caa0e
36gbrp10le 13a39077ab1b2c3b49afd3e250b84a7736gbrp10le 13a39077ab1b2c3b49afd3e250b84a77
37gbrp10msbbe 04a34ae25a510f4fcbd4aac80d332928
38gbrp10msble fe465d4e28c90f7bcf9670dbeec1be1f
37gbrp12be f1b59334c687a39ba076fe47e6ee951539gbrp12be f1b59334c687a39ba076fe47e6ee9515
38gbrp12le e64ab4d290eb10476db165054720173f40gbrp12le e64ab4d290eb10476db165054720173f
41gbrp12msbbe c68b09fd30cb609750c4f269bbd14433
42gbrp12msble 176a3655df3fd7cd7b4b89d579eaaee4
39gbrp14be b3806ade527ef7452c29106054946cd143gbrp14be b3806ade527ef7452c29106054946cd1
40gbrp14le b01b1a05d8de36f51a133d25102fe1f344gbrp14le b01b1a05d8de36f51a133d25102fe1f3
41gbrp16be f82e4bda468275f51becf70f3880be5245gbrp16be f82e4bda468275f51becf70f3880be52
@@ -125,8 +129,12 @@ yuv422p9le c9faffe2fcb2e30be5d792412b3550b0 · 83 unmodified lines
125yuv444p 1483374f69c4bbaf9252ce255fc84feb129yuv444p 1483374f69c4bbaf9252ce255fc84feb
126yuv444p10be 2e5caee508692869141bd9649cc17f64130yuv444p10be 2e5caee508692869141bd9649cc17f64
127yuv444p10le c0ceb41ad4c2ddc454f3fdb9cda2d8ad131yuv444p10le c0ceb41ad4c2ddc454f3fdb9cda2d8ad
132yuv444p10msbbe 9517db7eca363b4cfe19010026e9aca4
133yuv444p10msble b9fabe62f70e204da80ad182a6571b08
128yuv444p12be 8729565c21a9d8f1e7a87d81d0aa4a54134yuv444p12be 8729565c21a9d8f1e7a87d81d0aa4a54
129yuv444p12le d4786cb4b1e79b2af1493e01d685282f135yuv444p12le d4786cb4b1e79b2af1493e01d685282f
136yuv444p12msbbe ab6d3fe75b4bebb61ef8b3ee98e4c928
137yuv444p12msble 6db968972c964ad59e18572f1f983fdf
130yuv444p14be 33f1cf5233f57582618390ea337e83c6138yuv444p14be 33f1cf5233f57582618390ea337e83c6
131yuv444p14le 7d9fc358232488f671d663d27875f3c1139yuv444p14le 7d9fc358232488f671d663d27875f3c1
132yuv444p16be 779ea70979e735d3074fef0466792681140yuv444p16be 779ea70979e735d3074fef0466792681
tests/ref/fate/filter-pixfmts-hflip+8−0
@@ -34,8 +34,12 @@ gbrapf32le 7312701852fbceaeb53efce523bc75c0 · 33 unmodified lines
34gbrp 0ecfeca171ba3a1a2ff4e92f572b71cf34gbrp 0ecfeca171ba3a1a2ff4e92f572b71cf
35gbrp10be 774398c2f81757a536c094f16cfc541a35gbrp10be 774398c2f81757a536c094f16cfc541a
36gbrp10le e9a6434d691be541f789f850963da18136gbrp10le e9a6434d691be541f789f850963da181
37gbrp10msbbe e47a8437b5e8f706a0c3cb466ff6c514
38gbrp10msble 0238594ce7f88b52fc8e44af623269e9
37gbrp12be 13d819d869f8e84aadca57e21883030e39gbrp12be 13d819d869f8e84aadca57e21883030e
38gbrp12le 22046339442c155fbb9b02ceff5e1c1540gbrp12le 22046339442c155fbb9b02ceff5e1c15
41gbrp12msbbe 275a9cb088db06bb0446891d5bc1bc80
42gbrp12msble cd0b0fe250e9555e42ac00b94eda58c2
39gbrp14be 7e1d2f9d9bb7cc90d88540f36998acd643gbrp14be 7e1d2f9d9bb7cc90d88540f36998acd6
40gbrp14le 91bb636f4e1f5d50312b136c185542e944gbrp14le 91bb636f4e1f5d50312b136c185542e9
41gbrp16be 46cf9473646a4b9dbcb05661ade658ec45gbrp16be 46cf9473646a4b9dbcb05661ade658ec
@@ -147,8 +151,12 @@ yuv440p12le 7aecbe06b7cd8c84d98af8cf3bb971e8 · 105 unmodified lines
147yuv444p 0bd726440d90438ad357172fe1fac9b3151yuv444p 0bd726440d90438ad357172fe1fac9b3
148yuv444p10be c2e452fbe45f23c70525919154f4b81f152yuv444p10be c2e452fbe45f23c70525919154f4b81f
149yuv444p10le 90140d5f930fb2ff750fe18df990d0f3153yuv444p10le 90140d5f930fb2ff750fe18df990d0f3
154yuv444p10msbbe f0f0e5ce513a34ff231b1a1607206ea5
155yuv444p10msble ceebcb2a4299b26b3518d2bdee2028ed
150yuv444p12be f858a8f0c55192ab69d356b97e0449bb156yuv444p12be f858a8f0c55192ab69d356b97e0449bb
151yuv444p12le 22f099dbae63e6564f06e1cc32683a4e157yuv444p12le 22f099dbae63e6564f06e1cc32683a4e
158yuv444p12msbbe 0f0acd39267d784e8a020886ac152369
159yuv444p12msble d9edd2a6b6ed3f5b8aba985eee895d09
152yuv444p14be be4727c283bb3af3327f7b9dc57e51b8160yuv444p14be be4727c283bb3af3327f7b9dc57e51b8
153yuv444p14le 289f4d6a3d60ba654e8280683825ee9a161yuv444p14le 289f4d6a3d60ba654e8280683825ee9a
154yuv444p16be acb6b001d445a628d1d0a2dfbeed078c162yuv444p16be acb6b001d445a628d1d0a2dfbeed078c
tests/ref/fate/filter-pixfmts-il+8−0
@@ -34,8 +34,12 @@ gbrapf32le a606da084e300d0e827a4d24ce18567b · 33 unmodified lines
34gbrp dc06edb62e70024a216c8e303b79b32834gbrp dc06edb62e70024a216c8e303b79b328
35gbrp10be 321e7f061d8b9b5801221b6cf3c9966635gbrp10be 321e7f061d8b9b5801221b6cf3c99666
36gbrp10le 799ed3afca01076439a0b6785b3dc4bb36gbrp10le 799ed3afca01076439a0b6785b3dc4bb
37gbrp10msbbe 0855479c918946f8755f25593612a74d
38gbrp10msble 92db82d585eb495d4cabc033ffdd2a59
37gbrp12be 7ca179ad8f7b018de48a48bdb077696539gbrp12be 7ca179ad8f7b018de48a48bdb0776965
38gbrp12le c69843651e7e60e85c5e8a2fe4ecb29040gbrp12le c69843651e7e60e85c5e8a2fe4ecb290
41gbrp12msbbe f499ec2f96f5d0d271371d4d2a94e3d8
42gbrp12msble 7e9f8e72a773c9098e6019f8bcd22e36
39gbrp14be 5dc5e8131c25125347758e03d15b69e643gbrp14be 5dc5e8131c25125347758e03d15b69e6
40gbrp14le bf3d5dec9b58cecd4ca1c5d3a4d57c3144gbrp14le bf3d5dec9b58cecd4ca1c5d3a4d57c31
41gbrp16be c8c95027703c680ed8f8f91c725db40a45gbrp16be c8c95027703c680ed8f8f91c725db40a
@@ -152,8 +156,12 @@ yuv440p12le 6f47a23742f5763f3240982e1892e4dc · 110 unmodified lines
152yuv444p bbd70cde098f24097c4cdcd3ad22d9ce156yuv444p bbd70cde098f24097c4cdcd3ad22d9ce
153yuv444p10be b0de51e143a5bd490c424dc836becfa8157yuv444p10be b0de51e143a5bd490c424dc836becfa8
154yuv444p10le 4435dca19253b88dc7cd553928467e79158yuv444p10le 4435dca19253b88dc7cd553928467e79
159yuv444p10msbbe a59dd07cb8a2785d2c92778ed12b1467
160yuv444p10msble 4212954799563435093093dcc68c97e4
155yuv444p12be 23f0ce3a810138df7849d4f6b5e50211161yuv444p12be 23f0ce3a810138df7849d4f6b5e50211
156yuv444p12le 0394aeef391e2cc09722ee8e7244f1c3162yuv444p12le 0394aeef391e2cc09722ee8e7244f1c3
163yuv444p12msbbe a8aa386b03e70ef376700a0e564be018
164yuv444p12msble c5cbe5f8ff3cc7b354d1c47e51716de9
157yuv444p14be c712cf9dbf8571fbd31fa747e58993ec165yuv444p14be c712cf9dbf8571fbd31fa747e58993ec
158yuv444p14le 3a0e361e5998f8590dd8ca8ce896cea1166yuv444p14le 3a0e361e5998f8590dd8ca8ce896cea1
159yuv444p16be 929c50756bfe8cab7c416f56095fbb82167yuv444p16be 929c50756bfe8cab7c416f56095fbb82
tests/ref/fate/filter-pixfmts-null+8−0
@@ -34,8 +34,12 @@ gbrapf32le 1ac76b9418062a95e5c62da3ba1c8c5a · 33 unmodified lines
34gbrp 5fbc319e30110d19d539f5b274eddb6d34gbrp 5fbc319e30110d19d539f5b274eddb6d
35gbrp10be 703a17591a2a5c236675c5101c349bcc35gbrp10be 703a17591a2a5c236675c5101c349bcc
36gbrp10le ee014153f55c011918df5b239481578036gbrp10le ee014153f55c011918df5b2394815780
37gbrp10msbbe 2fcce5d0a33eb93bc1065a46b77696ee
38gbrp10msble eb68e8a797a8aa8d69d3b896013e1290
37gbrp12be 527d337eb5813ebba7cf969ee660d42339gbrp12be 527d337eb5813ebba7cf969ee660d423
38gbrp12le fd192920b171a0cf88d61e8310e95d8140gbrp12le fd192920b171a0cf88d61e8310e95d81
41gbrp12msbbe 73ea99e86472f0c047dce85fa76dd428
42gbrp12msble 102df5b20bb722c391dd1ab6ec9953a3
39gbrp14be 46d502db6dc5eb7e9da3c60016b2df9143gbrp14be 46d502db6dc5eb7e9da3c60016b2df91
40gbrp14le 1607f5c8f13360b53b8186f523996b1b44gbrp14le 1607f5c8f13360b53b8186f523996b1b
41gbrp16be 7b6764a504c853b09f5c7d0b2223c5a445gbrp16be 7b6764a504c853b09f5c7d0b2223c5a4
@@ -153,8 +157,12 @@ yuv440p12le 2fff7746ae7c07d407075c0e372baf46 · 111 unmodified lines
153yuv444p 8f90fb3a757878c545a8bfe5d19a9bab157yuv444p 8f90fb3a757878c545a8bfe5d19a9bab
154yuv444p10be 6683d5cb82c708d5f3a2a89d0311f7a4158yuv444p10be 6683d5cb82c708d5f3a2a89d0311f7a4
155yuv444p10le 6d736fa464ff2de2b07e0a56af8444b7159yuv444p10le 6d736fa464ff2de2b07e0a56af8444b7
160yuv444p10msbbe 9542f394ed36ff084bbcc09883d24cac
161yuv444p10msble bf8b831e6d6bf8bc5c2e9609fa98b01e
156yuv444p12be 04320ad158450ee158f84a27c6325702162yuv444p12be 04320ad158450ee158f84a27c6325702
157yuv444p12le 08a81b2ea9c7c8b447e40ef8f4a46a4a163yuv444p12le 08a81b2ea9c7c8b447e40ef8f4a46a4a
164yuv444p12msbbe 5bd7623158e0bc62edb900821ce2df72
165yuv444p12msble 425731663df58c875319a0b02f4ab4cc
158yuv444p14be ea3057d469d0c49c24e844256ef7871e166yuv444p14be ea3057d469d0c49c24e844256ef7871e
159yuv444p14le 940f5908ccf06e01411f0a7bddb45c6a167yuv444p14le 940f5908ccf06e01411f0a7bddb45c6a
160yuv444p16be aee24ab2e9a4656f889399f1b0d98639168yuv444p16be aee24ab2e9a4656f889399f1b0d98639
tests/ref/fate/filter-pixfmts-pad+4−0
@@ -14,7 +14,9 @@ gbrap14le 4c8b549942e66f442de0f5c1d21e9b8e · 13 unmodified lines
14gbrap16le d0f6fc33cb75588327aec1b5ad6ab4f014gbrap16le d0f6fc33cb75588327aec1b5ad6ab4f0
15gbrp 3c94d39256db2409015df913fd330a9015gbrp 3c94d39256db2409015df913fd330a90
16gbrp10le 5b356737cd8a396f39bbdadb7cb35e0616gbrp10le 5b356737cd8a396f39bbdadb7cb35e06
17gbrp10msble 1eaff99273dcf52c7329b50dc3ef2d5a
17gbrp12le 91fdad0d1edf7bfa2805e2041e8da3cd18gbrp12le 91fdad0d1edf7bfa2805e2041e8da3cd
19gbrp12msble c91d235f99d54bdd819e1e9218287ae3
18gbrp14le deb2c3af6b48faa52f6a1f6590a0cdf720gbrp14le deb2c3af6b48faa52f6a1f6590a0cdf7
19gbrp16le a6156d1a37e05ee621b2a343fb158bd621gbrp16le a6156d1a37e05ee621b2a343fb158bd6
20gbrp9le 9e827f438e081d334a6cae7e282698b022gbrp9le 9e827f438e081d334a6cae7e282698b0
@@ -68,7 +70,9 @@ yuv440p10le 55787c7260462e50e96f316856adf9dc · 47 unmodified lines
68yuv440p12le 869d3d9e0e12df253b79949d2b2c056170yuv440p12le 869d3d9e0e12df253b79949d2b2c0561
69yuv444p 6bfd89286dc36f2789b77d747ed8fa2271yuv444p 6bfd89286dc36f2789b77d747ed8fa22
70yuv444p10le ac3142be3d7b0ec4c1e4450cb8c376ef72yuv444p10le ac3142be3d7b0ec4c1e4450cb8c376ef
73yuv444p10msble 438ae33282dca61f5bab0386271519fb
71yuv444p12le 4c7f29501e46f4d041222536697941d074yuv444p12le 4c7f29501e46f4d041222536697941d0
75yuv444p12msble 0de8b60a01aeee8df55ec3f0f4285219
72yuv444p14le 13631aa3ecc332aee3b3360db45011c976yuv444p14le 13631aa3ecc332aee3b3360db45011c9
73yuv444p16le 613ec343b593dda43af15f015c193d0a77yuv444p16le 613ec343b593dda43af15f015c193d0a
74yuv444p9le 96fa344943468b5cd36be92b1c05f17f78yuv444p9le 96fa344943468b5cd36be92b1c05f17f
tests/ref/fate/filter-pixfmts-scale+8−0
@@ -34,8 +34,12 @@ gbrapf32le 9e32cc5fc7b487ea94b9f440d645040d · 33 unmodified lines
34gbrp dc3387f925f972c61aae7eb23cdc19f034gbrp dc3387f925f972c61aae7eb23cdc19f0
35gbrp10be a318ea42e53a7b80a55aa7c19c9a0ab535gbrp10be a318ea42e53a7b80a55aa7c19c9a0ab5
36gbrp10le 994e8fc6a1e5b230f4c55893fd7618d636gbrp10le 994e8fc6a1e5b230f4c55893fd7618d6
37gbrp10msbbe 045c5f8af6dafc1ceb06cfe3181c3ee9
38gbrp10msble 8c74e50b03a0cb475145e83d0d15110b
37gbrp12be bfbd419dd18c0a5677d4bce55ab24e2e39gbrp12be bfbd419dd18c0a5677d4bce55ab24e2e
38gbrp12le 95af1f8495b2a7a7ad67802e3e8bca0140gbrp12le 95af1f8495b2a7a7ad67802e3e8bca01
41gbrp12msbbe 69c01758aa175918b27e3de5b488b2ee
42gbrp12msble 907712bd8af9e3e39b1881b26273b7d1
39gbrp14be 9d8113c9a5182c02dbe4576509f59a9643gbrp14be 9d8113c9a5182c02dbe4576509f59a96
40gbrp14le 952f39881e500ed684c8b216185f4b8044gbrp14le 952f39881e500ed684c8b216185f4b80
41gbrp16be 5241eee3465096efa111b86b30c3aaaa45gbrp16be 5241eee3465096efa111b86b30c3aaaa
@@ -153,8 +157,12 @@ yuv440p12le bb9ffc3033fe32b9ce3233524ed5ab70 · 111 unmodified lines
153yuv444p 098f01e6790e1e6beff8d604120c2664157yuv444p 098f01e6790e1e6beff8d604120c2664
154yuv444p10be 024ee33cac7b5b7b225d7acb9dc59da3158yuv444p10be 024ee33cac7b5b7b225d7acb9dc59da3
155yuv444p10le a085fff2fb81d76753da689aee365b55159yuv444p10le a085fff2fb81d76753da689aee365b55
160yuv444p10msbbe 39e20d08b28c3c3a63978e427d7567fe
161yuv444p10msble e49af28d1827e757d725433c4c8bf571
156yuv444p12be a181627b93bd9c4c384b83e17d373a7c162yuv444p12be a181627b93bd9c4c384b83e17d373a7c
157yuv444p12le 97e47326ff0efe89c295fd9ddb0ca854163yuv444p12le 97e47326ff0efe89c295fd9ddb0ca854
164yuv444p12msbbe 0fa425c7d9f5a7f7fe4933f4fe89dd6b
165yuv444p12msble 9439ab6089e6ad3102b878124f1de98e
158yuv444p14be 3eac31f0d4969210640de74914faf86d166yuv444p14be 3eac31f0d4969210640de74914faf86d
159yuv444p14le 2c362c4cf167b7e2d83f4eb0dfaeb2b9167yuv444p14le 2c362c4cf167b7e2d83f4eb0dfaeb2b9
160yuv444p16be a60c674411d64cc4b9fbf17039afffb3168yuv444p16be a60c674411d64cc4b9fbf17039afffb3
tests/ref/fate/filter-pixfmts-transpose+8−0
@@ -34,8 +34,12 @@ gbrapf32le d6589fe7935cbb69d8253f8b8c4ffba8 · 33 unmodified lines
34gbrp 7b4b6a2f1cdc51455b25515c3ecea94434gbrp 7b4b6a2f1cdc51455b25515c3ecea944
35gbrp10be d7401725699b2ddf954caa16a0878a1e35gbrp10be d7401725699b2ddf954caa16a0878a1e
36gbrp10le 6036711969eae1979be6358f688bd9c836gbrp10le 6036711969eae1979be6358f688bd9c8
37gbrp10msbbe 7190df78d1e5e6566e2a74c079b01166
38gbrp10msble 449752ca51481baf440e425b1f0d3b63
37gbrp12be ec7d6e69fc579619b53d57a76c20480d39gbrp12be ec7d6e69fc579619b53d57a76c20480d
38gbrp12le bf7478185274486c3f7dd4db1da8f7d040gbrp12le bf7478185274486c3f7dd4db1da8f7d0
41gbrp12msbbe 592e689e057d8cdc3c628fd4242dc8e7
42gbrp12msble 51b3ebaed490b7fafdcc7801854d05e5
39gbrp14be 9b66f22e4315aaa878a430ae3f44ab5743gbrp14be 9b66f22e4315aaa878a430ae3f44ab57
40gbrp14le 16f30349b42dca007b37b8522d3018df44gbrp14le 16f30349b42dca007b37b8522d3018df
41gbrp16be 0d003b88d4f446ae9ba12cab1cbb359a45gbrp16be 0d003b88d4f446ae9ba12cab1cbb359a
@@ -120,8 +124,12 @@ yuv420p9le c735c3c8424c70d822ab4a1fe1f504e2 · 78 unmodified lines
120yuv444p eb755977ca464baac5f03771858080ae124yuv444p eb755977ca464baac5f03771858080ae
121yuv444p10be 866b59a23dff3dc1cb6bf7bd7da26da4125yuv444p10be 866b59a23dff3dc1cb6bf7bd7da26da4
122yuv444p10le 417d62f15abf4777c4ec5e0d00796a9e126yuv444p10le 417d62f15abf4777c4ec5e0d00796a9e
127yuv444p10msbbe 4a6927682c82ccfeca7110b844b71dbd
128yuv444p10msble c408c6cfbd6426e048a2cd07376667d8
123yuv444p12be c1da110f0ee898fbcd4b45afb5aed58b129yuv444p12be c1da110f0ee898fbcd4b45afb5aed58b
124yuv444p12le dc18bddd7b6bb9fdb2e0c7e7476375fa130yuv444p12le dc18bddd7b6bb9fdb2e0c7e7476375fa
131yuv444p12msbbe 5344c6d57563cec818fd5219c6867393
132yuv444p12msble b63edb22546b649550ae5cfd99a0acaf
125yuv444p14be 2f181fa3403e7911b233d3d976abea73133yuv444p14be 2f181fa3403e7911b233d3d976abea73
126yuv444p14le ac718343878786a25b9a50924f9aabca134yuv444p14le ac718343878786a25b9a50924f9aabca
127yuv444p16be 128214efef6fffe3293db513ae700d4a135yuv444p16be 128214efef6fffe3293db513ae700d4a
tests/ref/fate/filter-pixfmts-vflip+8−0
@@ -34,8 +34,12 @@ gbrapf32le 463ffd7ce416d476816e080f971c42ba · 33 unmodified lines
34gbrp 413b0f6ea51588d4be5f0c76d43d879634gbrp 413b0f6ea51588d4be5f0c76d43d8796
35gbrp10be d02bd50db83213667808f5bacefe667c35gbrp10be d02bd50db83213667808f5bacefe667c
36gbrp10le 2d4a5ebc773ffc3d857a6ef24afbe10e36gbrp10le 2d4a5ebc773ffc3d857a6ef24afbe10e
37gbrp10msbbe 362763bdeea3eafbbc82c3ded025f7fd
38gbrp10msble 46917c0a92e63c39f1d6b17622c0fcc3
37gbrp12be a668b7dba68817736501386ffe9f3adc39gbrp12be a668b7dba68817736501386ffe9f3adc
38gbrp12le 299695016c22a4947d94b16f0975536b40gbrp12le 299695016c22a4947d94b16f0975536b
41gbrp12msbbe 458871692a07fd2df3b6213fd2c7dced
42gbrp12msble b1dae2c7003d628deb1cc988090a0686
39gbrp14be eeebacfb19c970dd76ad044ef85e8fe543gbrp14be eeebacfb19c970dd76ad044ef85e8fe5
40gbrp14le 6e93b87047e433995111eb5397751c3f44gbrp14le 6e93b87047e433995111eb5397751c3f
41gbrp16be 3fef87fe67bf1fd0e2f5056dc0db2ef445gbrp16be 3fef87fe67bf1fd0e2f5056dc0db2ef4
@@ -153,8 +157,12 @@ yuv440p12le 2a3adb4692391171c506cc0899d27511 · 111 unmodified lines
153yuv444p 7c8c5d138d732f4ca7d864b9ffef3047157yuv444p 7c8c5d138d732f4ca7d864b9ffef3047
154yuv444p10be faa81f737d465afcacef351818d34772158yuv444p10be faa81f737d465afcacef351818d34772
155yuv444p10le bfc5036e4ab0ab6da1416df4a462db74159yuv444p10le bfc5036e4ab0ab6da1416df4a462db74
160yuv444p10msbbe 730ba8d36068b509b32df698c1344aa0
161yuv444p10msble 89d73ff2b95deea904fc1de5884869d7
156yuv444p12be 6706d8807b9dd14d331a7e9572fd9c5d162yuv444p12be 6706d8807b9dd14d331a7e9572fd9c5d
157yuv444p12le 9bba33b2c0dd09f653a4c22d201142c5163yuv444p12le 9bba33b2c0dd09f653a4c22d201142c5
164yuv444p12msbbe 01f581dcf9b97f67cf8ea177e27eaf48
165yuv444p12msble 5dafe4e293007c2721ad107edc1dbf96
158yuv444p14be cf181f44988d3ddf4cc32b87ca473251166yuv444p14be cf181f44988d3ddf4cc32b87ca473251
159yuv444p14le 086322cb9a98eb91825c9bb2ad00eac7167yuv444p14le 086322cb9a98eb91825c9bb2ad00eac7
160yuv444p16be ee0721d7fda4a67bc6270a78fa361140168yuv444p16be ee0721d7fda4a67bc6270a78fa361140
tests/ref/fate/sws-floatimg-cmp+16−0
@@ -22,6 +22,14 @@ gbrpf32le -> yuv444p14le -> gbrpf32le · 21 unmodified lines
22avg diff: 0.00012722avg diff: 0.000127
23min diff: 0.00000023min diff: 0.000000
24max diff: 0.00052424max diff: 0.000524
25gbrpf32le -> yuv444p10msble -> gbrpf32le
26avg diff: 0.000467
27min diff: 0.000000
28max diff: 0.001912
29gbrpf32le -> yuv444p12msble -> gbrpf32le
30avg diff: 0.000166
31min diff: 0.000000
32max diff: 0.000802
25gbrpf32le -> rgb24 -> gbrpf32le33gbrpf32le -> rgb24 -> gbrpf32le
26avg diff: 0.00101134avg diff: 0.001011
27min diff: 0.00000035min diff: 0.000000
@@ -98,6 +106,14 @@ gbrpf32le -> gbrap10le -> gbrpf32le · 70 unmodified lines
98avg diff: 0.000350106avg diff: 0.000350
99min diff: 0.000000107min diff: 0.000000
100max diff: 0.001475108max diff: 0.001475
109gbrpf32le -> gbrp10msble -> gbrpf32le
110avg diff: 0.000350
111min diff: 0.000000
112max diff: 0.001475
113gbrpf32le -> gbrp12msble -> gbrpf32le
114avg diff: 0.000260
115min diff: 0.000000
116max diff: 0.001135
101gbrpf32le -> gbrp12le -> gbrpf32le117gbrpf32le -> gbrp12le -> gbrpf32le
102avg diff: 0.000260118avg diff: 0.000260
103min diff: 0.000000119min diff: 0.000000

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