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

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

Issue 139303016: Feed the render data to MediaStreamAudioProcessor and used AudioBus in render callback (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: checked echo_control_mobile()->is_enabled()) for android and ios Created 6 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 | Annotate | Revision Log
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/webrtc_audio_capturer.h" 5 #include "content/renderer/media/webrtc_audio_capturer.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 // Dispatch the new parameters both to the sink(s) and to the new source, 290 // Dispatch the new parameters both to the sink(s) and to the new source,
291 // also apply the new |constraints|. 291 // also apply the new |constraints|.
292 // The idea is to get rid of any dependency of the microphone parameters 292 // The idea is to get rid of any dependency of the microphone parameters
293 // which would normally be used by default. 293 // which would normally be used by default.
294 // bits_per_sample is always 16 for now. 294 // bits_per_sample is always 16 for now.
295 int buffer_size = GetBufferSize(sample_rate); 295 int buffer_size = GetBufferSize(sample_rate);
296 media::AudioParameters params(media::AudioParameters::AUDIO_PCM_LOW_LATENCY, 296 media::AudioParameters params(media::AudioParameters::AUDIO_PCM_LOW_LATENCY,
297 channel_layout, 0, sample_rate, 297 channel_layout, 0, sample_rate,
298 16, buffer_size, effects); 298 16, buffer_size, effects);
299 scoped_refptr<MediaStreamAudioProcessor> new_audio_processor( 299 scoped_refptr<MediaStreamAudioProcessor> new_audio_processor(
300 new MediaStreamAudioProcessor(params, constraints, effects)); 300 new MediaStreamAudioProcessor(params, constraints, effects,
301 audio_device_));
301 { 302 {
302 base::AutoLock auto_lock(lock_); 303 base::AutoLock auto_lock(lock_);
303 audio_processor_ = new_audio_processor; 304 audio_processor_ = new_audio_processor;
304 need_audio_processing_ = NeedsAudioProcessing(constraints, effects); 305 need_audio_processing_ = NeedsAudioProcessing(constraints, effects);
305 306
306 // Notify all tracks about the new format. 307 // Notify all tracks about the new format.
307 tracks_.TagAll(); 308 tracks_.TagAll();
308 } 309 }
309 310
310 if (source.get()) 311 if (source.get())
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 } 550 }
550 551
551 void WebRtcAudioCapturer::GetAudioProcessingParams( 552 void WebRtcAudioCapturer::GetAudioProcessingParams(
552 base::TimeDelta* delay, int* volume, bool* key_pressed) { 553 base::TimeDelta* delay, int* volume, bool* key_pressed) {
553 base::AutoLock auto_lock(lock_); 554 base::AutoLock auto_lock(lock_);
554 *delay = audio_delay_; 555 *delay = audio_delay_;
555 *volume = volume_; 556 *volume = volume_;
556 *key_pressed = key_pressed_; 557 *key_pressed = key_pressed_;
557 } 558 }
558 559
559 void WebRtcAudioCapturer::FeedRenderDataToAudioProcessor(
560 const int16* render_audio,
561 int sample_rate,
562 int number_of_channels,
563 int number_of_frames,
564 base::TimeDelta render_delay) {
565 scoped_refptr<MediaStreamAudioProcessor> audio_processor;
566 {
567 base::AutoLock auto_lock(lock_);
568 if (!running_)
569 return;
570
571 audio_processor = audio_processor_;
572 }
573
574 audio_processor->PushRenderData(render_audio, sample_rate,
575 number_of_channels,
576 number_of_frames,
577 render_delay);
578 }
579
580 void WebRtcAudioCapturer::SetCapturerSourceForTesting( 560 void WebRtcAudioCapturer::SetCapturerSourceForTesting(
581 const scoped_refptr<media::AudioCapturerSource>& source, 561 const scoped_refptr<media::AudioCapturerSource>& source,
582 media::AudioParameters params) { 562 media::AudioParameters params) {
583 // Create a new audio stream as source which uses the new source. 563 // Create a new audio stream as source which uses the new source.
584 SetCapturerSource(source, params.channel_layout(), 564 SetCapturerSource(source, params.channel_layout(),
585 static_cast<float>(params.sample_rate()), 565 static_cast<float>(params.sample_rate()),
586 params.effects(), 566 params.effects(),
587 constraints_); 567 constraints_);
588 } 568 }
589 569
590 } // namespace content 570 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698