For future reference, the rec 601 matrix can be defined by the concatenation of these 2 matrices:
[1.164 0.0 1.596 0.0]
[1.164 -0.391 -0.813 0.0]
[1.164 2.018 0.0 0.0]
[1.164 0.0 0.0 1.0]
See: http://www.fourcc.org/fccyvrgb.php
and
[1.0 0.0 0.0 -0.0625]
[0.0 1.0 0.0 -0.5 ]
[0.0 0.0 1.0 -0.5 ]
[0.0 0.0 0.0 1.0 ]
Which transforms Y by -0.0625 (-16/256) and U and V by
-0.5 (-128/256) each.
Giving us the final matrix:
[1.164 0.0 1.596 -0.87075]
[1.164 -0.391 -0.813 0.52925]
[1.164 2.018 0.0 -1.08175]
[0.0 0.0 0.0 1.0 ]
Which produces our output [R,G,B,A], when multiplied
with an input [Y,U,V,A].
R=bsalomon@google.com
Author: rileya@chromium.org
Review URL: https://codereview.chromium.org/
545983006
1.0f, 1.772f, 0.0f, -0.886f,
0.0f, 0.0f, 0.0f, 1.0};
const GrGLfloat YUVtoRGBEffect::GLEffect::kRec601ConversionMatrix[16] = {
- 1.164f, 0.0f, 1.596f, -1.08175f,
- 1.164f, -0.391f, -0.813f, 0.529f,
+ 1.164f, 0.0f, 1.596f, -0.87075f,
+ 1.164f, -0.391f, -0.813f, 0.52925f,
1.164f, 2.018f, 0.0f, -1.08175f,
0.0f, 0.0f, 0.0f, 1.0};
}