From 223ba624b70ed5732688e3a8a63a423a9f9b02ad Mon Sep 17 00:00:00 2001 From: rileya Date: Tue, 16 Sep 2014 06:23:50 -0700 Subject: Fix incorrect Rec601 YUV conversion matrix coefficient. 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 --- src/gpu/effects/GrYUVtoRGBEffect.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/gpu/effects') diff --git a/src/gpu/effects/GrYUVtoRGBEffect.cpp b/src/gpu/effects/GrYUVtoRGBEffect.cpp index 0023b1b300..4ffc345a2c 100644 --- a/src/gpu/effects/GrYUVtoRGBEffect.cpp +++ b/src/gpu/effects/GrYUVtoRGBEffect.cpp @@ -132,8 +132,8 @@ const GrGLfloat YUVtoRGBEffect::GLEffect::kJPEGConversionMatrix[16] = { 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}; } -- cgit v1.2.3