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 97d0e153fc7e9e63aafdec3c5e2576de677504d4..fbbfbcaefbe0dc6833caea6d543a7d87e2b855b7 100644 |
--- a/content/renderer/media/audio_renderer_mixer_manager.cc |
+++ b/content/renderer/media/audio_renderer_mixer_manager.cc |
@@ -49,8 +49,9 @@ media::AudioRendererMixer* AudioRendererMixerManager::GetMixer( |
const std::string& device_id, |
const url::Origin& security_origin, |
media::OutputDeviceStatus* device_status) { |
- // Effects are not passed through to output creation, so ensure none are set. |
- DCHECK_EQ(params.effects(), media::AudioParameters::NO_EFFECTS); |
+ // Only the focusable effect is passed through, so ensure no others are set. |
+ DCHECK(params.effects() == media::AudioParameters::NO_EFFECTS || |
+ params.effects() == media::AudioParameters::FOCUSABLE); |
const MixerKey key(source_render_frame_id, params, device_id, |
security_origin); |
@@ -108,6 +109,10 @@ media::AudioRendererMixer* AudioRendererMixerManager::GetMixer( |
media::AudioParameters::AUDIO_PCM_LOW_LATENCY, params.channel_layout(), |
sample_rate, 16, buffer_size); |
+ // Pass through the focusable effect to the output device. |
+ if (params.effects() == media::AudioParameters::FOCUSABLE) |
+ output_params.set_effects(media::AudioParameters::FOCUSABLE); |
+ |
// If we've created invalid output parameters, simply pass on the input |
// params and let the browser side handle automatic fallback. |
if (!output_params.IsValid()) |