Я ищу матрицы (или формулы преобразования) для преобразования YUV Rec2020, Rec 601 и Rec DCI-P3 в rgb.
Например, для Рек. 709, у меня есть:
// HDTV YCbCr coefficients
_shader->setUniform( "Koff", 0.0f, -0.5f, -0.5f );
_shader->setUniform( "Kr", 1.0f, 0.0f, 1.28033f );
_shader->setUniform( "Kg", 1.0f, -0.21482f, -0.38059f );
_shader->setUniform( "Kb", 1.0f, 2.12798f, 0.0f );
и в шейдере:
vec2 tc = gl_TexCoord[0].st;
pre.r = texture2D(YImage, tc.st).r; // Y
pre.g = texture2D(UImage, tc.st).r; // U
pre.b = texture2D(VImage, tc.st).r; // V
if ( coeffs )
{
pre += Koff;
c.r = dot(Kr, pre);
c.g = dot(Kg, pre);
c.b = dot(Kb, pre);
}
Задача ещё не решена.
Других решений пока нет …