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(); |
} |