1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-08-04 22:03:09 +02:00

avutils/pixfmt: add YUV444/GBRP 10 and 12 bit MSB formats

This commit is contained in:
Timo Rothenpieler
2025-07-05 00:17:19 +02:00
parent cd91469114
commit e93de9948d
4 changed files with 175 additions and 0 deletions

View File

@ -1701,6 +1701,30 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
}, },
.flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
}, },
[AV_PIX_FMT_YUV444P10MSBLE] = {
.name = "yuv444p10msble",
.nb_components = 3,
.log2_chroma_w = 0,
.log2_chroma_h = 0,
.comp = {
{ 0, 2, 0, 6, 10 }, /* Y */
{ 1, 2, 0, 6, 10 }, /* U */
{ 2, 2, 0, 6, 10 }, /* V */
},
.flags = AV_PIX_FMT_FLAG_PLANAR,
},
[AV_PIX_FMT_YUV444P10MSBBE] = {
.name = "yuv444p10msbbe",
.nb_components = 3,
.log2_chroma_w = 0,
.log2_chroma_h = 0,
.comp = {
{ 0, 2, 0, 6, 10 }, /* Y */
{ 1, 2, 0, 6, 10 }, /* U */
{ 2, 2, 0, 6, 10 }, /* V */
},
.flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
},
[AV_PIX_FMT_YUV444P9LE] = { [AV_PIX_FMT_YUV444P9LE] = {
.name = "yuv444p9le", .name = "yuv444p9le",
.nb_components = 3, .nb_components = 3,
@ -1749,6 +1773,30 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
}, },
.flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
}, },
[AV_PIX_FMT_YUV444P12MSBLE] = {
.name = "yuv444p12msble",
.nb_components = 3,
.log2_chroma_w = 0,
.log2_chroma_h = 0,
.comp = {
{ 0, 2, 0, 4, 12 }, /* Y */
{ 1, 2, 0, 4, 12 }, /* U */
{ 2, 2, 0, 4, 12 }, /* V */
},
.flags = AV_PIX_FMT_FLAG_PLANAR,
},
[AV_PIX_FMT_YUV444P12MSBBE] = {
.name = "yuv444p12msbbe",
.nb_components = 3,
.log2_chroma_w = 0,
.log2_chroma_h = 0,
.comp = {
{ 0, 2, 0, 4, 12 }, /* Y */
{ 1, 2, 0, 4, 12 }, /* U */
{ 2, 2, 0, 4, 12 }, /* V */
},
.flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
},
[AV_PIX_FMT_YUV444P14LE] = { [AV_PIX_FMT_YUV444P14LE] = {
.name = "yuv444p14le", .name = "yuv444p14le",
.nb_components = 3, .nb_components = 3,
@ -1877,6 +1925,30 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
}, },
.flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
}, },
[AV_PIX_FMT_GBRP10MSBLE] = {
.name = "gbrp10msble",
.nb_components = 3,
.log2_chroma_w = 0,
.log2_chroma_h = 0,
.comp = {
{ 2, 2, 0, 6, 10 }, /* R */
{ 0, 2, 0, 6, 10 }, /* G */
{ 1, 2, 0, 6, 10 }, /* B */
},
.flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
},
[AV_PIX_FMT_GBRP10MSBBE] = {
.name = "gbrp10msbbe",
.nb_components = 3,
.log2_chroma_w = 0,
.log2_chroma_h = 0,
.comp = {
{ 2, 2, 0, 6, 10 }, /* R */
{ 0, 2, 0, 6, 10 }, /* G */
{ 1, 2, 0, 6, 10 }, /* B */
},
.flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
},
[AV_PIX_FMT_GBRP12LE] = { [AV_PIX_FMT_GBRP12LE] = {
.name = "gbrp12le", .name = "gbrp12le",
.nb_components = 3, .nb_components = 3,
@ -1901,6 +1973,30 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
}, },
.flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
}, },
[AV_PIX_FMT_GBRP12MSBLE] = {
.name = "gbrp12msble",
.nb_components = 3,
.log2_chroma_w = 0,
.log2_chroma_h = 0,
.comp = {
{ 2, 2, 0, 4, 12 }, /* R */
{ 0, 2, 0, 4, 12 }, /* G */
{ 1, 2, 0, 4, 12 }, /* B */
},
.flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
},
[AV_PIX_FMT_GBRP12MSBBE] = {
.name = "gbrp12msbbe",
.nb_components = 3,
.log2_chroma_w = 0,
.log2_chroma_h = 0,
.comp = {
{ 2, 2, 0, 4, 12 }, /* R */
{ 0, 2, 0, 4, 12 }, /* G */
{ 1, 2, 0, 4, 12 }, /* B */
},
.flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
},
[AV_PIX_FMT_GBRP14LE] = { [AV_PIX_FMT_GBRP14LE] = {
.name = "gbrp14le", .name = "gbrp14le",
.nb_components = 3, .nb_components = 3,

View File

@ -488,6 +488,15 @@ enum AVPixelFormat {
AV_PIX_FMT_GBRAP32BE, ///< planar GBRA 4:4:4:4 128bpp, big-endian AV_PIX_FMT_GBRAP32BE, ///< planar GBRA 4:4:4:4 128bpp, big-endian
AV_PIX_FMT_GBRAP32LE, ///< planar GBRA 4:4:4:4 128bpp, little-endian AV_PIX_FMT_GBRAP32LE, ///< planar GBRA 4:4:4:4 128bpp, little-endian
AV_PIX_FMT_YUV444P10MSBBE, ///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), lowest bits zero, big-endian
AV_PIX_FMT_YUV444P10MSBLE, ///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), lowest bits zero, little-endian
AV_PIX_FMT_YUV444P12MSBBE, ///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), lowest bits zero, big-endian
AV_PIX_FMT_YUV444P12MSBLE, ///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), lowest bits zero, little-endian
AV_PIX_FMT_GBRP10MSBBE, ///< planar GBR 4:4:4 30bpp, lowest bits zero, big-endian
AV_PIX_FMT_GBRP10MSBLE, ///< planar GBR 4:4:4 30bpp, lowest bits zero, little-endian
AV_PIX_FMT_GBRP12MSBBE, ///< planar GBR 4:4:4 36bpp, lowest bits zero, big-endian
AV_PIX_FMT_GBRP12MSBLE, ///< planar GBR 4:4:4 36bpp, lowest bits zero, little-endian
AV_PIX_FMT_NB ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions AV_PIX_FMT_NB ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions
}; };
@ -540,6 +549,9 @@ enum AVPixelFormat {
#define AV_PIX_FMT_YUV422P16 AV_PIX_FMT_NE(YUV422P16BE, YUV422P16LE) #define AV_PIX_FMT_YUV422P16 AV_PIX_FMT_NE(YUV422P16BE, YUV422P16LE)
#define AV_PIX_FMT_YUV444P16 AV_PIX_FMT_NE(YUV444P16BE, YUV444P16LE) #define AV_PIX_FMT_YUV444P16 AV_PIX_FMT_NE(YUV444P16BE, YUV444P16LE)
#define AV_PIX_FMT_YUV444P10MSB AV_PIX_FMT_NE(YUV444P10MSBBE, YUV444P10MSBLE)
#define AV_PIX_FMT_YUV444P12MSB AV_PIX_FMT_NE(YUV444P12MSBBE, YUV444P12MSBLE)
#define AV_PIX_FMT_GBRP9 AV_PIX_FMT_NE(GBRP9BE , GBRP9LE) #define AV_PIX_FMT_GBRP9 AV_PIX_FMT_NE(GBRP9BE , GBRP9LE)
#define AV_PIX_FMT_GBRP10 AV_PIX_FMT_NE(GBRP10BE, GBRP10LE) #define AV_PIX_FMT_GBRP10 AV_PIX_FMT_NE(GBRP10BE, GBRP10LE)
#define AV_PIX_FMT_GBRP12 AV_PIX_FMT_NE(GBRP12BE, GBRP12LE) #define AV_PIX_FMT_GBRP12 AV_PIX_FMT_NE(GBRP12BE, GBRP12LE)
@ -551,6 +563,9 @@ enum AVPixelFormat {
#define AV_PIX_FMT_GBRAP16 AV_PIX_FMT_NE(GBRAP16BE, GBRAP16LE) #define AV_PIX_FMT_GBRAP16 AV_PIX_FMT_NE(GBRAP16BE, GBRAP16LE)
#define AV_PIX_FMT_GBRAP32 AV_PIX_FMT_NE(GBRAP32BE, GBRAP32LE) #define AV_PIX_FMT_GBRAP32 AV_PIX_FMT_NE(GBRAP32BE, GBRAP32LE)
#define AV_PIX_FMT_GBRP10MSB AV_PIX_FMT_NE(GBRP10MSBBE, GBRP10MSBLE)
#define AV_PIX_FMT_GBRP12MSB AV_PIX_FMT_NE(GBRP12MSBBE, GBRP12MSBLE)
#define AV_PIX_FMT_BAYER_BGGR16 AV_PIX_FMT_NE(BAYER_BGGR16BE, BAYER_BGGR16LE) #define AV_PIX_FMT_BAYER_BGGR16 AV_PIX_FMT_NE(BAYER_BGGR16BE, BAYER_BGGR16LE)
#define AV_PIX_FMT_BAYER_RGGB16 AV_PIX_FMT_NE(BAYER_RGGB16BE, BAYER_RGGB16LE) #define AV_PIX_FMT_BAYER_RGGB16 AV_PIX_FMT_NE(BAYER_RGGB16BE, BAYER_RGGB16LE)
#define AV_PIX_FMT_BAYER_GBRG16 AV_PIX_FMT_NE(BAYER_GBRG16BE, BAYER_GBRG16LE) #define AV_PIX_FMT_BAYER_GBRG16 AV_PIX_FMT_NE(BAYER_GBRG16BE, BAYER_GBRG16LE)

View File

@ -298,6 +298,14 @@ yaf16be planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0
yaf16le planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288 yaf16le planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
gbrap32be planes: 4, linesizes: 256 256 256 256, plane_sizes: 12288 12288 12288 12288, plane_offsets: 12288 12288 12288, total_size: 49152 gbrap32be planes: 4, linesizes: 256 256 256 256, plane_sizes: 12288 12288 12288 12288, plane_offsets: 12288 12288 12288, total_size: 49152
gbrap32le planes: 4, linesizes: 256 256 256 256, plane_sizes: 12288 12288 12288 12288, plane_offsets: 12288 12288 12288, total_size: 49152 gbrap32le planes: 4, linesizes: 256 256 256 256, plane_sizes: 12288 12288 12288 12288, plane_offsets: 12288 12288 12288, total_size: 49152
yuv444p10msbbe planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
yuv444p10msble planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
yuv444p12msbbe planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
yuv444p12msble planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
gbrp10msbbe planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
gbrp10msble planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
gbrp12msbbe planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
gbrp12msble planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
image_fill_black tests image_fill_black tests
yuv420p total_size: 4608, black_unknown_crc: 0xd00f6cc6, black_tv_crc: 0xd00f6cc6, black_pc_crc: 0x234969af yuv420p total_size: 4608, black_unknown_crc: 0xd00f6cc6, black_tv_crc: 0xd00f6cc6, black_pc_crc: 0x234969af
@ -543,3 +551,11 @@ yaf16be total_size: 12288, black_unknown_crc: 0x7afe9aae, black_tv_cr
yaf16le total_size: 12288, black_unknown_crc: 0x94c0068b, black_tv_crc: 0x94c0068b, black_pc_crc: 0xc05ce449 yaf16le total_size: 12288, black_unknown_crc: 0x94c0068b, black_tv_crc: 0x94c0068b, black_pc_crc: 0xc05ce449
gbrap32be total_size: 49152, black_unknown_crc: 0x7bd30c95, black_tv_crc: 0x7bd30c95, black_pc_crc: 0x7bd30c95 gbrap32be total_size: 49152, black_unknown_crc: 0x7bd30c95, black_tv_crc: 0x7bd30c95, black_pc_crc: 0x7bd30c95
gbrap32le total_size: 49152, black_unknown_crc: 0x7bd30c95, black_tv_crc: 0x7bd30c95, black_pc_crc: 0x7bd30c95 gbrap32le total_size: 49152, black_unknown_crc: 0x7bd30c95, black_tv_crc: 0x7bd30c95, black_pc_crc: 0x7bd30c95
yuv444p10msbbe total_size: 18432, black_unknown_crc: 0x26991800, black_tv_crc: 0x26991800, black_pc_crc: 0xfe7f6700
yuv444p10msble total_size: 18432, black_unknown_crc: 0x4028ac30, black_tv_crc: 0x4028ac30, black_pc_crc: 0xab7c7698
yuv444p12msbbe total_size: 18432, black_unknown_crc: 0x26991800, black_tv_crc: 0x26991800, black_pc_crc: 0xfe7f6700
yuv444p12msble total_size: 18432, black_unknown_crc: 0x4028ac30, black_tv_crc: 0x4028ac30, black_pc_crc: 0xab7c7698
gbrp10msbbe total_size: 18432, black_unknown_crc: 0x00000000, black_tv_crc: 0x00000000, black_pc_crc: 0x00000000
gbrp10msble total_size: 18432, black_unknown_crc: 0x00000000, black_tv_crc: 0x00000000, black_pc_crc: 0x00000000
gbrp12msbbe total_size: 18432, black_unknown_crc: 0x00000000, black_tv_crc: 0x00000000, black_pc_crc: 0x00000000
gbrp12msble total_size: 18432, black_unknown_crc: 0x00000000, black_tv_crc: 0x00000000, black_pc_crc: 0x00000000

View File

@ -61,8 +61,12 @@ isNBPS:
gbrap14le gbrap14le
gbrp10be gbrp10be
gbrp10le gbrp10le
gbrp10msbbe
gbrp10msble
gbrp12be gbrp12be
gbrp12le gbrp12le
gbrp12msbbe
gbrp12msble
gbrp14be gbrp14be
gbrp14le gbrp14le
gbrp9be gbrp9be
@ -127,8 +131,12 @@ isNBPS:
yuv440p12le yuv440p12le
yuv444p10be yuv444p10be
yuv444p10le yuv444p10le
yuv444p10msbbe
yuv444p10msble
yuv444p12be yuv444p12be
yuv444p12le yuv444p12le
yuv444p12msbbe
yuv444p12msble
yuv444p14be yuv444p14be
yuv444p14le yuv444p14le
yuv444p9be yuv444p9be
@ -169,7 +177,9 @@ isBE:
gbrapf16be gbrapf16be
gbrapf32be gbrapf32be
gbrp10be gbrp10be
gbrp10msbbe
gbrp12be gbrp12be
gbrp12msbbe
gbrp14be gbrp14be
gbrp16be gbrp16be
gbrp9be gbrp9be
@ -230,7 +240,9 @@ isBE:
yuv440p10be yuv440p10be
yuv440p12be yuv440p12be
yuv444p10be yuv444p10be
yuv444p10msbbe
yuv444p12be yuv444p12be
yuv444p12msbbe
yuv444p14be yuv444p14be
yuv444p16be yuv444p16be
yuv444p9be yuv444p9be
@ -336,8 +348,12 @@ isYUV:
yuv444p yuv444p
yuv444p10be yuv444p10be
yuv444p10le yuv444p10le
yuv444p10msbbe
yuv444p10msble
yuv444p12be yuv444p12be
yuv444p12le yuv444p12le
yuv444p12msbbe
yuv444p12msble
yuv444p14be yuv444p14be
yuv444p14le yuv444p14le
yuv444p16be yuv444p16be
@ -435,8 +451,12 @@ isPlanarYUV:
yuv444p yuv444p
yuv444p10be yuv444p10be
yuv444p10le yuv444p10le
yuv444p10msbbe
yuv444p10msble
yuv444p12be yuv444p12be
yuv444p12le yuv444p12le
yuv444p12msbbe
yuv444p12msble
yuv444p14be yuv444p14be
yuv444p14le yuv444p14le
yuv444p16be yuv444p16be
@ -551,8 +571,12 @@ isRGB:
gbrp gbrp
gbrp10be gbrp10be
gbrp10le gbrp10le
gbrp10msbbe
gbrp10msble
gbrp12be gbrp12be
gbrp12le gbrp12le
gbrp12msbbe
gbrp12msble
gbrp14be gbrp14be
gbrp14le gbrp14le
gbrp16be gbrp16be
@ -727,8 +751,12 @@ AnyRGB:
gbrp gbrp
gbrp10be gbrp10be
gbrp10le gbrp10le
gbrp10msbbe
gbrp10msble
gbrp12be gbrp12be
gbrp12le gbrp12le
gbrp12msbbe
gbrp12msble
gbrp14be gbrp14be
gbrp14le gbrp14le
gbrp16be gbrp16be
@ -966,8 +994,12 @@ Planar:
gbrp gbrp
gbrp10be gbrp10be
gbrp10le gbrp10le
gbrp10msbbe
gbrp10msble
gbrp12be gbrp12be
gbrp12le gbrp12le
gbrp12msbbe
gbrp12msble
gbrp14be gbrp14be
gbrp14le gbrp14le
gbrp16be gbrp16be
@ -1035,8 +1067,12 @@ Planar:
yuv444p yuv444p
yuv444p10be yuv444p10be
yuv444p10le yuv444p10le
yuv444p10msbbe
yuv444p10msble
yuv444p12be yuv444p12be
yuv444p12le yuv444p12le
yuv444p12msbbe
yuv444p12msble
yuv444p14be yuv444p14be
yuv444p14le yuv444p14le
yuv444p16be yuv444p16be
@ -1159,8 +1195,12 @@ PlanarRGB:
gbrp gbrp
gbrp10be gbrp10be
gbrp10le gbrp10le
gbrp10msbbe
gbrp10msble
gbrp12be gbrp12be
gbrp12le gbrp12le
gbrp12msbbe
gbrp12msble
gbrp14be gbrp14be
gbrp14le gbrp14le
gbrp16be gbrp16be
@ -1181,6 +1221,10 @@ usePal:
rgb8 rgb8
DataInHighBits: DataInHighBits:
gbrp10msbbe
gbrp10msble
gbrp12msbbe
gbrp12msble
p010be p010be
p010le p010le
p012be p012be
@ -1201,6 +1245,10 @@ DataInHighBits:
y210le y210le
y212be y212be
y212le y212le
yuv444p10msbbe
yuv444p10msble
yuv444p12msbbe
yuv444p12msble
SwappedChroma: SwappedChroma:
nv21 nv21