| 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 3b7708bbce62af48e2a30ff7c2c19da426833f08..f747407cc5fb9341439254b52ccb9743bc3f0c0c 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,
|
| @@ -57,9 +61,6 @@ void MediaPlayerRenderer::Initialize(
|
| false, // allow_crendentials
|
| 0)); // media_session_id
|
|
|
| - // TODO(tguilbert): Register and Send the proper surface ID. See
|
| - // crbug.com/627658
|
| -
|
| media_player_->Initialize();
|
| init_cb.Run(media::PIPELINE_OK);
|
| }
|
| @@ -100,6 +101,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);
|
| }
|
| @@ -225,4 +248,14 @@ void MediaPlayerRenderer::OnDecoderResourcesReleased(int player_id) {
|
| // See crbug.com/636615.
|
| }
|
|
|
| +void MediaPlayerRenderer::CancelScopedSurfaceRequest() {
|
| + if (!is_waiting_for_surface_)
|
| + return;
|
| +
|
| + ScopedSurfaceRequestManager::GetInstance()->UnregisterScopedSurfaceRequest(
|
| + surface_request_token_);
|
| + surface_request_token_ = base::UnguessableToken();
|
| + is_waiting_for_surface_ = false;
|
| +}
|
| +
|
| } // namespace content
|
|
|