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 cc3061cf8c3cf3cfdf8cd624fd3bdcd12ec3119d..9ada5d3c556ff56549e4efc3688181613fd88e89 100644 |
--- a/content/renderer/media/audio_renderer_mixer_manager.cc |
+++ b/content/renderer/media/audio_renderer_mixer_manager.cc |
@@ -88,16 +88,24 @@ media::AudioRendererMixer* AudioRendererMixerManager::GetMixer( |
#if defined(OS_CHROMEOS) |
int sample_rate = params.sample_rate(); |
#else |
- int sample_rate = hardware_params.sample_rate(); |
+ int sample_rate = |
+ hardware_params.format() != media::AudioParameters::AUDIO_FAKE |
+ ? hardware_params.sample_rate() |
+ : params.sample_rate(); |
#endif |
+ int buffer_size = |
+ hardware_params.format() != media::AudioParameters::AUDIO_FAKE |
+ ? media::AudioHardwareConfig::GetHighLatencyBufferSize( |
+ hardware_params) |
+ : params.frames_per_buffer(); |
+ |
// Create output parameters based on the audio hardware configuration for |
// passing on to the output sink. Force to 16-bit output for now since we |
// know that works everywhere; ChromeOS does not support other bit depths. |
media::AudioParameters output_params( |
media::AudioParameters::AUDIO_PCM_LOW_LATENCY, params.channel_layout(), |
- sample_rate, 16, |
- media::AudioHardwareConfig::GetHighLatencyBufferSize(hardware_params)); |
+ sample_rate, 16, buffer_size); |
// If we've created invalid output parameters, simply pass on the input |
// params and let the browser side handle automatic fallback. |