Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2024)

Unified Diff: chromecast/media/cma/backend/media_pipeline_backend_wrapper.cc

Issue 2173593002: [Chromecast] Limit number of concurrent audio and video decoders (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Increment/decrement API Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();
}

Powered by Google App Engine
This is Rietveld 408576698