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..9a8d82ccc5b9812ebd8bd52ab697ef0fa5a8e588 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,31 @@ 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 new_device_id(device_id); |
|
Guido Urdaneta
2016/04/07 11:14:28
We can avoid this string copy.
The code will be sl
o1ka
2016/04/07 12:40:49
Done.
|
| + |
| + 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); |
| + new_device_id = sink_from_session_id->GetOutputDeviceInfo().device_id(); |
| + |
| + // 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); |
| + new_device_id, security_origin); |
| } |
| media::AudioRendererMixer* AudioRendererMixerManager::GetMixer( |