diff --git a/test/ref/img_formats.txt b/test/ref/img_formats.txt index f2cd29012b..c0c4d8bb4d 100644 --- a/test/ref/img_formats.txt +++ b/test/ref/img_formats.txt @@ -440,6 +440,14 @@ gbrp: [GENERIC] fcsp=rgb ctype=uint 0: p=2 st=1 o=0 sh=0 d=8 1: p=0 st=1 o=0 sh=0 d=8 2: p=1 st=1 o=0 sh=0 d=8 +gbrp1: fcsp=rgb ctype=uint + Legacy desc: [ba][rgb][le] + planes=3, chroma=0:0 align=1:1 bits=1 cbits=1 + {1/8/[0:0] 1/8/[0:0] 1/8/[0:0] 0/0/[0:0] } + Regular: planes=3 compbytes=1 bitpad=-7 chroma=1x1 ctype=uint + 0: {2} + 1: {3} + 2: {1} gbrp10: [GENERIC] fcsp=rgb ctype=uint Legacy desc: [ba][rgb][le] planes=3, chroma=0:0 align=1:1 bits=10 cbits=10 @@ -520,6 +528,46 @@ gbrp16be: [GENERIC] fcsp=rgb ctype=uint 0: p=2 st=2 o=0 sh=0 d=16 1: p=0 st=2 o=0 sh=0 d=16 2: p=1 st=2 o=0 sh=0 d=16 +gbrp2: fcsp=rgb ctype=uint + Legacy desc: [ba][rgb][le] + planes=3, chroma=0:0 align=1:1 bits=2 cbits=2 + {1/8/[0:0] 1/8/[0:0] 1/8/[0:0] 0/0/[0:0] } + Regular: planes=3 compbytes=1 bitpad=-6 chroma=1x1 ctype=uint + 0: {2} + 1: {3} + 2: {1} +gbrp3: fcsp=rgb ctype=uint + Legacy desc: [ba][rgb][le] + planes=3, chroma=0:0 align=1:1 bits=3 cbits=3 + {1/8/[0:0] 1/8/[0:0] 1/8/[0:0] 0/0/[0:0] } + Regular: planes=3 compbytes=1 bitpad=-5 chroma=1x1 ctype=uint + 0: {2} + 1: {3} + 2: {1} +gbrp4: fcsp=rgb ctype=uint + Legacy desc: [ba][rgb][le] + planes=3, chroma=0:0 align=1:1 bits=4 cbits=4 + {1/8/[0:0] 1/8/[0:0] 1/8/[0:0] 0/0/[0:0] } + Regular: planes=3 compbytes=1 bitpad=-4 chroma=1x1 ctype=uint + 0: {2} + 1: {3} + 2: {1} +gbrp5: fcsp=rgb ctype=uint + Legacy desc: [ba][rgb][le] + planes=3, chroma=0:0 align=1:1 bits=5 cbits=5 + {1/8/[0:0] 1/8/[0:0] 1/8/[0:0] 0/0/[0:0] } + Regular: planes=3 compbytes=1 bitpad=-3 chroma=1x1 ctype=uint + 0: {2} + 1: {3} + 2: {1} +gbrp6: fcsp=rgb ctype=uint + Legacy desc: [ba][rgb][le] + planes=3, chroma=0:0 align=1:1 bits=6 cbits=6 + {1/8/[0:0] 1/8/[0:0] 1/8/[0:0] 0/0/[0:0] } + Regular: planes=3 compbytes=1 bitpad=-2 chroma=1x1 ctype=uint + 0: {2} + 1: {3} + 2: {1} gbrp9: [GENERIC] fcsp=rgb ctype=uint Legacy desc: [ba][rgb][le] planes=3, chroma=0:0 align=1:1 bits=9 cbits=9 @@ -1019,6 +1067,12 @@ xyz12be: [GENERIC] fcsp=xyz ctype=uint 0: p=0 st=6 o=0 sh=4 d=12 1: p=0 st=6 o=2 sh=4 d=12 2: p=0 st=6 o=4 sh=4 d=12 +y1: fcsp=rgb ctype=uint + Legacy desc: [ba][rgb][le] + planes=1, chroma=0:0 align=1:1 bits=1 cbits=1 + {1/8/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] } + Regular: planes=1 compbytes=1 bitpad=-7 chroma=1x1 ctype=uint + 0: {1} y210: [GENERIC] ctype=uint Legacy desc: [ba][yuv][le] planes=1, chroma=1:0 align=2:1 bits=30 cbits=10 diff --git a/test/ref/zimg_formats.txt b/test/ref/zimg_formats.txt index 26d260a70e..7c47d74081 100644 --- a/test/ref/zimg_formats.txt +++ b/test/ref/zimg_formats.txt @@ -47,6 +47,7 @@ gbrapf32 Zin Zout | gbrapf32be Zin Zout | gbrp Zin Zout SWSin SWSout | + gbrp1 Zin Zout | gbrp10 Zin Zout SWSin SWSout | gbrp10be Zin Zout SWSin SWSout | gbrp12 Zin Zout SWSin SWSout | @@ -55,6 +56,11 @@ gbrp14be Zin Zout SWSin SWSout | gbrp16 Zin Zout SWSin SWSout | gbrp16be Zin Zout SWSin SWSout | + gbrp2 Zin Zout | + gbrp3 Zin Zout | + gbrp4 Zin Zout | + gbrp5 Zin Zout | + gbrp6 Zin Zout | gbrp9 Zin Zout SWSin SWSout | gbrp9be Zin Zout SWSin SWSout | gbrpf32 Zin Zout | @@ -119,6 +125,7 @@ xvmc | xyz12 Zin Zout SWSin SWSout | xyz12be Zin Zout SWSin SWSout | + y1 Zin Zout | y210 Zin Zout SWSin | y210be Zin Zout | ya16 Zin Zout SWSin SWSout | diff --git a/video/img_format.c b/video/img_format.c index ed194ef751..6379dd41d1 100644 --- a/video/img_format.c +++ b/video/img_format.c @@ -39,6 +39,14 @@ struct mp_imgfmt_entry { enum mp_component_type ctype; }; +#define FRINGE_GBRP(def, dname, bits) \ + [def - IMGFMT_CUST_BASE] = { \ + .name = dname, \ + .reg_desc = { .component_type = MP_COMPONENT_TYPE_UINT, \ + .component_size = 1, .component_pad = bits - 8, \ + .num_planes = 3, .forced_csp = MP_CSP_RGB, \ + .planes = { {1, {2}}, {1, {3}}, {1, {1}} }, }, } + static const struct mp_imgfmt_entry mp_imgfmt_list[] = { // not in ffmpeg [IMGFMT_VDPAU_OUTPUT - IMGFMT_CUST_BASE] = { @@ -85,6 +93,23 @@ static const struct mp_imgfmt_entry mp_imgfmt_list[] = { .planes = { {1, {1}}, {1, {4}} }, }, }, + [IMGFMT_Y1 - IMGFMT_CUST_BASE] = { + .name = "y1", + .reg_desc = { + .component_type = MP_COMPONENT_TYPE_UINT, + .component_size = 1, + .component_pad = -7, + .num_planes = 1, + .forced_csp = MP_CSP_RGB, + .planes = { {1, {1}} }, + }, + }, + FRINGE_GBRP(IMGFMT_GBRP1, "gbrp1", 1), + FRINGE_GBRP(IMGFMT_GBRP2, "gbrp2", 2), + FRINGE_GBRP(IMGFMT_GBRP3, "gbrp3", 3), + FRINGE_GBRP(IMGFMT_GBRP4, "gbrp4", 4), + FRINGE_GBRP(IMGFMT_GBRP5, "gbrp5", 5), + FRINGE_GBRP(IMGFMT_GBRP6, "gbrp6", 6), // in FFmpeg, but FFmpeg names have an annoying "_vld" suffix [IMGFMT_VIDEOTOOLBOX - IMGFMT_CUST_BASE] = { .name = "videotoolbox", diff --git a/video/img_format.h b/video/img_format.h index 2bd448899b..f422019dec 100644 --- a/video/img_format.h +++ b/video/img_format.h @@ -214,6 +214,15 @@ enum mp_imgfmt { // Accessed with bit-shifts, uint32_t units. IMGFMT_RGB30, // 2pad 10r 10g 10b (MSG to LSB) + // Fringe formats for fringe RGB format repacking. + IMGFMT_Y1, // gray with 1 bit per pixel + IMGFMT_GBRP1, // planar RGB with N bits per color component + IMGFMT_GBRP2, + IMGFMT_GBRP3, + IMGFMT_GBRP4, + IMGFMT_GBRP5, + IMGFMT_GBRP6, + // Hardware accelerated formats (again). IMGFMT_VDPAU_OUTPUT, // VdpOutputSurface IMGFMT_VAAPI,