lavu/pixfmt: add high-bit-depth semi-planar 4:2:2/4:4:4 formats

These are used by VideoToolbox hardware decoders.
This commit is contained in:
rcombs 2021-11-12 23:50:17 -06:00
parent 4b54818981
commit b2cd1fb2ec
5 changed files with 169 additions and 0 deletions

View File

@ -14,6 +14,9 @@ libavutil: 2021-04-27
API changes, most recent first:
2021-11-22 - xxxxxxxxxx - lavu 57.9.100 - pixfmt.h
Add AV_PIX_FMT_P210, AV_PIX_FMT_P410, AV_PIX_FMT_P216, and AV_PIX_FMT_P416.
2021-11-17 - xxxxxxxxxx - lavf 57.9.100 - frame.h
Add AV_FRAME_DATA_DOVI_RPU_BUFFER.

View File

@ -2393,6 +2393,102 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
.name = "vulkan",
.flags = AV_PIX_FMT_FLAG_HWACCEL,
},
[AV_PIX_FMT_P210BE] = {
.name = "p210be",
.nb_components = 3,
.log2_chroma_w = 1,
.log2_chroma_h = 0,
.comp = {
{ 0, 2, 0, 6, 10 }, /* Y */
{ 1, 4, 0, 6, 10 }, /* U */
{ 1, 4, 2, 6, 10 }, /* V */
},
.flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
},
[AV_PIX_FMT_P210LE] = {
.name = "p210le",
.nb_components = 3,
.log2_chroma_w = 1,
.log2_chroma_h = 0,
.comp = {
{ 0, 2, 0, 6, 10 }, /* Y */
{ 1, 4, 0, 6, 10 }, /* U */
{ 1, 4, 2, 6, 10 }, /* V */
},
.flags = AV_PIX_FMT_FLAG_PLANAR,
},
[AV_PIX_FMT_P410BE] = {
.name = "p410be",
.nb_components = 3,
.log2_chroma_w = 0,
.log2_chroma_h = 0,
.comp = {
{ 0, 2, 0, 6, 10 }, /* Y */
{ 1, 4, 0, 6, 10 }, /* U */
{ 1, 4, 2, 6, 10 }, /* V */
},
.flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
},
[AV_PIX_FMT_P410LE] = {
.name = "p410le",
.nb_components = 3,
.log2_chroma_w = 0,
.log2_chroma_h = 0,
.comp = {
{ 0, 2, 0, 6, 10 }, /* Y */
{ 1, 4, 0, 6, 10 }, /* U */
{ 1, 4, 2, 6, 10 }, /* V */
},
.flags = AV_PIX_FMT_FLAG_PLANAR,
},
[AV_PIX_FMT_P216BE] = {
.name = "p216be",
.nb_components = 3,
.log2_chroma_w = 1,
.log2_chroma_h = 0,
.comp = {
{ 0, 2, 0, 0, 16 }, /* Y */
{ 1, 4, 0, 0, 16 }, /* U */
{ 1, 4, 2, 0, 16 }, /* V */
},
.flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
},
[AV_PIX_FMT_P216LE] = {
.name = "p216le",
.nb_components = 3,
.log2_chroma_w = 1,
.log2_chroma_h = 0,
.comp = {
{ 0, 2, 0, 0, 16 }, /* Y */
{ 1, 4, 0, 0, 16 }, /* U */
{ 1, 4, 2, 0, 16 }, /* V */
},
.flags = AV_PIX_FMT_FLAG_PLANAR,
},
[AV_PIX_FMT_P416BE] = {
.name = "p416be",
.nb_components = 3,
.log2_chroma_w = 0,
.log2_chroma_h = 0,
.comp = {
{ 0, 2, 0, 0, 16 }, /* Y */
{ 1, 4, 0, 0, 16 }, /* U */
{ 1, 4, 2, 0, 16 }, /* V */
},
.flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
},
[AV_PIX_FMT_P416LE] = {
.name = "p416le",
.nb_components = 3,
.log2_chroma_w = 0,
.log2_chroma_h = 0,
.comp = {
{ 0, 2, 0, 0, 16 }, /* Y */
{ 1, 4, 0, 0, 16 }, /* U */
{ 1, 4, 2, 0, 16 }, /* V */
},
.flags = AV_PIX_FMT_FLAG_PLANAR,
},
};
static const char * const color_range_names[] = {

View File

@ -352,6 +352,19 @@ enum AVPixelFormat {
AV_PIX_FMT_X2RGB10BE, ///< packed RGB 10:10:10, 30bpp, (msb)2X 10R 10G 10B(lsb), big-endian, X=unused/undefined
AV_PIX_FMT_X2BGR10LE, ///< packed BGR 10:10:10, 30bpp, (msb)2X 10B 10G 10R(lsb), little-endian, X=unused/undefined
AV_PIX_FMT_X2BGR10BE, ///< packed BGR 10:10:10, 30bpp, (msb)2X 10B 10G 10R(lsb), big-endian, X=unused/undefined
AV_PIX_FMT_P210BE, ///< interleaved chroma YUV 4:2:2, 20bpp, data in the high bits, big-endian
AV_PIX_FMT_P210LE, ///< interleaved chroma YUV 4:2:2, 20bpp, data in the high bits, little-endian
AV_PIX_FMT_P410BE, ///< interleaved chroma YUV 4:4:4, 30bpp, data in the high bits, big-endian
AV_PIX_FMT_P410LE, ///< interleaved chroma YUV 4:4:4, 30bpp, data in the high bits, little-endian
AV_PIX_FMT_P216BE, ///< interleaved chroma YUV 4:2:2, 32bpp, big-endian
AV_PIX_FMT_P216LE, ///< interleaved chroma YUV 4:2:2, 32bpp, liddle-endian
AV_PIX_FMT_P416BE, ///< interleaved chroma YUV 4:4:4, 48bpp, big-endian
AV_PIX_FMT_P416LE, ///< interleaved chroma YUV 4:4:4, 48bpp, 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
};
@ -444,6 +457,11 @@ enum AVPixelFormat {
#define AV_PIX_FMT_X2RGB10 AV_PIX_FMT_NE(X2RGB10BE, X2RGB10LE)
#define AV_PIX_FMT_X2BGR10 AV_PIX_FMT_NE(X2BGR10BE, X2BGR10LE)
#define AV_PIX_FMT_P210 AV_PIX_FMT_NE(P210BE, P210LE)
#define AV_PIX_FMT_P410 AV_PIX_FMT_NE(P410BE, P410LE)
#define AV_PIX_FMT_P216 AV_PIX_FMT_NE(P216BE, P216LE)
#define AV_PIX_FMT_P416 AV_PIX_FMT_NE(P416BE, P416LE)
/**
* Chromaticity coordinates of the source primaries.
* These values match the ones defined by ISO/IEC 23091-2_2019 subclause 8.1 and ITU-T H.273.

View File

@ -238,3 +238,11 @@ x2rgb10le planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0
x2rgb10be planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
x2bgr10le planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
x2bgr10be planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
p210be planes: 2, linesizes: 128 128 0 0, plane_sizes: 6144 6144 0 0, plane_offsets: 6144 0 0, total_size: 12288
p210le planes: 2, linesizes: 128 128 0 0, plane_sizes: 6144 6144 0 0, plane_offsets: 6144 0 0, total_size: 12288
p410be planes: 2, linesizes: 128 256 0 0, plane_sizes: 6144 12288 0 0, plane_offsets: 6144 0 0, total_size: 18432
p410le planes: 2, linesizes: 128 256 0 0, plane_sizes: 6144 12288 0 0, plane_offsets: 6144 0 0, total_size: 18432
p216be planes: 2, linesizes: 128 128 0 0, plane_sizes: 6144 6144 0 0, plane_offsets: 6144 0 0, total_size: 12288
p216le planes: 2, linesizes: 128 128 0 0, plane_sizes: 6144 6144 0 0, plane_offsets: 6144 0 0, total_size: 12288
p416be planes: 2, linesizes: 128 256 0 0, plane_sizes: 6144 12288 0 0, plane_offsets: 6144 0 0, total_size: 18432
p416le planes: 2, linesizes: 128 256 0 0, plane_sizes: 6144 12288 0 0, plane_offsets: 6144 0 0, total_size: 18432

View File

@ -13,6 +13,10 @@ is16BPS:
gray16le
p016be
p016le
p216be
p216le
p416be
p416le
rgb48be
rgb48le
rgba64be
@ -57,6 +61,10 @@ isNBPS:
nv20le
p010be
p010le
p210be
p210le
p410be
p410le
x2bgr10be
x2bgr10le
x2rgb10be
@ -140,6 +148,10 @@ isBE:
nv20be
p010be
p016be
p210be
p216be
p410be
p416be
rgb444be
rgb48be
rgb555be
@ -193,6 +205,14 @@ isYUV:
p010le
p016be
p016le
p210be
p210le
p216be
p216le
p410be
p410le
p416be
p416le
uyvy422
uyyvyy411
xyz12be
@ -287,6 +307,14 @@ isPlanarYUV:
p010le
p016be
p016le
p210be
p210le
p216be
p216le
p410be
p410le
p416be
p416le
yuv410p
yuv411p
yuv420p
@ -370,6 +398,14 @@ isSemiPlanarYUV:
p010le
p016be
p016le
p210be
p210le
p216be
p216le
p410be
p410le
p416be
p416le
isRGB:
0bgr
@ -751,6 +787,14 @@ Planar:
p010le
p016be
p016le
p210be
p210le
p216be
p216le
p410be
p410le
p416be
p416le
yuv410p
yuv411p
yuv420p