On Thu, 7 Jan 2016 12:11:21 +0100 Hendrik Leppkes <h.lepp...@gmail.com> wrote:
> P010 is the 10-bit variant of NV12 (planar luma, packed chroma), using two > bytes per component to store 10-bit data plus 6-bit zeroes in the LSBs. > --- > libavutil/pixdesc.c | 24 ++++++++++++++++++++++++ > libavutil/pixfmt.h | 4 ++++ > 2 files changed, 28 insertions(+) > > diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c > index 72d0470..58833cf 100644 > --- a/libavutil/pixdesc.c > +++ b/libavutil/pixdesc.c > @@ -2004,6 +2004,30 @@ static const AVPixFmtDescriptor > av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { > }, > .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_ALPHA, > }, > + [AV_PIX_FMT_P010LE] = { > + .name = "p010le", > + .nb_components = 3, > + .log2_chroma_w = 1, > + .log2_chroma_h = 1, > + .comp = { > + { 0, 2, 0, 6, 10, 1, 9, 1 }, /* Y */ > + { 1, 4, 0, 6, 10, 3, 9, 1 }, /* U */ > + { 1, 4, 2, 6, 10, 3, 9, 3 }, /* V */ So just to clarify: each component is represented like with other 10 bit pixel formats (say, AV_PIX_FMT_YUV444P10LE), except the data is already shifted left by 6? If so, then this makes sense to me. > + }, > + .flags = AV_PIX_FMT_FLAG_PLANAR, > + }, > + [AV_PIX_FMT_P010BE] = { > + .name = "p010be", > + .nb_components = 3, > + .log2_chroma_w = 1, > + .log2_chroma_h = 1, > + .comp = { > + { 0, 2, 0, 6, 10, 1, 9, 1 }, /* Y */ > + { 1, 4, 0, 6, 10, 3, 9, 1 }, /* U */ > + { 1, 4, 2, 6, 10, 3, 9, 3 }, /* V */ > + }, > + .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE, > + }, > }; > #if FF_API_PLUS1_MINUS1 > FF_ENABLE_DEPRECATION_WARNINGS > diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h > index 32044f0..c01c057 100644 > --- a/libavutil/pixfmt.h > +++ b/libavutil/pixfmt.h > @@ -289,6 +289,9 @@ enum AVPixelFormat { > > AV_PIX_FMT_VIDEOTOOLBOX, ///< hardware decoding through Videotoolbox > > + AV_PIX_FMT_P010LE, ///< like NV12, with 10bpp per component, data in the > high bits, zeros in the low bits, little-endian > + AV_PIX_FMT_P010BE, ///< like NV12, with 10bpp per component, data in the > high bits, zeros in the low bits, big-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 > }; > > @@ -365,6 +368,7 @@ enum AVPixelFormat { > #define AV_PIX_FMT_XYZ12 AV_PIX_FMT_NE(XYZ12BE, XYZ12LE) > #define AV_PIX_FMT_NV20 AV_PIX_FMT_NE(NV20BE, NV20LE) > #define AV_PIX_FMT_AYUV64 AV_PIX_FMT_NE(AYUV64BE, AYUV64LE) > +#define AV_PIX_FMT_P010 AV_PIX_FMT_NE(P010BE, P010LE) > > /** > * Chromaticity coordinates of the source primaries. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel