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

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: Fixed android webmediaplayer Created 6 years, 4 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 529 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 540
541 // TODO(scherkus): Clarify paint() API contract to better understand when and 541 // TODO(scherkus): Clarify paint() API contract to better understand when and
542 // why it's being called. For example, today paint() is called when: 542 // why it's being called. For example, today paint() is called when:
543 // - We haven't reached HAVE_CURRENT_DATA and need to paint black 543 // - We haven't reached HAVE_CURRENT_DATA and need to paint black
544 // - We're painting to a canvas 544 // - We're painting to a canvas
545 // See http://crbug.com/341225 http://crbug.com/342621 for details. 545 // See http://crbug.com/341225 http://crbug.com/342621 for details.
546 scoped_refptr<media::VideoFrame> video_frame = 546 scoped_refptr<media::VideoFrame> video_frame =
547 GetCurrentFrameFromCompositor(); 547 GetCurrentFrameFromCompositor();
548 548
549 gfx::Rect gfx_rect(rect); 549 gfx::Rect gfx_rect(rect);
550
551 if (pipeline_metadata_.video_rotation == media::VIDEO_ROTATION_90 ||
552 pipeline_metadata_.video_rotation == media::VIDEO_ROTATION_270) {
553 gfx_rect.set_size(gfx::Size(gfx_rect.size().height(),
554 gfx_rect.size().width()));
555 }
556
550 skcanvas_video_renderer_.Paint(video_frame.get(), canvas, gfx_rect, alpha); 557 skcanvas_video_renderer_.Paint(video_frame.get(), canvas, gfx_rect, alpha);
551 } 558 }
552 559
553 bool WebMediaPlayerImpl::hasSingleSecurityOrigin() const { 560 bool WebMediaPlayerImpl::hasSingleSecurityOrigin() const {
554 if (data_source_) 561 if (data_source_)
555 return data_source_->HasSingleOrigin(); 562 return data_source_->HasSingleOrigin();
556 return true; 563 return true;
557 } 564 }
558 565
559 bool WebMediaPlayerImpl::didPassCORSAccessCheck() const { 566 bool WebMediaPlayerImpl::didPassCORSAccessCheck() const {
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
939 946
940 pipeline_metadata_ = metadata; 947 pipeline_metadata_ = metadata;
941 948
942 UMA_HISTOGRAM_ENUMERATION("Media.VideoRotation", 949 UMA_HISTOGRAM_ENUMERATION("Media.VideoRotation",
943 metadata.video_rotation, 950 metadata.video_rotation,
944 media::VIDEO_ROTATION_MAX + 1); 951 media::VIDEO_ROTATION_MAX + 1);
945 SetReadyState(WebMediaPlayer::ReadyStateHaveMetadata); 952 SetReadyState(WebMediaPlayer::ReadyStateHaveMetadata);
946 953
947 if (hasVideo()) { 954 if (hasVideo()) {
948 DCHECK(!video_weblayer_); 955 DCHECK(!video_weblayer_);
949 video_weblayer_.reset( 956 scoped_refptr<cc::VideoLayer> layer =
950 new WebLayerImpl(cc::VideoLayer::Create(compositor_))); 957 cc::VideoLayer::Create(compositor_, pipeline_metadata_.video_rotation);
958
959 if (pipeline_metadata_.video_rotation == media::VIDEO_ROTATION_90 ||
960 pipeline_metadata_.video_rotation == media::VIDEO_ROTATION_270) {
961 gfx::Size size = pipeline_metadata_.natural_size;
962 pipeline_metadata_.natural_size = gfx::Size(size.height(), size.width());
963 }
964
965 video_weblayer_.reset(new WebLayerImpl(layer));
951 video_weblayer_->setOpaque(opaque_); 966 video_weblayer_->setOpaque(opaque_);
952 client_->setWebLayer(video_weblayer_.get()); 967 client_->setWebLayer(video_weblayer_.get());
953 } 968 }
954 } 969 }
955 970
956 void WebMediaPlayerImpl::OnPipelineBufferingStateChanged( 971 void WebMediaPlayerImpl::OnPipelineBufferingStateChanged(
957 media::BufferingState buffering_state) { 972 media::BufferingState buffering_state) {
958 DVLOG(1) << __FUNCTION__ << "(" << buffering_state << ")"; 973 DVLOG(1) << __FUNCTION__ << "(" << buffering_state << ")";
959 974
960 // Ignore buffering state changes until we've completed all outstanding seeks. 975 // Ignore buffering state changes until we've completed all outstanding seeks.
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
1325 compositor_task_runner_->PostTask(FROM_HERE, 1340 compositor_task_runner_->PostTask(FROM_HERE,
1326 base::Bind(&GetCurrentFrameAndSignal, 1341 base::Bind(&GetCurrentFrameAndSignal,
1327 base::Unretained(compositor_), 1342 base::Unretained(compositor_),
1328 &video_frame, 1343 &video_frame,
1329 &event)); 1344 &event));
1330 event.Wait(); 1345 event.Wait();
1331 return video_frame; 1346 return video_frame;
1332 } 1347 }
1333 1348
1334 } // namespace content 1349 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/android/webmediaplayer_android.cc ('k') | content/renderer/media/webmediaplayer_ms.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698