[FFmpeg-devel] [PATCH 1/8] lavu/pix_fmt: add new pixel format y210

Mark Thompson sw at jkqxz.net
Wed Jan 8 23:47:21 EET 2020


On 29/12/2019 16:28, Linjie Fu wrote:
> Add some packed 4:2:2 10-bit pixel formats for hardware decode support
> in VAAPI and QSV.
> 
> Signed-off-by: Linjie Fu <linjie.fu at intel.com>
> ---
>  libavutil/pixdesc.c              | 23 +++++++++++++++++++++++
>  libavutil/pixfmt.h               |  5 +++++
>  libavutil/version.h              |  2 +-
>  tests/ref/fate/sws-pixdesc-query |  7 +++++++
>  4 files changed, 36 insertions(+), 1 deletion(-)
> 
> diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c
> index 05dd4a1..1e118ef 100644
> --- a/libavutil/pixdesc.c
> +++ b/libavutil/pixdesc.c
> @@ -205,6 +205,29 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
>              { 0, 4, 1, 0, 8, 3, 7, 2 },        /* V */
>          },
>      },
> +    [AV_PIX_FMT_Y210LE] = {
> +        .name = "y210le",
> +        .nb_components = 3,
> +        .log2_chroma_w = 1,
> +        .log2_chroma_h = 0,
> +        .comp = {
> +            { 0, 4, 0, 6, 10, 3, 9, 1 },        /* Y */
> +            { 0, 8, 2, 6, 10, 7, 9, 3 },        /* U */
> +            { 0, 8, 6, 6, 10, 7, 9, 7 },        /* V */
> +        },
> +    },
> +    [AV_PIX_FMT_Y210BE] = {
> +        .name = "y210be",
> +        .nb_components = 3,
> +        .log2_chroma_w = 1,
> +        .log2_chroma_h = 0,
> +        .comp = {
> +            { 0, 4, 0, 6, 10, 3, 9, 1 },        /* Y */
> +            { 0, 8, 2, 6, 10, 7, 9, 3 },        /* U */
> +            { 0, 8, 6, 6, 10, 7, 9, 7 },        /* V */
> +        },
> +        .flags = AV_PIX_FMT_FLAG_BE,
> +    },
>      [AV_PIX_FMT_RGB24] = {
>          .name = "rgb24",
>          .nb_components = 3,
> diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h
> index 37ecebd..7ffa5a0 100644
> --- a/libavutil/pixfmt.h
> +++ b/libavutil/pixfmt.h
> @@ -348,6 +348,9 @@ enum AVPixelFormat {
>      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_Y210BE,    ///< packed YUV 4:2:2, 32bpp, Y0 Cb Y1 Cr, big-endian
> +    AV_PIX_FMT_Y210LE,    ///< packed YUV 4:2:2, 32bpp, Y0 Cb Y1 Cr, little-endian

These comments should be clear that the data are in the high bits (like P010), rather than in the low bits (like most formats used by software codecs).

Being consistent with other comments would write 20bpp rather than 32bpp, though I'm not sure how much information that number is really adding.

> +
>      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
>  };
>  
> @@ -436,6 +439,8 @@ enum AVPixelFormat {
>  #define AV_PIX_FMT_P010       AV_PIX_FMT_NE(P010BE,  P010LE)
>  #define AV_PIX_FMT_P016       AV_PIX_FMT_NE(P016BE,  P016LE)
>  
> +#define AV_PIX_FMT_Y210       AV_PIX_FMT_NE(Y210BE,  Y210LE)
> +
>  /**
>    * Chromaticity coordinates of the source primaries.
>    * These values match the ones defined by ISO/IEC 23001-8_2013 ยง 7.1.
> ...

Thanks,

- Mark


More information about the ffmpeg-devel mailing list