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

Carl Eugen Hoyos ceffmpeg at gmail.com
Tue Jan 14 06:42:45 EET 2020



Am 14.01.2020 um 03:38 schrieb Fu, Linjie <linjie.fu at intel.com>:

>> -----Original Message-----
>> From: ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> On Behalf Of
>> Carl Eugen Hoyos
>> Sent: Monday, January 13, 2020 00:41
>> To: FFmpeg development discussions and patches <ffmpeg-
>> devel at ffmpeg.org>
>> Subject: Re: [FFmpeg-devel] [PATCH 1/8] lavu/pix_fmt: add new pixel format
>> y210
>> 
>>> Am So., 12. Jan. 2020 um 08:57 Uhr schrieb Fu, Linjie <linjie.fu at intel.com>:
>>> 
>>>> -----Original Message-----
>>>> From: ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> On Behalf Of
>>>> Mark Thompson
>>>> Sent: Thursday, January 9, 2020 05:47
>>>> To: ffmpeg-devel at ffmpeg.org
>>>> Subject: Re: [FFmpeg-devel] [PATCH 1/8] lavu/pix_fmt: add new pixel
>> format
>>>> y210
>>>> 
>>>>> 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.
>>>> 
>>> Would update the comments like:
>>> packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, zeros in the
>> low bits, big-endian
>> 
>> Please do not write "zeros in the low bits", this is just confusing.
>> 
> 
> P010LE/P010BE are using similar comments, and there is identical description in the doc:
> "The 10-bit formats also use 16 bits for each channel, with the lowest 6 bits set to zero"
> https://docs.microsoft.com/en-us/windows/win32/medfound/10-bit-and-16-bit-yuv-video-formats
> 
> Hi Carl, would you please help to elaborate more on how to refine the comments?

Just remove „zeros in the low bits“.

Carl Eugen


More information about the ffmpeg-devel mailing list