Index: content/renderer/media/webmediaplayer_impl.cc |
diff --git a/content/renderer/media/webmediaplayer_impl.cc b/content/renderer/media/webmediaplayer_impl.cc |
index dccea32354f36909709cf5706ef07c73837b33ee..645b252d0c3b92b21975fcaf88b2bb1f15163b4b 100644 |
--- a/content/renderer/media/webmediaplayer_impl.cc |
+++ b/content/renderer/media/webmediaplayer_impl.cc |
@@ -540,6 +540,12 @@ void WebMediaPlayerImpl::paint(WebCanvas* canvas, |
GetCurrentFrameFromCompositor(); |
gfx::Rect gfx_rect(rect); |
+ |
+ if (pipeline_metadata_.video_rotation == media::VIDEO_ROTATION_90 || |
+ pipeline_metadata_.video_rotation == media::VIDEO_ROTATION_270) |
+ gfx_rect.set_size( |
enne (OOO)
2014/07/21 22:37:14
Whoa, how does this do the right thing? Does the c
suderman
2014/07/21 23:12:12
This is to maintain Canvas's current behavior. As
|
+ gfx::Size(gfx_rect.size().height(), gfx_rect.size().width())); |
+ |
skcanvas_video_renderer_.Paint(video_frame.get(), canvas, gfx_rect, alpha); |
} |
@@ -970,8 +976,16 @@ void WebMediaPlayerImpl::OnPipelineMetadata( |
if (hasVideo()) { |
DCHECK(!video_weblayer_); |
- video_weblayer_.reset( |
- new WebLayerImpl(cc::VideoLayer::Create(compositor_))); |
+ scoped_refptr<cc::VideoLayer> layer = cc::VideoLayer::Create(compositor_); |
+ layer->set_video_rotation(pipeline_metadata_.video_rotation); |
+ |
+ if (pipeline_metadata_.video_rotation == media::VIDEO_ROTATION_90 || |
+ pipeline_metadata_.video_rotation == media::VIDEO_ROTATION_270) { |
+ gfx::Size size = pipeline_metadata_.natural_size; |
+ pipeline_metadata_.natural_size = gfx::Size(size.height(), size.width()); |
+ } |
+ |
+ video_weblayer_.reset(new WebLayerImpl(layer)); |
enne (OOO)
2014/07/21 22:37:14
Can you just set the transform here on the web lay
suderman
2014/07/21 23:12:12
In order to correctly rotate the video layer it mu
enne (OOO)
2014/07/21 23:42:49
And I guess Blink doesn't know at layout time that
|
video_weblayer_->setOpaque(opaque_); |
client_->setWebLayer(video_weblayer_.get()); |
} |