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

Side by Side Diff: media/blink/webaudiosourceprovider_impl.cc

Issue 2007433002: Revert of MediaCaptureFromElement: add support for audio captureStream(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 226
227 sink_->Initialize(params, tee_filter_.get()); 227 sink_->Initialize(params, tee_filter_.get());
228 228
229 if (!set_format_cb_.is_null()) 229 if (!set_format_cb_.is_null())
230 base::ResetAndReturn(&set_format_cb_).Run(); 230 base::ResetAndReturn(&set_format_cb_).Run();
231 } 231 }
232 232
233 void WebAudioSourceProviderImpl::SetCopyAudioCallback( 233 void WebAudioSourceProviderImpl::SetCopyAudioCallback(
234 const CopyAudioCB& callback) { 234 const CopyAudioCB& callback) {
235 DCHECK(!callback.is_null()); 235 DCHECK(!callback.is_null());
236
237 // Use |sink_lock_| to protect |tee_filter_| too since they go in lockstep.
238 base::AutoLock auto_lock(sink_lock_);
239
240 DCHECK(tee_filter_); 236 DCHECK(tee_filter_);
241 tee_filter_->set_copy_audio_bus_callback(callback); 237 tee_filter_->set_copy_audio_bus_callback(callback);
242 } 238 }
243 239
244 void WebAudioSourceProviderImpl::ClearCopyAudioCallback() { 240 void WebAudioSourceProviderImpl::ClearCopyAudioCallback() {
245 DCHECK(tee_filter_); 241 DCHECK(tee_filter_);
246 tee_filter_->set_copy_audio_bus_callback(CopyAudioCB()); 242 tee_filter_->set_copy_audio_bus_callback(CopyAudioCB());
247 } 243 }
248 244
249 int WebAudioSourceProviderImpl::RenderForTesting(AudioBus* audio_bus) {
250 return tee_filter_->Render(audio_bus, 0, 0);
251 }
252
253 void WebAudioSourceProviderImpl::OnSetFormat() { 245 void WebAudioSourceProviderImpl::OnSetFormat() {
254 base::AutoLock auto_lock(sink_lock_); 246 base::AutoLock auto_lock(sink_lock_);
255 if (!client_) 247 if (!client_)
256 return; 248 return;
257 249
258 // Inform Blink about the audio stream format. 250 // Inform Blink about the audio stream format.
259 client_->setFormat(tee_filter_->channels(), tee_filter_->sample_rate()); 251 client_->setFormat(tee_filter_->channels(), tee_filter_->sample_rate());
260 } 252 }
261 253
254 int WebAudioSourceProviderImpl::RenderForTesting(AudioBus* audio_bus) {
255 return tee_filter_->Render(audio_bus, 0, 0);
256 }
257
262 int WebAudioSourceProviderImpl::TeeFilter::Render(AudioBus* audio_bus, 258 int WebAudioSourceProviderImpl::TeeFilter::Render(AudioBus* audio_bus,
263 uint32_t delay_milliseconds, 259 uint32_t delay_milliseconds,
264 uint32_t frames_skipped) { 260 uint32_t frames_skipped) {
265 const int num_rendered_frames = 261 const int num_rendered_frames =
266 renderer_->Render(audio_bus, delay_milliseconds, frames_skipped); 262 renderer_->Render(audio_bus, delay_milliseconds, frames_skipped);
267 263
268 if (!copy_audio_bus_callback_.is_null()) { 264 if (!copy_audio_bus_callback_.is_null()) {
269 std::unique_ptr<AudioBus> bus_copy = 265 std::unique_ptr<AudioBus> bus_copy =
270 AudioBus::Create(audio_bus->channels(), audio_bus->frames()); 266 AudioBus::Create(audio_bus->channels(), audio_bus->frames());
271 audio_bus->CopyTo(bus_copy.get()); 267 audio_bus->CopyTo(bus_copy.get());
272 copy_audio_bus_callback_.Run(std::move(bus_copy), delay_milliseconds, 268 copy_audio_bus_callback_.Run(std::move(bus_copy), delay_milliseconds,
273 sample_rate_); 269 sample_rate_);
274 } 270 }
275 271
276 return num_rendered_frames; 272 return num_rendered_frames;
277 } 273 }
278 274
279 void WebAudioSourceProviderImpl::TeeFilter::OnRenderError() { 275 void WebAudioSourceProviderImpl::TeeFilter::OnRenderError() {
280 renderer_->OnRenderError(); 276 renderer_->OnRenderError();
281 } 277 }
282 278
283 } // namespace media 279 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698