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

Unified Diff: content/renderer/media/webmediaplayer_ms.cc

Issue 2150203002: Apply rotation for texture backed VideoFrames (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments. Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/media/webmediaplayer_ms.h ('k') | content/renderer/media/webmediaplayer_ms_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/media/webmediaplayer_ms.cc
diff --git a/content/renderer/media/webmediaplayer_ms.cc b/content/renderer/media/webmediaplayer_ms.cc
index b03fedd8d5365e00e9c19a7bc58af7418c6bf407..72f2456a20cac1a2c5efafb44baecf7d7140cef9 100644
--- a/content/renderer/media/webmediaplayer_ms.cc
+++ b/content/renderer/media/webmediaplayer_ms.cc
@@ -25,6 +25,7 @@
#include "content/renderer/render_thread_impl.h"
#include "media/base/media_log.h"
#include "media/base/video_frame.h"
+#include "media/base/video_rotation.h"
#include "media/blink/webmediaplayer_util.h"
#include "third_party/WebKit/public/platform/WebMediaPlayerClient.h"
#include "third_party/WebKit/public/platform/WebMediaPlayerSource.h"
@@ -55,6 +56,7 @@ WebMediaPlayerMS::WebMediaPlayerMS(
paused_(true),
render_frame_suspended_(false),
received_first_frame_(false),
+ video_rotation_(media::VIDEO_ROTATION_0),
media_log_(media_log),
renderer_factory_(std::move(factory)),
media_task_runner_(media_task_runner),
@@ -264,6 +266,11 @@ bool WebMediaPlayerMS::hasAudio() const {
blink::WebSize WebMediaPlayerMS::naturalSize() const {
DCHECK(thread_checker_.CalledOnValidThread());
+ if (video_rotation_ == media::VIDEO_ROTATION_90 ||
+ video_rotation_ == media::VideoRotation::VIDEO_ROTATION_270) {
+ const gfx::Size& current_size = compositor_->GetCurrentSize();
+ return blink::WebSize(current_size.height(), current_size.width());
+ }
return blink::WebSize(compositor_->GetCurrentSize());
}
@@ -345,7 +352,7 @@ void WebMediaPlayerMS::paint(blink::WebCanvas* canvas,
}
const gfx::RectF dest_rect(rect.x, rect.y, rect.width, rect.height);
video_renderer_.Paint(frame, canvas, dest_rect, alpha, mode,
- media::VIDEO_ROTATION_0, context_3d);
+ video_rotation_, context_3d);
}
bool WebMediaPlayerMS::hasSingleSecurityOrigin() const {
@@ -494,8 +501,11 @@ void WebMediaPlayerMS::OnFrameAvailable(
}
if (video_frame_provider_.get()) {
+ ignore_result(frame->metadata()->GetRotation(
+ media::VideoFrameMetadata::ROTATION, &video_rotation_));
+
video_weblayer_.reset(new cc_blink::WebLayerImpl(
- cc::VideoLayer::Create(compositor_.get(), media::VIDEO_ROTATION_0)));
+ cc::VideoLayer::Create(compositor_.get(), video_rotation_)));
video_weblayer_->layer()->SetContentsOpaque(false);
video_weblayer_->SetContentsOpaqueIsFixed(true);
get_client()->setWebLayer(video_weblayer_.get());
« no previous file with comments | « content/renderer/media/webmediaplayer_ms.h ('k') | content/renderer/media/webmediaplayer_ms_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698