[Libva] [PATCH] shaders: gen[789]: fix Y coefficient in YUV->RGB conversion
Lionel Landwerlin
lionel.g.landwerlin at intel.com
Wed Oct 21 03:13:00 PDT 2015
On 21/10/15 01:57, Zhao Yakui wrote:
> On 10/21/2015 12:48 AM, Lionel Landwerlin wrote:
>> In the following formula for the conversion :
>>
>> R = Clamp ( 1.164(Y-16/255) + 1.596(Cr-128/255))
>> G = Clamp ( 1.164(Y-16/255) - 0.813(Cr-128/255) - 0.392(Cb-128/255))
>> B = Clamp ( 1.164(Y-16/255) + 2.017(Cb-128/255))
>>
>> we must substract 16 (or 16/255 if dealing with [0.0, 1.0] floats) to
>> Y before applying the multiplier coefficent. The shader was missing
>> the substraction.
>
> Hi,
>
> Thanks for your patch.
> The issue comes from the confusing formula between YUV and RGB.
> As you see from the below link, it has several different formulas
> about YUV to RGB.
> >http://www.equasys.de/colorconversion.html
>
> And ITU has three standards for the conversion between YUV and RGB.
> (BT601, 709, 2020).
> Even for BT601, it will also have the different conversion if the
> footroom/headroom is considered.
>
> If you hope to fix the conversion issue, I prefer that the shader
> is based on the generic conversion matrix and the conversion matrix is
> passed. In such case we can pass the different conversion matrix for
> the different standard.
Yeah, I was wondering because the driver's code base includes more
generic shaders that work with a matrix passed from userspace :
http://cgit.freedesktop.org/vaapi/intel-driver/tree/src/shaders/render
Why isn't the driver using those shaders?
Indeed having a matrix would be best. What the current conversion being
used right now?
Reading your link it seems it's neither BT601 nor BT709.
>
> Thanks
> Yakui
>> ---
>> src/shaders/post_processing/gen7/YUV_to_RGB.g4a | 16
>> ++++++++++++++++
>> src/shaders/post_processing/gen7/pl2_to_rgbx.g75b | 16
>> ++++++++++++++++
>> src/shaders/post_processing/gen7/pl2_to_rgbx.g7b | 16
>> ++++++++++++++++
>> src/shaders/post_processing/gen8/YUV_to_RGB.g8a | 16
>> ++++++++++++++++
>> src/shaders/post_processing/gen8/pl2_to_rgbx.g8b | 16
>> ++++++++++++++++
>> src/shaders/post_processing/gen9/pl2_to_rgbx.g9b | 16
>> ++++++++++++++++
>> 6 files changed, 96 insertions(+)
>
More information about the Libva
mailing list