Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(461)

Side by Side Diff: content/renderer/media/audio_renderer_mixer_manager.cc

Issue 1580493004: Plumb audio focus support for spitzer clients. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@delegate_hookup
Patch Set: Rebase. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/audio_renderer_mixer_manager.h" 5 #include "content/renderer/media/audio_renderer_mixer_manager.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 media::AudioRendererSink* sink) { 42 media::AudioRendererSink* sink) {
43 sink_for_testing_ = sink; 43 sink_for_testing_ = sink;
44 } 44 }
45 45
46 media::AudioRendererMixer* AudioRendererMixerManager::GetMixer( 46 media::AudioRendererMixer* AudioRendererMixerManager::GetMixer(
47 int source_render_frame_id, 47 int source_render_frame_id,
48 const media::AudioParameters& params, 48 const media::AudioParameters& params,
49 const std::string& device_id, 49 const std::string& device_id,
50 const url::Origin& security_origin, 50 const url::Origin& security_origin,
51 media::OutputDeviceStatus* device_status) { 51 media::OutputDeviceStatus* device_status) {
52 // Effects are not passed through to output creation, so ensure none are set. 52 // Only the focusable effect is passed through, so ensure no others are set.
53 DCHECK_EQ(params.effects(), media::AudioParameters::NO_EFFECTS); 53 DCHECK(params.effects() == media::AudioParameters::NO_EFFECTS ||
54 params.effects() == media::AudioParameters::FOCUSABLE);
54 55
55 const MixerKey key(source_render_frame_id, params, device_id, 56 const MixerKey key(source_render_frame_id, params, device_id,
56 security_origin); 57 security_origin);
57 base::AutoLock auto_lock(mixers_lock_); 58 base::AutoLock auto_lock(mixers_lock_);
58 59
59 AudioRendererMixerMap::iterator it = mixers_.find(key); 60 AudioRendererMixerMap::iterator it = mixers_.find(key);
60 if (it != mixers_.end()) { 61 if (it != mixers_.end()) {
61 if (device_status) 62 if (device_status)
62 *device_status = media::OUTPUT_DEVICE_STATUS_OK; 63 *device_status = media::OUTPUT_DEVICE_STATUS_OK;
63 64
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 sample_rate, hardware_params.frames_per_buffer()); 102 sample_rate, hardware_params.frames_per_buffer());
102 } 103 }
103 #endif 104 #endif
104 105
105 // Create output parameters based on the audio hardware configuration for 106 // Create output parameters based on the audio hardware configuration for
106 // passing on to the output sink. Force to 16-bit output for now since we 107 // passing on to the output sink. Force to 16-bit output for now since we
107 // know that works everywhere; ChromeOS does not support other bit depths. 108 // know that works everywhere; ChromeOS does not support other bit depths.
108 media::AudioParameters output_params( 109 media::AudioParameters output_params(
109 media::AudioParameters::AUDIO_PCM_LOW_LATENCY, params.channel_layout(), 110 media::AudioParameters::AUDIO_PCM_LOW_LATENCY, params.channel_layout(),
110 sample_rate, 16, buffer_size); 111 sample_rate, 16, buffer_size);
112
113 // Pass through the focusable effect to the output device.
114 if (params.effects() == media::AudioParameters::FOCUSABLE)
115 output_params.set_effects(media::AudioParameters::FOCUSABLE);
111 DCHECK(output_params.IsValid()); 116 DCHECK(output_params.IsValid());
112 117
113 media::AudioRendererMixer* mixer = 118 media::AudioRendererMixer* mixer =
114 new media::AudioRendererMixer(output_params, sink); 119 new media::AudioRendererMixer(output_params, sink);
115 AudioRendererMixerReference mixer_reference = { mixer, 1 }; 120 AudioRendererMixerReference mixer_reference = { mixer, 1 };
116 mixers_[key] = mixer_reference; 121 mixers_[key] = mixer_reference;
117 return mixer; 122 return mixer;
118 } 123 }
119 124
120 void AudioRendererMixerManager::RemoveMixer( 125 void AudioRendererMixerManager::RemoveMixer(
(...skipping 20 matching lines...) Expand all
141 int source_render_frame_id, 146 int source_render_frame_id,
142 const media::AudioParameters& params, 147 const media::AudioParameters& params,
143 const std::string& device_id, 148 const std::string& device_id,
144 const url::Origin& security_origin) 149 const url::Origin& security_origin)
145 : source_render_frame_id(source_render_frame_id), 150 : source_render_frame_id(source_render_frame_id),
146 params(params), 151 params(params),
147 device_id(device_id), 152 device_id(device_id),
148 security_origin(security_origin) {} 153 security_origin(security_origin) {}
149 154
150 } // namespace content 155 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698