mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avutil: Add NV24 and NV42 pixel formats
These are the 4:4:4 variants of the semi-planar NV12/NV21 formats. These formats are not used much, so we've never had a reason to add them until now. VDPAU recently added support HEVC 4:4:4 content and when you use the OpenGL interop, the returned surfaces are in NV24 format, so we need the pixel format for media players, even if there's no direct use within ffmpeg. Separately, there are apparently webcams that use NV24, but I've never seen one.
This commit is contained in:
parent
7c6f2bfdb2
commit
5de4f1d871
@ -2320,6 +2320,30 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
|
||||
},
|
||||
.flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
|
||||
},
|
||||
[AV_PIX_FMT_NV24] = {
|
||||
.name = "nv24",
|
||||
.nb_components = 3,
|
||||
.log2_chroma_w = 0,
|
||||
.log2_chroma_h = 0,
|
||||
.comp = {
|
||||
{ 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
|
||||
{ 1, 2, 0, 0, 8, 1, 7, 1 }, /* U */
|
||||
{ 1, 2, 1, 0, 8, 1, 7, 2 }, /* V */
|
||||
},
|
||||
.flags = AV_PIX_FMT_FLAG_PLANAR,
|
||||
},
|
||||
[AV_PIX_FMT_NV42] = {
|
||||
.name = "nv42",
|
||||
.nb_components = 3,
|
||||
.log2_chroma_w = 0,
|
||||
.log2_chroma_h = 0,
|
||||
.comp = {
|
||||
{ 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
|
||||
{ 1, 2, 1, 0, 8, 1, 7, 2 }, /* U */
|
||||
{ 1, 2, 0, 0, 8, 1, 7, 1 }, /* V */
|
||||
},
|
||||
.flags = AV_PIX_FMT_FLAG_PLANAR,
|
||||
},
|
||||
};
|
||||
#if FF_API_PLUS1_MINUS1
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
|
@ -345,6 +345,9 @@ enum AVPixelFormat {
|
||||
AV_PIX_FMT_YUVA444P12BE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), 12b alpha, big-endian
|
||||
AV_PIX_FMT_YUVA444P12LE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), 12b alpha, little-endian
|
||||
|
||||
AV_PIX_FMT_NV24, ///< planar YUV 4:4:4, 24bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V)
|
||||
AV_PIX_FMT_NV42, ///< as above, but U and V bytes are swapped
|
||||
|
||||
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
|
||||
};
|
||||
|
||||
|
@ -76,6 +76,7 @@ int main(void)
|
||||
TEST(AV_PIX_FMT_P010, AV_PIX_FMT_YUV420P10);
|
||||
TEST(AV_PIX_FMT_P016, AV_PIX_FMT_YUV420P16);
|
||||
TEST(AV_PIX_FMT_NV16, AV_PIX_FMT_YUV422P);
|
||||
TEST(AV_PIX_FMT_NV24, AV_PIX_FMT_YUV444P);
|
||||
TEST(AV_PIX_FMT_YUYV422, AV_PIX_FMT_YUV422P);
|
||||
TEST(AV_PIX_FMT_UYVY422, AV_PIX_FMT_YUV422P);
|
||||
TEST(AV_PIX_FMT_BGR565, AV_PIX_FMT_RGB565);
|
||||
|
@ -79,8 +79,8 @@
|
||||
*/
|
||||
|
||||
#define LIBAVUTIL_VERSION_MAJOR 56
|
||||
#define LIBAVUTIL_VERSION_MINOR 26
|
||||
#define LIBAVUTIL_VERSION_MICRO 101
|
||||
#define LIBAVUTIL_VERSION_MINOR 27
|
||||
#define LIBAVUTIL_VERSION_MICRO 100
|
||||
|
||||
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||
LIBAVUTIL_VERSION_MINOR, \
|
||||
|
@ -1 +1 @@
|
||||
72 tests passed, 0 tests failed.
|
||||
73 tests passed, 0 tests failed.
|
||||
|
Loading…
Reference in New Issue
Block a user