Chromium Code Reviews| Index: chromecast/media/cma/backend/media_pipeline_backend_wrapper.cc |
| diff --git a/chromecast/media/cma/backend/media_pipeline_backend_wrapper.cc b/chromecast/media/cma/backend/media_pipeline_backend_wrapper.cc |
| index 89cd79a41f5a704dc76d94461e8b44a76cbd6825..0727a9ac8a79fd4f9877e975615f9c29bc54c730 100644 |
| --- a/chromecast/media/cma/backend/media_pipeline_backend_wrapper.cc |
| +++ b/chromecast/media/cma/backend/media_pipeline_backend_wrapper.cc |
| @@ -20,12 +20,18 @@ MediaPipelineBackendWrapper::MediaPipelineBackendWrapper( |
| audio_decoder_wrapper_(nullptr), |
| stream_type_volume_(stream_type_volume), |
| is_initialized_(false), |
| + have_video_decoder_(false), |
| backend_manager_(backend_manager) { |
| DCHECK(backend_); |
| } |
| MediaPipelineBackendWrapper::~MediaPipelineBackendWrapper() { |
| backend_manager_->OnMediaPipelineBackendDestroyed(this); |
| + |
| + if (audio_decoder_wrapper_) |
| + backend_manager_->DecrementAudioDecoderCount(); |
| + if (have_video_decoder_) |
| + backend_manager_->DecrementVideoDecoderCount(); |
|
kmackay
2016/07/22 16:50:07
Can't we have multiple video decoders (for DolbyVi
kmackay
2016/07/22 16:53:08
I think, since the API allows you to create multip
halliwell
2016/07/22 17:16:29
DV is handled by a single video decoder. You can
halliwell
2016/07/22 17:16:29
Although the API does, the implementation doesn't
|
| } |
| MediaPipelineBackend::AudioDecoder* |
| @@ -34,6 +40,9 @@ MediaPipelineBackendWrapper::CreateAudioDecoder() { |
| if (audio_decoder_wrapper_) |
| return nullptr; |
| + if (!backend_manager_->IncrementAudioDecoderCount()) |
| + return nullptr; |
| + |
| audio_decoder_wrapper_.reset( |
| new AudioDecoderWrapper(backend_->CreateAudioDecoder())); |
| return audio_decoder_wrapper_.get(); |
| @@ -42,6 +51,10 @@ MediaPipelineBackendWrapper::CreateAudioDecoder() { |
| MediaPipelineBackend::VideoDecoder* |
| MediaPipelineBackendWrapper::CreateVideoDecoder() { |
| DCHECK(!is_initialized_); |
| + if (!backend_manager_->IncrementVideoDecoderCount()) |
| + return nullptr; |
| + have_video_decoder_ = true; |
| + |
| return backend_->CreateVideoDecoder(); |
| } |