Index: cc/video_layer_impl.cc |
diff --git a/cc/video_layer_impl.cc b/cc/video_layer_impl.cc |
index 8a624bfa678eb242bc4553b27aad42be5596ef39..502ccc2599823a1b435465439e06314d20cf2183 100644 |
--- a/cc/video_layer_impl.cc |
+++ b/cc/video_layer_impl.cc |
@@ -20,6 +20,10 @@ |
#include "third_party/khronos/GLES2/gl2.h" |
#include "third_party/khronos/GLES2/gl2ext.h" |
+#if defined(GOOGLE_TV) |
+#include "cc/solid_color_draw_quad.h" |
+#endif |
+ |
namespace cc { |
// static |
@@ -89,6 +93,10 @@ static GLenum convertVFCFormatToGLenum(const media::VideoFrame& frame) |
return GL_LUMINANCE; |
case media::VideoFrame::NATIVE_TEXTURE: |
return frame.texture_target(); |
+#if defined(GOOGLE_TV) |
+ case media::VideoFrame::HOLE: |
+ return GL_INVALID_VALUE; |
+#endif |
case media::VideoFrame::INVALID: |
case media::VideoFrame::RGB32: |
case media::VideoFrame::EMPTY: |
@@ -108,6 +116,10 @@ size_t VideoLayerImpl::numPlanes() const |
return 1; |
switch (m_frame->format()) { |
+#if defined(GOOGLE_TV) |
+ case media::VideoFrame::HOLE: |
+ return 0; |
+#endif |
case media::VideoFrame::RGB32: |
return 1; |
case media::VideoFrame::YV12: |
@@ -152,6 +164,11 @@ void VideoLayerImpl::willDrawInternal(ResourceProvider* resourceProvider) |
if (!m_frame) |
return; |
+#if defined(GOOGLE_TV) |
+ if (m_frame->format() == media::VideoFrame::HOLE) |
+ return; |
+#endif |
+ |
m_format = convertVFCFormatToGLenum(*m_frame); |
// If these fail, we'll have to add draw logic that handles offset bitmap/ |
@@ -215,6 +232,27 @@ void VideoLayerImpl::appendQuads(QuadSink& quadSink, AppendQuadsData& appendQuad |
const float texHeightScale = |
static_cast<float>(visibleRect.height()) / codedSize.height(); |
+#if defined(GOOGLE_TV) |
+ // This block and other blocks wrapped around #if defined(GOOGLE_TV) is not |
+ // maintained by the general compositor team. Please contact the following |
+ // people instead: |
+ // |
+ // wonsik@chromium.org |
+ // ycheo@chromium.org |
+ |
+ if (m_frame->format() == media::VideoFrame::HOLE) { |
+ scoped_ptr<SolidColorDrawQuad> solidColorDrawQuad = |
+ SolidColorDrawQuad::Create(); |
+ // Create a solid color quad with transparent black and force no |
+ // blending. |
+ solidColorDrawQuad->SetAll( |
+ sharedQuadState, quadRect, quadRect, quadRect, false, |
+ SK_ColorTRANSPARENT); |
+ quadSink.append(solidColorDrawQuad.PassAs<DrawQuad>(), appendQuadsData); |
+ return; |
+ } |
+#endif |
+ |
switch (m_format) { |
case GL_LUMINANCE: { |
// YUV software decoder. |