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, |