diff options
author | wm4 <wm4@nowhere> | 2020-05-16 16:33:59 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2020-05-18 01:54:59 +0200 |
commit | 00ac63c37b18ef3e7fbe5c227eb10073b264a26a (patch) | |
tree | f8ffb8122311374971c44c9cb4b96e7cdd7a2e1f /test/repack.c | |
parent | c7b94c03f1c85f2da07ed9268119a54653b9b31c (diff) | |
download | mpv-00ac63c37b18ef3e7fbe5c227eb10073b264a26a.tar.bz2 mpv-00ac63c37b18ef3e7fbe5c227eb10073b264a26a.tar.xz |
test: explicitly test repacking for all packed RGB variants
This stuff is very annoying, so it's good to have full coverage.
Diffstat (limited to 'test/repack.c')
-rw-r--r-- | test/repack.c | 91 |
1 files changed, 86 insertions, 5 deletions
diff --git a/test/repack.c b/test/repack.c index 372bdbc045..4506233be1 100644 --- a/test/repack.c +++ b/test/repack.c @@ -28,6 +28,7 @@ struct entry { #define P8(...) (const uint8_t[]){__VA_ARGS__} #define P16(...) (const uint16_t[]){__VA_ARGS__} #define P32(...) (const uint32_t[]){__VA_ARGS__} +#define SW16(v) ((((v) & 0xFF) << 8) | ((v) >> 8)) // Warning: only entries that match existing conversions are tested. static const struct entry repack_tests[] = { @@ -50,12 +51,82 @@ static const struct entry repack_tests[] = { IMGFMT_GBRAP, {P8(2), P8(3), P8(1), P8(4)}}, {1, 1, IMGFMT_ABGR, {P8(4, 1, 2, 3)}, IMGFMT_GBRAP, {P8(2), P8(1), P8(3), P8(4)}}, + {1, 1, IMGFMT_BGR24, {P8(1, 2, 3)}, + IMGFMT_GBRP, {P8(2), P8(1), P8(3)}}, + {1, 1, IMGFMT_RGB24, {P8(1, 2, 3)}, + IMGFMT_GBRP, {P8(2), P8(3), P8(1)}}, {1, 1, IMGFMT_RGBA64, {P16(0x1a1b, 0x2a2b, 0x3a3b, 0x4a4b)}, -AV_PIX_FMT_GBRAP16, {P16(0x2a2b), P16(0x3a3b), P16(0x1a1b), P16(0x4a4b)}}, + {1, 1, -AV_PIX_FMT_BGRA64LE, {P16(0x1a1b, 0x2a2b, 0x3a3b, 0x4a4b)}, + -AV_PIX_FMT_GBRAP16, {P16(0x2a2b), P16(0x1a1b), + P16(0x3a3b), P16(0x4a4b)}}, + {1, 1, -AV_PIX_FMT_RGBA64BE, {P16(0x1b1a, 0x2b2a, 0x3b3a, 0x4b4a)}, + -AV_PIX_FMT_GBRAP16, {P16(0x2a2b), P16(0x3a3b), + P16(0x1a1b), P16(0x4a4b)}}, + {1, 1, -AV_PIX_FMT_BGRA64BE, {P16(0x1b1a, 0x2b2a, 0x3b3a, 0x4b4a)}, + -AV_PIX_FMT_GBRAP16, {P16(0x2a2b), P16(0x1a1b), + P16(0x3a3b), P16(0x4a4b)}}, {1, 1, -AV_PIX_FMT_RGB48BE, {P16(0x1a1b, 0x2a2b, 0x3a3b)}, - -AV_PIX_FMT_GBRP16, {P16(0x2b2a), P16(0x3b3a), - P16(0x1b1a)}}, + -AV_PIX_FMT_GBRP16, {P16(0x2b2a), P16(0x3b3a), P16(0x1b1a)}}, + {1, 1, -AV_PIX_FMT_RGB48LE, {P16(0x1a1b, 0x2a2b, 0x3a3b)}, + -AV_PIX_FMT_GBRP16, {P16(0x2a2b), P16(0x3a3b), P16(0x1a1b)}}, + {1, 1, -AV_PIX_FMT_BGR48BE, {P16(0x1a1b, 0x2a2b, 0x3a3b)}, + -AV_PIX_FMT_GBRP16, {P16(0x2b2a), P16(0x1b1a), P16(0x3b3a)}}, + {1, 1, -AV_PIX_FMT_BGR48LE, {P16(0x1a1b, 0x2a2b, 0x3a3b)}, + -AV_PIX_FMT_GBRP16, {P16(0x2a2b), P16(0x1a1b), P16(0x3a3b)}}, + {1, 1, -AV_PIX_FMT_XYZ12LE, {P16(0x1a1b, 0x2a2b, 0x3a3b)}, + -AV_PIX_FMT_GBRP16, {P16(0x2a2b), P16(0x3a3b), P16(0x1a1b)}}, + {1, 1, -AV_PIX_FMT_XYZ12BE, {P16(0x1b1a, 0x2b2a, 0x3b3a)}, + -AV_PIX_FMT_GBRP16, {P16(0x2a2b), P16(0x3a3b), P16(0x1a1b)}}, + {3, 1, -AV_PIX_FMT_BGR8, {P8(7, (7 << 3), (3 << 6))}, + IMGFMT_GBRP, {P8(0,0xFF,0), P8(0,0,0xFF), P8(0xFF,0,0)}, + .flags = REPACK_CREATE_EXPAND_8BIT}, + {3, 1, -AV_PIX_FMT_RGB8, {P8(3, (7 << 2), (7 << 5))}, + IMGFMT_GBRP, {P8(0,0xFF,0), P8(0xFF,0,0), P8(0,0,0xFF)}, + .flags = REPACK_CREATE_EXPAND_8BIT}, + {3, 1, -AV_PIX_FMT_BGR4_BYTE, {P8(1, (3 << 1), (1 << 3))}, + IMGFMT_GBRP, {P8(0,0xFF,0), P8(0,0,0xFF), P8(0xFF,0,0)}, + .flags = REPACK_CREATE_EXPAND_8BIT}, + {3, 1, -AV_PIX_FMT_RGB4_BYTE, {P8(1, (3 << 1), (1 << 3))}, + IMGFMT_GBRP, {P8(0,0xFF,0), P8(0xFF,0,0), P8(0,0,0xFF)}, + .flags = REPACK_CREATE_EXPAND_8BIT}, + {3, 1, -AV_PIX_FMT_RGB565LE, {P16((31), (63 << 5), (31 << 11))}, + IMGFMT_GBRP, {P8(0,0xFF,0), P8(0xFF,0,0), P8(0,0,0xFF)}, + .flags = REPACK_CREATE_EXPAND_8BIT}, + {3, 1, -AV_PIX_FMT_RGB565BE, {P16(SW16(31), SW16(63 << 5), SW16(31 << 11))}, + IMGFMT_GBRP, {P8(0,0xFF,0), P8(0xFF,0,0), P8(0,0,0xFF)}, + .flags = REPACK_CREATE_EXPAND_8BIT}, + {3, 1, -AV_PIX_FMT_BGR565LE, {P16((31), (63 << 5), (31 << 11))}, + IMGFMT_GBRP, {P8(0,0xFF,0), P8(0,0,0xFF), P8(0xFF,0,0)}, + .flags = REPACK_CREATE_EXPAND_8BIT}, + {3, 1, -AV_PIX_FMT_BGR565BE, {P16(SW16(31), SW16(63 << 5), SW16(31 << 11))}, + IMGFMT_GBRP, {P8(0,0xFF,0), P8(0,0,0xFF), P8(0xFF,0,0)}, + .flags = REPACK_CREATE_EXPAND_8BIT}, + {3, 1, -AV_PIX_FMT_RGB555LE, {P16((31), (31 << 5), (31 << 10))}, + IMGFMT_GBRP, {P8(0,0xFF,0), P8(0xFF,0,0), P8(0,0,0xFF)}, + .flags = REPACK_CREATE_EXPAND_8BIT}, + {3, 1, -AV_PIX_FMT_RGB555BE, {P16(SW16(31), SW16(31 << 5), SW16(31 << 10))}, + IMGFMT_GBRP, {P8(0,0xFF,0), P8(0xFF,0,0), P8(0,0,0xFF)}, + .flags = REPACK_CREATE_EXPAND_8BIT}, + {3, 1, -AV_PIX_FMT_BGR555LE, {P16((31), (31 << 5), (31 << 10))}, + IMGFMT_GBRP, {P8(0,0xFF,0), P8(0,0,0xFF), P8(0xFF,0,0)}, + .flags = REPACK_CREATE_EXPAND_8BIT}, + {3, 1, -AV_PIX_FMT_BGR555BE, {P16(SW16(31), SW16(31 << 5), SW16(31 << 10))}, + IMGFMT_GBRP, {P8(0,0xFF,0), P8(0,0,0xFF), P8(0xFF,0,0)}, + .flags = REPACK_CREATE_EXPAND_8BIT}, + {3, 1, -AV_PIX_FMT_RGB444LE, {P16((15), (15 << 4), (15 << 8))}, + IMGFMT_GBRP, {P8(0,0xFF,0), P8(0xFF,0,0), P8(0,0,0xFF)}, + .flags = REPACK_CREATE_EXPAND_8BIT}, + {3, 1, -AV_PIX_FMT_RGB444BE, {P16(SW16(15), SW16(15 << 4), SW16(15 << 8))}, + IMGFMT_GBRP, {P8(0,0xFF,0), P8(0xFF,0,0), P8(0,0,0xFF)}, + .flags = REPACK_CREATE_EXPAND_8BIT}, + {3, 1, -AV_PIX_FMT_BGR444LE, {P16((15), (15 << 4), (15 << 8))}, + IMGFMT_GBRP, {P8(0,0xFF,0), P8(0,0,0xFF), P8(0xFF,0,0)}, + .flags = REPACK_CREATE_EXPAND_8BIT}, + {3, 1, -AV_PIX_FMT_BGR444BE, {P16(SW16(15), SW16(15 << 4), SW16(15 << 8))}, + IMGFMT_GBRP, {P8(0,0xFF,0), P8(0,0,0xFF), P8(0xFF,0,0)}, + .flags = REPACK_CREATE_EXPAND_8BIT}, {1, 1, IMGFMT_RGB30, {P32((3 << 20) | (2 << 10) | 1)}, -AV_PIX_FMT_GBRP10, {P16(2), P16(1), P16(3)}}, {8, 1, -AV_PIX_FMT_MONOWHITE, {P8(0xAA)}, @@ -66,14 +137,24 @@ static const struct entry repack_tests[] = { IMGFMT_420P, {P8(1, 2, 3, 4), P8(5), P8(6)}}, {2, 2, -AV_PIX_FMT_NV21, {P8(1, 2, 3, 4), P8(5, 6)}, IMGFMT_420P, {P8(1, 2, 3, 4), P8(6), P8(5)}}, - {1, 1, -AV_PIX_FMT_AYUV64, {P16(1, 2, 3, 4)}, + {1, 1, -AV_PIX_FMT_AYUV64LE, {P16(1, 2, 3, 4)}, -AV_PIX_FMT_YUVA444P16, {P16(2), P16(3), P16(4), P16(1)}}, {1, 1, -AV_PIX_FMT_AYUV64BE, {P16(0x0100, 0x0200, 0x0300, 0x0400)}, -AV_PIX_FMT_YUVA444P16, {P16(2), P16(3), P16(4), P16(1)}}, + {2, 1, -AV_PIX_FMT_YUYV422, {P8(1, 2, 3, 4)}, + -AV_PIX_FMT_YUV422P, {P8(1, 3), P8(2), P8(4)}}, {2, 1, -AV_PIX_FMT_YVYU422, {P8(1, 2, 3, 4)}, -AV_PIX_FMT_YUV422P, {P8(1, 3), P8(4), P8(2)}}, - {1, 1, -AV_PIX_FMT_YA16, {P16(1, 2)}, - IMGFMT_YAP16, {P16(1), P16(2)}}, + {2, 1, -AV_PIX_FMT_UYVY422, {P8(1, 2, 3, 4)}, + -AV_PIX_FMT_YUV422P, {P8(2, 4), P8(1), P8(3)}}, + {2, 1, -AV_PIX_FMT_Y210LE, {P16(0x1a1b, 0x2a2b, 0x3a3b, 0x4a4b)}, + -AV_PIX_FMT_YUV422P16, {P16(0x1a1b, 0x3a3b), P16(0x2a2b), P16(0x4a4b)}}, + {2, 1, -AV_PIX_FMT_Y210BE, {P16(0x1b1a, 0x2b2a, 0x3b3a, 0x4b4a)}, + -AV_PIX_FMT_YUV422P16, {P16(0x1a1b, 0x3a3b), P16(0x2a2b), P16(0x4a4b)}}, + {1, 1, -AV_PIX_FMT_YA8, {P8(1, 2)}, + IMGFMT_YAP8, {P8(1), P8(2)}}, + {1, 1, -AV_PIX_FMT_YA16, {P16(0x1a1b, 0x2a2b)}, + IMGFMT_YAP16, {P16(0x1a1b), P16(0x2a2b)}}, {2, 1, -AV_PIX_FMT_YUV422P16BE, {P16(0x1a1b, 0x2a2b), P16(0x3a3b), P16(0x4a4b)}, -AV_PIX_FMT_YUV422P16, {P16(0x1b1a, 0x2b2a), P16(0x3b3a), |