test: explicitly test repacking for all packed RGB variants

This stuff is very annoying, so it's good to have full coverage.
This commit is contained in:
wm4 2020-05-16 16:33:59 +02:00
parent c7b94c03f1
commit 00ac63c37b
2 changed files with 117 additions and 36 deletions

View File

@ -24,46 +24,46 @@ bayer_rggb16be => no
bayer_rggb8 => no
bgr0 => [pa] [un] gbrp | a=1:1 [tu] [tp]
bgr0 => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
bgr24 => [pa] [un] gbrp | a=1:1
bgr24 => [pa] [un] gbrp | a=1:1 [tu] [tp]
bgr24 => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
bgr4 => no
bgr444 => [pa] [un] gbrp4 | a=1:1
bgr444 => [pa] [un] gbrp | a=1:1 [expand-8bit]
bgr444 => [pa] [un] gbrp | a=1:1 [expand-8bit] [tu] [tp]
bgr444 => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
bgr444be => [pa] [un] gbrp4 | a=1:1
bgr444be => [pa] [un] gbrp | a=1:1 [expand-8bit]
bgr444be => [pa] [un] gbrp | a=1:1 [expand-8bit] [tu] [tp]
bgr444be => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
bgr48 => [pa] [un] gbrp16 | a=1:1
bgr48 => [pa] [un] gbrp16 | a=1:1 [tu] [tp]
bgr48 => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
bgr48be => [pa] [un] gbrp16 | a=1:1
bgr48be => [pa] [un] gbrp16 | a=1:1 [tu] [tp]
bgr48be => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
bgr4_byte => [pa] [un] gbrp2 | a=1:1
bgr4_byte => [pa] [un] gbrp1 | a=1:1 [round-down]
bgr4_byte => [pa] [un] gbrp | a=1:1 [expand-8bit]
bgr4_byte => [pa] [un] gbrp | a=1:1 [expand-8bit] [tu] [tp]
bgr4_byte => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
bgr555 => [pa] [un] gbrp5 | a=1:1
bgr555 => [pa] [un] gbrp | a=1:1 [expand-8bit]
bgr555 => [pa] [un] gbrp | a=1:1 [expand-8bit] [tu] [tp]
bgr555 => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
bgr555be => [pa] [un] gbrp5 | a=1:1
bgr555be => [pa] [un] gbrp | a=1:1 [expand-8bit]
bgr555be => [pa] [un] gbrp | a=1:1 [expand-8bit] [tu] [tp]
bgr555be => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
bgr565 => [pa] [un] gbrp6 | a=1:1
bgr565 => [pa] [un] gbrp5 | a=1:1 [round-down]
bgr565 => [pa] [un] gbrp | a=1:1 [expand-8bit]
bgr565 => [pa] [un] gbrp | a=1:1 [expand-8bit] [tu] [tp]
bgr565 => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
bgr565be => [pa] [un] gbrp6 | a=1:1
bgr565be => [pa] [un] gbrp5 | a=1:1 [round-down]
bgr565be => [pa] [un] gbrp | a=1:1 [expand-8bit]
bgr565be => [pa] [un] gbrp | a=1:1 [expand-8bit] [tu] [tp]
bgr565be => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
bgr8 => [pa] [un] gbrp3 | a=1:1
bgr8 => [pa] [un] gbrp2 | a=1:1 [round-down]
bgr8 => [pa] [un] gbrp | a=1:1 [expand-8bit]
bgr8 => [pa] [un] gbrp | a=1:1 [expand-8bit] [tu] [tp]
bgr8 => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
bgra => [pa] [un] gbrap | a=1:1 [tu] [tp]
bgra => [pa] [un] gbrapf32 | a=1:1 [planar-f32]
bgra64 => [pa] [un] gbrap16 | a=1:1
bgra64 => [pa] [un] gbrap16 | a=1:1 [tu] [tp]
bgra64 => [pa] [un] gbrapf32 | a=1:1 [planar-f32]
bgra64be => [pa] [un] gbrap16 | a=1:1
bgra64be => [pa] [un] gbrap16 | a=1:1 [tu] [tp]
bgra64be => [pa] [un] gbrapf32 | a=1:1 [planar-f32]
cuda => no
d3d11 => no
@ -155,50 +155,50 @@ pal8 => [un] gbrapf32 | a=1:1 [planar-f32]
qsv => no
rgb0 => [pa] [un] gbrp | a=1:1 [tu] [tp]
rgb0 => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
rgb24 => [pa] [un] gbrp | a=1:1
rgb24 => [pa] [un] gbrp | a=1:1 [tu] [tp]
rgb24 => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
rgb30 => [pa] [un] gbrp10 | a=1:1 [tu] [tp]
rgb30 => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
rgb4 => no
rgb444 => [pa] [un] gbrp4 | a=1:1
rgb444 => [pa] [un] gbrp | a=1:1 [expand-8bit]
rgb444 => [pa] [un] gbrp | a=1:1 [expand-8bit] [tu] [tp]
rgb444 => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
rgb444be => [pa] [un] gbrp4 | a=1:1
rgb444be => [pa] [un] gbrp | a=1:1 [expand-8bit]
rgb444be => [pa] [un] gbrp | a=1:1 [expand-8bit] [tu] [tp]
rgb444be => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
rgb48 => [pa] [un] gbrp16 | a=1:1
rgb48 => [pa] [un] gbrp16 | a=1:1 [tu] [tp]
rgb48 => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
rgb48be => [pa] [un] gbrp16 | a=1:1 [tu] [tp]
rgb48be => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
rgb4_byte => [pa] [un] gbrp2 | a=1:1
rgb4_byte => [pa] [un] gbrp1 | a=1:1 [round-down]
rgb4_byte => [pa] [un] gbrp | a=1:1 [expand-8bit]
rgb4_byte => [pa] [un] gbrp | a=1:1 [expand-8bit] [tu] [tp]
rgb4_byte => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
rgb555 => [pa] [un] gbrp5 | a=1:1
rgb555 => [pa] [un] gbrp | a=1:1 [expand-8bit]
rgb555 => [pa] [un] gbrp | a=1:1 [expand-8bit] [tu] [tp]
rgb555 => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
rgb555be => [pa] [un] gbrp5 | a=1:1
rgb555be => [pa] [un] gbrp | a=1:1 [expand-8bit]
rgb555be => [pa] [un] gbrp | a=1:1 [expand-8bit] [tu] [tp]
rgb555be => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
rgb565 => [pa] [un] gbrp6 | a=1:1
rgb565 => [pa] [un] gbrp5 | a=1:1 [round-down]
rgb565 => [pa] [un] gbrp | a=1:1 [expand-8bit]
rgb565 => [pa] [un] gbrp | a=1:1 [expand-8bit] [tu] [tp]
rgb565 => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
rgb565be => [pa] [un] gbrp6 | a=1:1
rgb565be => [pa] [un] gbrp5 | a=1:1 [round-down]
rgb565be => [pa] [un] gbrp | a=1:1 [expand-8bit]
rgb565be => [pa] [un] gbrp | a=1:1 [expand-8bit] [tu] [tp]
rgb565be => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
rgb8 => [pa] [un] gbrp3 | a=1:1
rgb8 => [pa] [un] gbrp2 | a=1:1 [round-down]
rgb8 => [pa] [un] gbrp | a=1:1 [expand-8bit]
rgb8 => [pa] [un] gbrp | a=1:1 [expand-8bit] [tu] [tp]
rgb8 => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
rgba => [pa] [un] gbrap | a=1:1 [tu] [tp]
rgba => [pa] [un] gbrapf32 | a=1:1 [planar-f32]
rgba64 => [pa] [un] gbrap16 | a=1:1 [tu] [tp]
rgba64 => [pa] [un] gbrapf32 | a=1:1 [planar-f32]
rgba64be => [pa] [un] gbrap16 | a=1:1
rgba64be => [pa] [un] gbrap16 | a=1:1 [tu] [tp]
rgba64be => [pa] [un] gbrapf32 | a=1:1 [planar-f32]
uyvy422 => [pa] [un] yuv422p | a=2:1
uyvy422 => [pa] [un] yuv422p | a=2:1 [tu] [tp]
uyvy422 => [pa] [un] yuv422pf | a=2:1 [planar-f32]
uyyvyy411 => no
vaapi => no
@ -209,19 +209,19 @@ vdpau_output => no
videotoolbox => no
vulkan => no
xvmc => no
xyz12 => [pa] [un] gbrp16 | a=1:1
xyz12 => [pa] [un] gbrp16 | a=1:1 [tu] [tp]
xyz12 => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
xyz12be => [pa] [un] gbrp16 | a=1:1
xyz12be => [pa] [un] gbrp16 | a=1:1 [tu] [tp]
xyz12be => [pa] [un] gbrpf32 | a=1:1 [planar-f32]
y210 => [pa] [un] yuv422p16 | a=2:1
y210 => [pa] [un] yuv422p16 | a=2:1 [tu] [tp]
y210 => [pa] [un] yuv422pf | a=2:1 [planar-f32]
y210be => [pa] [un] yuv422p16 | a=2:1
y210be => [pa] [un] yuv422p16 | a=2:1 [tu] [tp]
y210be => [pa] [un] yuv422pf | a=2:1 [planar-f32]
ya16 => [pa] [un] yap16 | a=1:1 [tu] [tp]
ya16 => [pa] [un] grayaf32 | a=1:1 [planar-f32]
ya16be => [pa] [un] yap16 | a=1:1
ya16be => [pa] [un] grayaf32 | a=1:1 [planar-f32]
ya8 => [pa] [un] yap8 | a=1:1
ya8 => [pa] [un] yap8 | a=1:1 [tu] [tp]
ya8 => [pa] [un] grayaf32 | a=1:1 [planar-f32]
yap16 => [pa] [un] grayaf32 | a=1:1 [planar-f32]
yap8 => [pa] [un] grayaf32 | a=1:1 [planar-f32]
@ -321,7 +321,7 @@ yuva444p9be => [pa] [un] yuva444pf | a=1:1 [planar-f32]
yuvj411p => [pa] [un] yuv411pf | a=4:1 [planar-f32]
yuvj422p => [pa] [un] yuv422pf | a=2:1 [planar-f32]
yuvj440p => [pa] [un] yuv440pf | a=1:2 [planar-f32]
yuyv422 => [pa] [un] yuv422p | a=2:1
yuyv422 => [pa] [un] yuv422p | a=2:1 [tu] [tp]
yuyv422 => [pa] [un] yuv422pf | a=2:1 [planar-f32]
yvyu422 => [pa] [un] yuv422p | a=2:1 [tu] [tp]
yvyu422 => [pa] [un] yuv422pf | a=2:1 [planar-f32]

View File

@ -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),