| Index: chromecast/media/cma/backend/media_pipeline_backend_manager.h
|
| diff --git a/chromecast/media/cma/backend/media_pipeline_backend_manager.h b/chromecast/media/cma/backend/media_pipeline_backend_manager.h
|
| index 54e6f205ad0e4d2cdfdbedb5c4fa01c2035ae031..3cb327609c5321642c77e1baca888dcec900ece5 100644
|
| --- a/chromecast/media/cma/backend/media_pipeline_backend_manager.h
|
| +++ b/chromecast/media/cma/backend/media_pipeline_backend_manager.h
|
| @@ -23,6 +23,8 @@ namespace media {
|
| // All functions in this class should be called on the media thread.
|
| class MediaPipelineBackendManager {
|
| public:
|
| + enum DecoderType { AUDIO_DECODER, VIDEO_DECODER, NUM_DECODER_TYPES };
|
| +
|
| explicit MediaPipelineBackendManager(
|
| scoped_refptr<base::SingleThreadTaskRunner> media_task_runner);
|
| ~MediaPipelineBackendManager();
|
| @@ -49,6 +51,11 @@ class MediaPipelineBackendManager {
|
| private:
|
| friend class MediaPipelineBackendWrapper;
|
|
|
| + // Backend wrapper instances must use these APIs when allocating and releasing
|
| + // decoder objects, so we can enforce global limit on #concurrent decoders.
|
| + bool IncrementDecoderCount(DecoderType type);
|
| + void DecrementDecoderCount(DecoderType type);
|
| +
|
| // Internal clean up when a new media pipeline backend is destroyed.
|
| void OnMediaPipelineBackendDestroyed(const MediaPipelineBackend* backend);
|
|
|
| @@ -59,6 +66,9 @@ class MediaPipelineBackendManager {
|
| // A vector that stores all of the existing media_pipeline_backends_.
|
| std::vector<MediaPipelineBackend*> media_pipeline_backends_;
|
|
|
| + // Total count of decoders created
|
| + int decoder_count_[NUM_DECODER_TYPES];
|
| +
|
| // Volume multiplier for each type of audio streams.
|
| std::map<int, float> volume_by_stream_type_;
|
|
|
|
|