Chromium Code Reviews| Index: content/renderer/media/audio_renderer_mixer_manager.cc |
| diff --git a/content/renderer/media/audio_renderer_mixer_manager.cc b/content/renderer/media/audio_renderer_mixer_manager.cc |
| index 14359b3b967ad00406c2443742f1904e0fe8da70..9cf91e9427015ab2ca50a1bd08a1cb3b65efb955 100644 |
| --- a/content/renderer/media/audio_renderer_mixer_manager.cc |
| +++ b/content/renderer/media/audio_renderer_mixer_manager.cc |
| @@ -10,7 +10,7 @@ |
| #include "base/bind_helpers.h" |
| #include "build/build_config.h" |
| #include "content/renderer/media/audio_device_factory.h" |
| -#include "media/audio/audio_output_device.h" |
| +#include "media/audio/audio_manager_base.h" |
| #include "media/base/audio_hardware_config.h" |
| #include "media/base/audio_renderer_mixer.h" |
| #include "media/base/audio_renderer_mixer_input.h" |
| @@ -27,15 +27,34 @@ AudioRendererMixerManager::~AudioRendererMixerManager() { |
| media::AudioRendererMixerInput* AudioRendererMixerManager::CreateInput( |
| int source_render_frame_id, |
| + int session_id, |
| const std::string& device_id, |
| const url::Origin& security_origin) { |
| + std::string device_id_from_session; |
| + bool from_session = false; |
| + |
| + if (media::AudioManagerBase::UseSessionIdToSelectDevice(session_id, |
| + device_id)) { |
| + // Output sink should be selected basing on |session_id| |
| + scoped_refptr<media::AudioRendererSink> sink_from_session_id = |
| + AudioDeviceFactory::NewAudioRendererMixerSink( |
| + source_render_frame_id, session_id, device_id, security_origin); |
| + device_id_from_session = |
|
Guido Urdaneta
2016/04/07 15:27:15
You can also avoid this copy.
Save the callbacks p
|
| + sink_from_session_id->GetOutputDeviceInfo().device_id(); |
| + from_session = true; |
| + |
| + // TODO(olka): Cache it and reuse, http://crbug.com/586161 |
| + sink_from_session_id->Stop(); |
| + } |
| + |
| + // At this point the output device is represented by |new_device_id| and |
| + // |session_id| can (and should) be safely ignored. |
| return new media::AudioRendererMixerInput( |
| base::Bind(&AudioRendererMixerManager::GetMixer, base::Unretained(this), |
| source_render_frame_id), |
| base::Bind(&AudioRendererMixerManager::RemoveMixer, |
| base::Unretained(this), source_render_frame_id), |
| - device_id, |
| - security_origin); |
| + from_session ? device_id_from_session : device_id, security_origin); |
| } |
| media::AudioRendererMixer* AudioRendererMixerManager::GetMixer( |