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

Unified Diff: content/browser/media/android/media_player_renderer.cc

Issue 2282633002: Integrate Surface requests with MediaPlayerRenderer (Closed)
Patch Set: Addressed comments. Created 4 years, 3 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
Index: content/browser/media/android/media_player_renderer.cc
diff --git a/content/browser/media/android/media_player_renderer.cc b/content/browser/media/android/media_player_renderer.cc
index 303f532605efa2ac8237ff930f46ed1b8d03078d..c673e427092c9ed56baf94357d25fd1039709112 100644
--- a/content/browser/media/android/media_player_renderer.cc
+++ b/content/browser/media/android/media_player_renderer.cc
@@ -6,6 +6,7 @@
#include <memory>
+#include "content/browser/android/scoped_surface_request_manager.h"
#include "content/browser/media/android/media_resource_getter_impl.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
@@ -23,9 +24,12 @@ namespace content {
MediaPlayerRenderer::MediaPlayerRenderer(RenderFrameHost* render_frame_host)
: render_frame_host_(render_frame_host),
has_error_(false),
+ is_waiting_for_surface_(false),
weak_factory_(this) {}
-MediaPlayerRenderer::~MediaPlayerRenderer() {}
+MediaPlayerRenderer::~MediaPlayerRenderer() {
+ CancelScopedSurfaceRequest();
+}
void MediaPlayerRenderer::Initialize(
media::DemuxerStreamProvider* demuxer_stream_provider,
@@ -56,9 +60,6 @@ void MediaPlayerRenderer::Initialize(
GURL(), // frame_url
false)); // allow_crendentials
- // TODO(tguilbert): Register and Send the proper surface ID. See
- // crbug.com/627658
-
media_player_->Initialize();
init_cb.Run(media::PIPELINE_OK);
}
@@ -99,6 +100,28 @@ void MediaPlayerRenderer::SetPlaybackRate(double playback_rate) {
}
}
+void MediaPlayerRenderer::OnScopedSurfaceRequestCompleted(
+ gl::ScopedJavaSurface surface) {
+ DCHECK(is_waiting_for_surface_);
+ is_waiting_for_surface_ = false;
+ surface_request_token_ = base::UnguessableToken();
+ media_player_->SetVideoSurface(std::move(surface));
+}
+
+base::UnguessableToken MediaPlayerRenderer::InitiateScopedSurfaceRequest() {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
+ CancelScopedSurfaceRequest();
+
+ is_waiting_for_surface_ = true;
+ surface_request_token_ =
+ ScopedSurfaceRequestManager::GetInstance()->RegisterScopedSurfaceRequest(
+ base::Bind(&MediaPlayerRenderer::OnScopedSurfaceRequestCompleted,
+ weak_factory_.GetWeakPtr()));
+
+ return surface_request_token_;
+}
+
void MediaPlayerRenderer::SetVolume(float volume) {
media_player_->SetVolume(volume);
}
@@ -224,4 +247,14 @@ void MediaPlayerRenderer::OnDecoderResourcesReleased(int player_id) {
// See crbug.com/636615.
}
+void MediaPlayerRenderer::CancelScopedSurfaceRequest() {
+ if (!is_waiting_for_surface_)
dcheng 2016/10/03 21:11:27 This bit of state looks like it's always going to
tguilbert 2016/10/03 22:26:19 You are right. Done!
+ return;
+
+ ScopedSurfaceRequestManager::GetInstance()->UnregisterScopedSurfaceRequest(
+ surface_request_token_);
+ surface_request_token_ = base::UnguessableToken();
+ is_waiting_for_surface_ = false;
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698