Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1057)

Side by Side Diff: content/renderer/media/webmediaplayer_impl.cc

Issue 388643002: Rotation into Video Layer + Content Transform (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed uneeded parameter. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/webmediaplayer_impl.h" 5 #include "content/renderer/media/webmediaplayer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 533
534 // TODO(scherkus): Clarify paint() API contract to better understand when and 534 // TODO(scherkus): Clarify paint() API contract to better understand when and
535 // why it's being called. For example, today paint() is called when: 535 // why it's being called. For example, today paint() is called when:
536 // - We haven't reached HAVE_CURRENT_DATA and need to paint black 536 // - We haven't reached HAVE_CURRENT_DATA and need to paint black
537 // - We're painting to a canvas 537 // - We're painting to a canvas
538 // See http://crbug.com/341225 http://crbug.com/342621 for details. 538 // See http://crbug.com/341225 http://crbug.com/342621 for details.
539 scoped_refptr<media::VideoFrame> video_frame = 539 scoped_refptr<media::VideoFrame> video_frame =
540 GetCurrentFrameFromCompositor(); 540 GetCurrentFrameFromCompositor();
541 541
542 gfx::Rect gfx_rect(rect); 542 gfx::Rect gfx_rect(rect);
543
544 if (pipeline_metadata_.video_rotation == media::VIDEO_ROTATION_90 ||
545 pipeline_metadata_.video_rotation == media::VIDEO_ROTATION_270)
546 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
547 gfx::Size(gfx_rect.size().height(), gfx_rect.size().width()));
548
543 skcanvas_video_renderer_.Paint(video_frame.get(), canvas, gfx_rect, alpha); 549 skcanvas_video_renderer_.Paint(video_frame.get(), canvas, gfx_rect, alpha);
544 } 550 }
545 551
546 bool WebMediaPlayerImpl::hasSingleSecurityOrigin() const { 552 bool WebMediaPlayerImpl::hasSingleSecurityOrigin() const {
547 if (data_source_) 553 if (data_source_)
548 return data_source_->HasSingleOrigin(); 554 return data_source_->HasSingleOrigin();
549 return true; 555 return true;
550 } 556 }
551 557
552 bool WebMediaPlayerImpl::didPassCORSAccessCheck() const { 558 bool WebMediaPlayerImpl::didPassCORSAccessCheck() const {
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
963 969
964 pipeline_metadata_ = metadata; 970 pipeline_metadata_ = metadata;
965 971
966 UMA_HISTOGRAM_ENUMERATION("Media.VideoRotation", 972 UMA_HISTOGRAM_ENUMERATION("Media.VideoRotation",
967 metadata.video_rotation, 973 metadata.video_rotation,
968 media::VIDEO_ROTATION_MAX + 1); 974 media::VIDEO_ROTATION_MAX + 1);
969 SetReadyState(WebMediaPlayer::ReadyStateHaveMetadata); 975 SetReadyState(WebMediaPlayer::ReadyStateHaveMetadata);
970 976
971 if (hasVideo()) { 977 if (hasVideo()) {
972 DCHECK(!video_weblayer_); 978 DCHECK(!video_weblayer_);
973 video_weblayer_.reset( 979 scoped_refptr<cc::VideoLayer> layer = cc::VideoLayer::Create(compositor_);
974 new WebLayerImpl(cc::VideoLayer::Create(compositor_))); 980 layer->set_video_rotation(pipeline_metadata_.video_rotation);
981
982 if (pipeline_metadata_.video_rotation == media::VIDEO_ROTATION_90 ||
983 pipeline_metadata_.video_rotation == media::VIDEO_ROTATION_270) {
984 gfx::Size size = pipeline_metadata_.natural_size;
985 pipeline_metadata_.natural_size = gfx::Size(size.height(), size.width());
986 }
987
988 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
975 video_weblayer_->setOpaque(opaque_); 989 video_weblayer_->setOpaque(opaque_);
976 client_->setWebLayer(video_weblayer_.get()); 990 client_->setWebLayer(video_weblayer_.get());
977 } 991 }
978 992
979 // TODO(scherkus): This should be handled by HTMLMediaElement and controls 993 // TODO(scherkus): This should be handled by HTMLMediaElement and controls
980 // should know when to invalidate themselves http://crbug.com/337015 994 // should know when to invalidate themselves http://crbug.com/337015
981 InvalidateOnMainThread(); 995 InvalidateOnMainThread();
982 } 996 }
983 997
984 void WebMediaPlayerImpl::OnPipelineBufferingStateChanged( 998 void WebMediaPlayerImpl::OnPipelineBufferingStateChanged(
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
1361 compositor_task_runner_->PostTask(FROM_HERE, 1375 compositor_task_runner_->PostTask(FROM_HERE,
1362 base::Bind(&GetCurrentFrameAndSignal, 1376 base::Bind(&GetCurrentFrameAndSignal,
1363 base::Unretained(compositor_), 1377 base::Unretained(compositor_),
1364 &video_frame, 1378 &video_frame,
1365 &event)); 1379 &event));
1366 event.Wait(); 1380 event.Wait();
1367 return video_frame; 1381 return video_frame;
1368 } 1382 }
1369 1383
1370 } // namespace content 1384 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698