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 c96b83f60b316a42f8806c9869cc40d37e1d8739..901d368fbb1ff582b9728fe52f4840f0f4c8bcd7 100644 |
| --- a/content/renderer/media/audio_renderer_mixer_manager.cc |
| +++ b/content/renderer/media/audio_renderer_mixer_manager.cc |
| @@ -35,7 +35,10 @@ media::AudioRendererMixerInput* AudioRendererMixerManager::CreateInput( |
| source_render_frame_id), |
| base::Bind(&AudioRendererMixerManager::RemoveMixer, |
| base::Unretained(this), source_render_frame_id), |
| - device_id, security_origin); |
| + base::Bind(&AudioRendererMixerManager::GetHardwareOutputParams, |
| + source_render_frame_id, 0), // Session id is 0. |
| + device_id, |
| + security_origin); |
| } |
| void AudioRendererMixerManager::SetAudioRendererSinkForTesting( |
| @@ -137,6 +140,31 @@ void AudioRendererMixerManager::RemoveMixer( |
| } |
| } |
| +// static |
| +media::AudioParameters AudioRendererMixerManager::GetHardwareOutputParams( |
| + int render_frame_id, |
| + int session_id, |
| + const std::string& device_id, |
| + const url::Origin& security_origin) { |
| + media::AudioParameters params; // Invalid parameters to return by default. |
| + |
| + // TODO(olka): first try to lookup an existing device (cached or belonging |
|
Henrik Grunell
2016/02/15 12:21:17
Nit: first -> First
o1ka
2016/02/17 17:40:44
Done.
|
| + // to some mixer) and reuse it. http://crbug.com/586161 |
| + |
| + // AudioOutputDevice is the only interface we have to communicate with output |
| + // device via IPC. So, that's how we get the parameters when there is no |
| + // AudioOutputDevice: |
| + scoped_refptr<media::AudioOutputDevice> device = |
| + AudioDeviceFactory::NewOutputDevice(render_frame_id, session_id, |
| + device_id, security_origin); |
| + |
| + if (device->GetDeviceStatus() == media::OUTPUT_DEVICE_STATUS_OK) |
| + params = device->GetOutputParameters(); |
| + |
| + device->Stop(); // TODO(olka): temporary cash for future reuse. |
|
Henrik Grunell
2016/02/15 12:21:17
Seems like the same todo as above. If yes, remove
o1ka
2016/02/17 17:40:44
Not the same/ The first is about using a cached de
|
| + return params; |
| +} |
| + |
| AudioRendererMixerManager::MixerKey::MixerKey( |
| int source_render_frame_id, |
| const media::AudioParameters& params, |