Chromium Code Reviews| 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()); |
| } |