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

Side by Side Diff: media/blink/webaudiosourceprovider_impl.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "media/blink/webaudiosourceprovider_impl.h" 5 #include "media/blink/webaudiosourceprovider_impl.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback_helpers.h" 10 #include "base/callback_helpers.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 49
50 WebAudioSourceProviderImpl::WebAudioSourceProviderImpl( 50 WebAudioSourceProviderImpl::WebAudioSourceProviderImpl(
51 const scoped_refptr<RestartableAudioRendererSink>& sink) 51 const scoped_refptr<RestartableAudioRendererSink>& sink)
52 : channels_(0), 52 : channels_(0),
53 sample_rate_(0), 53 sample_rate_(0),
54 volume_(1.0), 54 volume_(1.0),
55 state_(kStopped), 55 state_(kStopped),
56 renderer_(NULL), 56 renderer_(NULL),
57 client_(NULL), 57 client_(NULL),
58 sink_(sink), 58 sink_(sink),
59 enable_audio_focus_(false),
59 weak_factory_(this) {} 60 weak_factory_(this) {}
60 61
61 WebAudioSourceProviderImpl::~WebAudioSourceProviderImpl() { 62 WebAudioSourceProviderImpl::~WebAudioSourceProviderImpl() {
62 } 63 }
63 64
64 void WebAudioSourceProviderImpl::setClient( 65 void WebAudioSourceProviderImpl::setClient(
65 blink::WebAudioSourceProviderClient* client) { 66 blink::WebAudioSourceProviderClient* client) {
66 base::AutoLock auto_lock(sink_lock_); 67 base::AutoLock auto_lock(sink_lock_);
67 if (client && client != client_) { 68 if (client && client != client_) {
68 // Detach the audio renderer from normal playback. 69 // Detach the audio renderer from normal playback.
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 return sink_->GetOutputDevice(); 171 return sink_->GetOutputDevice();
171 } 172 }
172 173
173 void WebAudioSourceProviderImpl::Initialize( 174 void WebAudioSourceProviderImpl::Initialize(
174 const AudioParameters& params, 175 const AudioParameters& params,
175 RenderCallback* renderer) { 176 RenderCallback* renderer) {
176 base::AutoLock auto_lock(sink_lock_); 177 base::AutoLock auto_lock(sink_lock_);
177 renderer_ = renderer; 178 renderer_ = renderer;
178 179
179 DCHECK_EQ(state_, kStopped); 180 DCHECK_EQ(state_, kStopped);
180 sink_->Initialize(params, renderer); 181
182 if (enable_audio_focus_) {
183 AudioParameters new_params = params;
184 new_params.set_effects(params.effects() | AudioParameters::FOCUSABLE);
185 sink_->Initialize(new_params, renderer);
186 } else {
187 sink_->Initialize(params, renderer);
188 }
181 189
182 // Keep track of the format in case the client hasn't yet been set. 190 // Keep track of the format in case the client hasn't yet been set.
183 channels_ = params.channels(); 191 channels_ = params.channels();
184 sample_rate_ = params.sample_rate(); 192 sample_rate_ = params.sample_rate();
185 193
186 if (!set_format_cb_.is_null()) 194 if (!set_format_cb_.is_null())
187 base::ResetAndReturn(&set_format_cb_).Run(); 195 base::ResetAndReturn(&set_format_cb_).Run();
188 } 196 }
189 197
190 void WebAudioSourceProviderImpl::OnSetFormat() { 198 void WebAudioSourceProviderImpl::OnSetFormat() {
191 base::AutoLock auto_lock(sink_lock_); 199 base::AutoLock auto_lock(sink_lock_);
192 if (!client_) 200 if (!client_)
193 return; 201 return;
194 202
195 // Inform Blink about the audio stream format. 203 // Inform Blink about the audio stream format.
196 client_->setFormat(channels_, sample_rate_); 204 client_->setFormat(channels_, sample_rate_);
197 } 205 }
198 206
199 } // namespace media 207 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698