Increase YUV video clamping
commit4be817dd606efdba1614d32608ddd6e16bfa687d
authormagjed <magjed@chromium.org>
Fri, 13 Mar 2015 20:48:39 +0000 (13 13:48 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 13 Mar 2015 20:49:27 +0000 (13 20:49 +0000)
treea46f86287ea996b3886a2cf6a219f448d4fbcf54
parentc4db547701d45f287feb86bda19d2914f0864314
Increase YUV video clamping

The current clamping is not enough to avoid bleeding issues. This is
exposed when changing the background color in CreateEdgeBleedPass from
black to gray. The reason it works now is because interpolating U/V
textures from black (YUV = 0, 0, 0) to green (YUV = 149, 43, 21) will
still result in saturated green pixels (RGB = 0, 255, 0). All YUV values
in the range (149, 0-43, 0-21) will end up as RGB = (0, 255, 0).

The current clamping is not enough, because the calculation
'0.5f / quad->tex_size.width()' is using the Y texture size, the highest
resolution plane, but the U/V texture size is only half of that. This CL
changes tex_size to represent the lowest resolution texture instead.

BUG=429640

Review URL: https://codereview.chromium.org/1008493002

Cr-Commit-Position: refs/heads/master@{#320567}
cc/layers/video_layer_impl.cc
cc/output/gl_renderer.cc
cc/output/renderer_pixeltest.cc
cc/quads/draw_quad_unittest.cc
cc/quads/yuv_video_draw_quad.cc
cc/quads/yuv_video_draw_quad.h
cc/test/data/yuv_stripes.png
cc/test/data/yuv_stripes_alpha.png
cc/test/data/yuv_stripes_offset.png
content/common/cc_messages.h
content/common/cc_messages_unittest.cc