| Index: media/blink/webmediaplayer_impl.cc
|
| diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
|
| index 8fa7a7f57f25761458bd9a4298c0816e0652703a..ab62772c2b205e9920bca514ee9a677d865f4d58 100644
|
| --- a/media/blink/webmediaplayer_impl.cc
|
| +++ b/media/blink/webmediaplayer_impl.cc
|
| @@ -133,13 +133,8 @@
|
| context_3d_cb_(params.context_3d_cb()),
|
| supports_save_(true),
|
| chunk_demuxer_(NULL),
|
| - // Threaded compositing isn't enabled universally yet.
|
| - compositor_task_runner_(
|
| - params.compositor_task_runner()
|
| - ? params.compositor_task_runner()
|
| - : base::MessageLoop::current()->task_runner()),
|
| + compositor_task_runner_(params.compositor_task_runner()),
|
| compositor_(new VideoFrameCompositor(
|
| - compositor_task_runner_,
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnNaturalSizeChanged),
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnOpacityChanged))),
|
| encrypted_media_support_(cdm_factory,
|
| @@ -149,6 +144,10 @@
|
| AsWeakPtr(),
|
| base::Bind(&IgnoreCdmAttached))),
|
| renderer_factory_(renderer_factory.Pass()) {
|
| + // Threaded compositing isn't enabled universally yet.
|
| + if (!compositor_task_runner_.get())
|
| + compositor_task_runner_ = base::MessageLoopProxy::current();
|
| +
|
| media_log_->AddEvent(
|
| media_log_->CreateEvent(MediaLogEvent::WEBMEDIAPLAYER_CREATED));
|
|
|
| @@ -903,13 +902,14 @@
|
|
|
| pipeline_.Start(
|
| demuxer_.get(),
|
| - renderer_factory_->CreateRenderer(
|
| - media_task_runner_, audio_source_provider_.get(), compositor_),
|
| + renderer_factory_->CreateRenderer(media_task_runner_,
|
| + audio_source_provider_.get()),
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineEnded),
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineError),
|
| BIND_TO_RENDER_LOOP1(&WebMediaPlayerImpl::OnPipelineSeeked, false),
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineMetadata),
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineBufferingStateChanged),
|
| + base::Bind(&WebMediaPlayerImpl::FrameReady, base::Unretained(this)),
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnDurationChanged),
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnAddTextTrack),
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnWaitingForDecryptionKey));
|
| @@ -978,6 +978,15 @@
|
| opaque_ = opaque;
|
| if (video_weblayer_)
|
| video_weblayer_->setOpaque(opaque_);
|
| +}
|
| +
|
| +void WebMediaPlayerImpl::FrameReady(
|
| + const scoped_refptr<VideoFrame>& frame) {
|
| + compositor_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&VideoFrameCompositor::UpdateCurrentFrame,
|
| + base::Unretained(compositor_),
|
| + frame));
|
| }
|
|
|
| static void GetCurrentFrameAndSignal(
|
| @@ -985,7 +994,7 @@
|
| scoped_refptr<VideoFrame>* video_frame_out,
|
| base::WaitableEvent* event) {
|
| TRACE_EVENT0("media", "GetCurrentFrameAndSignal");
|
| - *video_frame_out = compositor->GetCurrentFrameAndUpdateIfStale();
|
| + *video_frame_out = compositor->GetCurrentFrame();
|
| event->Signal();
|
| }
|
|
|
|
|