Chromium Code Reviews| Index: media/renderers/renderer_impl.cc |
| diff --git a/media/renderers/renderer_impl.cc b/media/renderers/renderer_impl.cc |
| index 87212d8214423f6ed38b7cd4344feca1ae16476e..210e5cc574f2437b4368c498f56b02facf5c1e61 100644 |
| --- a/media/renderers/renderer_impl.cc |
| +++ b/media/renderers/renderer_impl.cc |
| @@ -131,24 +131,11 @@ void RendererImpl::Initialize(DemuxerStreamProvider* demuxer_stream_provider, |
| DCHECK_EQ(state_, STATE_UNINITIALIZED); |
| DCHECK(!init_cb.is_null()); |
| DCHECK(client); |
| - DCHECK(demuxer_stream_provider->GetStream(DemuxerStream::AUDIO) || |
| - demuxer_stream_provider->GetStream(DemuxerStream::VIDEO)); |
| client_ = client; |
| demuxer_stream_provider_ = demuxer_stream_provider; |
| init_cb_ = init_cb; |
| - DemuxerStream* audio_stream = |
| - demuxer_stream_provider->GetStream(DemuxerStream::AUDIO); |
| - if (audio_stream) |
| - audio_stream->SetStreamStatusChangeCB(base::Bind( |
| - &RendererImpl::RestartStreamPlayback, weak_this_, audio_stream)); |
| - DemuxerStream* video_stream = |
| - demuxer_stream_provider->GetStream(DemuxerStream::VIDEO); |
| - if (video_stream) |
| - video_stream->SetStreamStatusChangeCB(base::Bind( |
| - &RendererImpl::RestartStreamPlayback, weak_this_, video_stream)); |
| - |
| if (HasEncryptedStream() && !cdm_context_) { |
| state_ = STATE_INIT_PENDING_CDM; |
| return; |
| @@ -384,19 +371,23 @@ void RendererImpl::InitializeAudioRenderer() { |
| PipelineStatusCB done_cb = |
| base::Bind(&RendererImpl::OnAudioRendererInitializeDone, weak_this_); |
| - if (!demuxer_stream_provider_->GetStream(DemuxerStream::AUDIO)) { |
| + DemuxerStream* audio_stream = |
| + demuxer_stream_provider_->GetStream(DemuxerStream::AUDIO); |
| + if (!audio_stream) { |
| audio_renderer_.reset(); |
| task_runner_->PostTask(FROM_HERE, base::Bind(done_cb, PIPELINE_OK)); |
| return; |
| } |
| + audio_stream->SetStreamStatusChangeCB(base::Bind( |
| + &RendererImpl::RestartStreamPlayback, weak_this_, audio_stream)); |
|
DaleCurtis
2016/12/13 00:31:38
Should we be binding in the audio_stream pointer l
servolk
2016/12/13 00:46:50
As I've explained in my previous reply, this shoul
|
| + |
| audio_renderer_client_.reset( |
| new RendererClientInternal(DemuxerStream::AUDIO, this)); |
| // Note: After the initialization of a renderer, error events from it may |
| // happen at any time and all future calls must guard against STATE_ERROR. |
| - audio_renderer_->Initialize( |
| - demuxer_stream_provider_->GetStream(DemuxerStream::AUDIO), cdm_context_, |
| - audio_renderer_client_.get(), done_cb); |
| + audio_renderer_->Initialize(audio_stream, cdm_context_, |
| + audio_renderer_client_.get(), done_cb); |
| } |
| void RendererImpl::OnAudioRendererInitializeDone(PipelineStatus status) { |
| @@ -429,17 +420,21 @@ void RendererImpl::InitializeVideoRenderer() { |
| PipelineStatusCB done_cb = |
| base::Bind(&RendererImpl::OnVideoRendererInitializeDone, weak_this_); |
| - if (!demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO)) { |
| + DemuxerStream* video_stream = |
| + demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO); |
| + if (!video_stream) { |
| video_renderer_.reset(); |
| task_runner_->PostTask(FROM_HERE, base::Bind(done_cb, PIPELINE_OK)); |
| return; |
| } |
| + video_stream->SetStreamStatusChangeCB(base::Bind( |
| + &RendererImpl::RestartStreamPlayback, weak_this_, video_stream)); |
|
DaleCurtis
2016/12/13 00:31:38
Ditto.
servolk
2016/12/13 00:46:50
Same.
|
| + |
| video_renderer_client_.reset( |
| new RendererClientInternal(DemuxerStream::VIDEO, this)); |
| video_renderer_->Initialize( |
| - demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO), cdm_context_, |
| - video_renderer_client_.get(), |
| + video_stream, cdm_context_, video_renderer_client_.get(), |
| base::Bind(&RendererImpl::GetWallClockTimes, base::Unretained(this)), |
| done_cb); |
| } |