| Index: chromecast/media/cma/backend/media_pipeline_backend_manager.cc
|
| diff --git a/chromecast/media/cma/backend/media_pipeline_backend_manager.cc b/chromecast/media/cma/backend/media_pipeline_backend_manager.cc
|
| index d0db5adf3e4ed750f0e08710e307add1f519f44c..2013384a75c97a28e40f70c430235e3fa2c05137 100644
|
| --- a/chromecast/media/cma/backend/media_pipeline_backend_manager.cc
|
| +++ b/chromecast/media/cma/backend/media_pipeline_backend_manager.cc
|
| @@ -6,65 +6,58 @@
|
|
|
| #include <algorithm>
|
|
|
| -#include "base/bind.h"
|
| -#include "base/lazy_instance.h"
|
| -#include "base/location.h"
|
| -#include "chromecast/media/base/media_message_loop.h"
|
| #include "chromecast/media/cma/backend/media_pipeline_backend_wrapper.h"
|
| #include "chromecast/public/cast_media_shlib.h"
|
|
|
| namespace chromecast {
|
| namespace media {
|
|
|
| -namespace {
|
| -
|
| -base::LazyInstance<MediaPipelineBackendManager> g_instance =
|
| - LAZY_INSTANCE_INITIALIZER;
|
| +MediaPipelineBackendManager::MediaPipelineBackendManager(
|
| + scoped_refptr<base::SingleThreadTaskRunner> media_task_runner)
|
| + : media_task_runner_(std::move(media_task_runner)) {
|
| +}
|
|
|
| -} // namespace
|
| +MediaPipelineBackendManager::~MediaPipelineBackendManager() {
|
| +}
|
|
|
| -// static
|
| -MediaPipelineBackend* MediaPipelineBackendManager::CreateMediaPipelineBackend(
|
| +scoped_ptr<MediaPipelineBackend>
|
| +MediaPipelineBackendManager::CreateMediaPipelineBackend(
|
| const media::MediaPipelineDeviceParams& params) {
|
| - DCHECK(MediaMessageLoop::GetTaskRunner()->BelongsToCurrentThread());
|
| + DCHECK(media_task_runner_->BelongsToCurrentThread());
|
| return CreateMediaPipelineBackend(params, 0);
|
| }
|
|
|
| -// static
|
| -MediaPipelineBackend* MediaPipelineBackendManager::CreateMediaPipelineBackend(
|
| +scoped_ptr<MediaPipelineBackend>
|
| +MediaPipelineBackendManager::CreateMediaPipelineBackend(
|
| const media::MediaPipelineDeviceParams& params,
|
| int stream_type) {
|
| - DCHECK(MediaMessageLoop::GetTaskRunner()->BelongsToCurrentThread());
|
| - MediaPipelineBackendManager* backend_manager = Get();
|
| - MediaPipelineBackendWrapper* backend_ptr = new MediaPipelineBackendWrapper(
|
| - media::CastMediaShlib::CreateMediaPipelineBackend(params), stream_type,
|
| - backend_manager->GetVolumeMultiplier(stream_type));
|
| - backend_manager->media_pipeline_backends_.push_back(backend_ptr);
|
| + DCHECK(media_task_runner_->BelongsToCurrentThread());
|
| + scoped_ptr<MediaPipelineBackend> backend_ptr(new MediaPipelineBackendWrapper(
|
| + make_scoped_ptr(
|
| + media::CastMediaShlib::CreateMediaPipelineBackend(params)),
|
| + stream_type, GetVolumeMultiplier(stream_type), this));
|
| + media_pipeline_backends_.push_back(backend_ptr.get());
|
| return backend_ptr;
|
| }
|
|
|
| -// static
|
| void MediaPipelineBackendManager::OnMediaPipelineBackendDestroyed(
|
| const MediaPipelineBackend* backend) {
|
| - DCHECK(MediaMessageLoop::GetTaskRunner()->BelongsToCurrentThread());
|
| - MediaPipelineBackendManager* backend_manager = Get();
|
| - backend_manager->media_pipeline_backends_.erase(
|
| - std::remove(backend_manager->media_pipeline_backends_.begin(),
|
| - backend_manager->media_pipeline_backends_.end(), backend),
|
| - backend_manager->media_pipeline_backends_.end());
|
| + DCHECK(media_task_runner_->BelongsToCurrentThread());
|
| + media_pipeline_backends_.erase(
|
| + std::remove(media_pipeline_backends_.begin(),
|
| + media_pipeline_backends_.end(), backend),
|
| + media_pipeline_backends_.end());
|
| }
|
|
|
| -// static
|
| void MediaPipelineBackendManager::SetVolumeMultiplier(int stream_type,
|
| float volume) {
|
| - DCHECK(MediaMessageLoop::GetTaskRunner()->BelongsToCurrentThread());
|
| - MediaPipelineBackendManager* backend_manager = Get();
|
| + DCHECK(media_task_runner_->BelongsToCurrentThread());
|
| volume = std::max(0.0f, std::min(volume, 1.0f));
|
| - backend_manager->volume_by_stream_type_[stream_type] = volume;
|
| + volume_by_stream_type_[stream_type] = volume;
|
|
|
| // Set volume for each open media pipeline backends.
|
| - for (auto it = backend_manager->media_pipeline_backends_.begin();
|
| - it != backend_manager->media_pipeline_backends_.end(); it++) {
|
| + for (auto it = media_pipeline_backends_.begin();
|
| + it != media_pipeline_backends_.end(); it++) {
|
| MediaPipelineBackendWrapper* wrapper =
|
| static_cast<MediaPipelineBackendWrapper*>(*it);
|
| if (wrapper->GetStreamType() == stream_type)
|
| @@ -72,22 +65,10 @@ void MediaPipelineBackendManager::SetVolumeMultiplier(int stream_type,
|
| }
|
| }
|
|
|
| -// static
|
| -MediaPipelineBackendManager* MediaPipelineBackendManager::Get() {
|
| - return g_instance.Pointer();
|
| -}
|
| -
|
| -MediaPipelineBackendManager::MediaPipelineBackendManager() {
|
| -}
|
| -
|
| -MediaPipelineBackendManager::~MediaPipelineBackendManager() {
|
| -}
|
| -
|
| float MediaPipelineBackendManager::GetVolumeMultiplier(int stream_type) {
|
| - DCHECK(MediaMessageLoop::GetTaskRunner()->BelongsToCurrentThread());
|
| - MediaPipelineBackendManager* backend_manager = Get();
|
| - auto it = backend_manager->volume_by_stream_type_.find(stream_type);
|
| - if (it == backend_manager->volume_by_stream_type_.end()) {
|
| + DCHECK(media_task_runner_->BelongsToCurrentThread());
|
| + auto it = volume_by_stream_type_.find(stream_type);
|
| + if (it == volume_by_stream_type_.end()) {
|
| return 1.0;
|
| } else {
|
| return it->second;
|
|
|