| 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..d569e6cac13c0b8dbb255d252d540f023b3c12a2 100644
|
| --- a/chromecast/media/cma/backend/media_pipeline_backend_wrapper.cc
|
| +++ b/chromecast/media/cma/backend/media_pipeline_backend_wrapper.cc
|
| @@ -10,6 +10,8 @@
|
| namespace chromecast {
|
| namespace media {
|
|
|
| +using DecoderType = MediaPipelineBackendManager::DecoderType;
|
| +
|
| MediaPipelineBackendWrapper::MediaPipelineBackendWrapper(
|
| std::unique_ptr<MediaPipelineBackend> backend,
|
| int stream_type,
|
| @@ -20,12 +22,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_->DecrementDecoderCount(DecoderType::AUDIO_DECODER);
|
| + if (have_video_decoder_)
|
| + backend_manager_->DecrementDecoderCount(DecoderType::VIDEO_DECODER);
|
| }
|
|
|
| MediaPipelineBackend::AudioDecoder*
|
| @@ -34,6 +42,9 @@ MediaPipelineBackendWrapper::CreateAudioDecoder() {
|
| if (audio_decoder_wrapper_)
|
| return nullptr;
|
|
|
| + if (!backend_manager_->IncrementDecoderCount(DecoderType::AUDIO_DECODER))
|
| + return nullptr;
|
| +
|
| audio_decoder_wrapper_.reset(
|
| new AudioDecoderWrapper(backend_->CreateAudioDecoder()));
|
| return audio_decoder_wrapper_.get();
|
| @@ -42,6 +53,12 @@ MediaPipelineBackendWrapper::CreateAudioDecoder() {
|
| MediaPipelineBackend::VideoDecoder*
|
| MediaPipelineBackendWrapper::CreateVideoDecoder() {
|
| DCHECK(!is_initialized_);
|
| + DCHECK(!have_video_decoder_);
|
| +
|
| + if (!backend_manager_->IncrementDecoderCount(DecoderType::VIDEO_DECODER))
|
| + return nullptr;
|
| + have_video_decoder_ = true;
|
| +
|
| return backend_->CreateVideoDecoder();
|
| }
|
|
|
|
|