Chromium Code Reviews| 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..36b163dc4971ea826f7f5381532fed729c4647bb 100644 |
| --- a/chromecast/media/cma/backend/media_pipeline_backend_manager.cc |
| +++ b/chromecast/media/cma/backend/media_pipeline_backend_manager.cc |
| @@ -7,64 +7,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 "base/single_thread_task_runner.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_(media_task_runner) { |
|
alokp
2016/03/31 04:37:24
std::move
tianyuwang1
2016/03/31 18:14:53
Done.
|
| +} |
| -} // namespace |
| +MediaPipelineBackendManager::~MediaPipelineBackendManager() { |
| +} |
| -// static |
| MediaPipelineBackend* MediaPipelineBackendManager::CreateMediaPipelineBackend( |
| const media::MediaPipelineDeviceParams& params) { |
| - DCHECK(MediaMessageLoop::GetTaskRunner()->BelongsToCurrentThread()); |
| + DCHECK(media_task_runner_->BelongsToCurrentThread()); |
| return CreateMediaPipelineBackend(params, 0); |
| } |
| -// static |
| MediaPipelineBackend* MediaPipelineBackendManager::CreateMediaPipelineBackend( |
| const media::MediaPipelineDeviceParams& params, |
| int stream_type) { |
| - DCHECK(MediaMessageLoop::GetTaskRunner()->BelongsToCurrentThread()); |
| - MediaPipelineBackendManager* backend_manager = Get(); |
| + DCHECK(media_task_runner_->BelongsToCurrentThread()); |
| 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); |
| + make_scoped_ptr( |
| + media::CastMediaShlib::CreateMediaPipelineBackend(params)), |
| + stream_type, GetVolumeMultiplier(stream_type), this); |
| + media_pipeline_backends_.push_back(backend_ptr); |
| 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 +66,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; |