summaryrefslogtreecommitdiffstats
path: root/test/repack.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2020-05-16 16:33:59 +0200
committerwm4 <wm4@nowhere>2020-05-18 01:54:59 +0200
commit00ac63c37b18ef3e7fbe5c227eb10073b264a26a (patch)
treef8ffb8122311374971c44c9cb4b96e7cdd7a2e1f /test/repack.c
parentc7b94c03f1c85f2da07ed9268119a54653b9b31c (diff)
downloadmpv-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.c91
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),