Chromium Code Reviews| Index: media/blink/webmediaplayer_impl.cc |
| diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc |
| index 7c67743e982b430e3c7794a1e1d2a3310806ee3c..ea9250fb7ca5e6e552020948fd2cc505fed14c43 100644 |
| --- a/media/blink/webmediaplayer_impl.cc |
| +++ b/media/blink/webmediaplayer_impl.cc |
| @@ -167,6 +167,7 @@ WebMediaPlayerImpl::WebMediaPlayerImpl( |
| base::WeakPtr<WebMediaPlayerDelegate> delegate, |
| std::unique_ptr<RendererFactory> renderer_factory, |
| linked_ptr<UrlIndex> url_index, |
| + RendererController* renderer_controller, |
| const WebMediaPlayerParams& params) |
| : frame_(frame), |
| delegate_state_(DelegateState::GONE), |
| @@ -227,7 +228,8 @@ WebMediaPlayerImpl::WebMediaPlayerImpl( |
| suppress_destruction_errors_(false), |
| can_suspend_state_(CanSuspendState::UNKNOWN), |
| is_encrypted_(false), |
| - underflow_count_(0) { |
| + underflow_count_(0), |
| + renderer_controller_(renderer_controller) { |
| DCHECK(!adjust_allocated_memory_cb_.is_null()); |
| DCHECK(renderer_factory_); |
| DCHECK(client_); |
| @@ -258,11 +260,17 @@ WebMediaPlayerImpl::WebMediaPlayerImpl( |
| params.audio_renderer_sink().get() |
| ? params.audio_renderer_sink() |
| : new NullAudioSink(media_task_runner_)); |
| + |
| + if (renderer_controller_) |
| + renderer_controller_->SetSwitchRenderCallback( |
| + base::Bind(&WebMediaPlayerImpl::ScheduleRestart, AsWeakPtr())); |
| } |
| WebMediaPlayerImpl::~WebMediaPlayerImpl() { |
| DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| + renderer_controller_ = nullptr; |
|
miu
2016/09/28 01:33:31
Along the lines of other comments: Call controller
xjz
2016/09/29 22:54:21
Removed this line.
|
| + |
| suppress_destruction_errors_ = true; |
| if (delegate_) { |
| delegate_->PlayerGone(delegate_id_); |
| @@ -337,11 +345,15 @@ void WebMediaPlayerImpl::DisableOverlay() { |
| void WebMediaPlayerImpl::enteredFullscreen() { |
| if (!force_video_overlays_ && !disable_fullscreen_video_overlays_) |
| EnableOverlay(); |
| + if (renderer_controller_) |
| + renderer_controller_->OnEnteredFullscreen(); |
| } |
| void WebMediaPlayerImpl::exitedFullscreen() { |
| if (!force_video_overlays_ && !disable_fullscreen_video_overlays_) |
| DisableOverlay(); |
| + if (renderer_controller_) |
| + renderer_controller_->OnExitedFullscreen(); |
| } |
| void WebMediaPlayerImpl::DoLoad(LoadType load_type, |
| @@ -953,6 +965,9 @@ void WebMediaPlayerImpl::SetCdm(const CdmAttachedCB& cdm_attached_cb, |
| return; |
| } |
| + if (renderer_controller_) |
| + renderer_controller_->OnSetCdm(cdm_context); |
| + |
| // If CDM initialization succeeded, tell the pipeline about it. |
| pipeline_.SetCdm(cdm_context, cdm_attached_cb); |
| } |
| @@ -1089,6 +1104,10 @@ void WebMediaPlayerImpl::OnMetadata(PipelineMetadata metadata) { |
| video_weblayer_->layer()->SetContentsOpaque(opaque_); |
| video_weblayer_->SetContentsOpaqueIsFixed(true); |
| client_->setWebLayer(video_weblayer_.get()); |
| + if (renderer_controller_) |
| + renderer_controller_->OnSetDecoderConfig( |
|
miu
2016/09/28 01:33:31
naming nit: If this could be called multiple times
xjz
2016/09/29 22:54:21
Done.
|
| + pipeline_metadata_.audio_decoder_config, |
| + pipeline_metadata_.video_decoder_config); |
| } |
| CreateWatchTimeReporter(); |
| @@ -1821,4 +1840,14 @@ void WebMediaPlayerImpl::CreateWatchTimeReporter() { |
| watch_time_reporter_->OnShown(); |
| } |
| +void WebMediaPlayerImpl::ancestorEnteredFullscreen() { |
| + if (renderer_controller_) |
| + renderer_controller_->OnEnteredFullscreen(); |
| +} |
| + |
| +void WebMediaPlayerImpl::ancestorExitedFullscreen() { |
| + if (renderer_controller_) |
| + renderer_controller_->OnExitedFullscreen(); |
| +} |
| + |
| } // namespace media |