From 00ac63c37b18ef3e7fbe5c227eb10073b264a26a Mon Sep 17 00:00:00 2001 From: wm4 Date: Sat, 16 May 2020 16:33:59 +0200 Subject: test: explicitly test repacking for all packed RGB variants This stuff is very annoying, so it's good to have full coverage. --- test/ref/repack.txt | 62 ++++++++++++++++++------------------ test/repack.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 117 insertions(+), 36 deletions(-) diff --git a/test/ref/repack.txt b/test/ref/repack.txt index 72db7813eb..ec7a242315 100644 --- a/test/ref/repack.txt +++ b/test/ref/repack.txt @@ -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] 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), -- cgit v1.2.3