| Index: content/renderer/media/media_stream_audio_processor.cc
|
| diff --git a/content/renderer/media/media_stream_audio_processor.cc b/content/renderer/media/media_stream_audio_processor.cc
|
| index b055dcc6699c7a906650d5a7d8e26a1973a7d6a9..a80207acc344d4f98a6d9967fb485a8e67851606 100644
|
| --- a/content/renderer/media/media_stream_audio_processor.cc
|
| +++ b/content/renderer/media/media_stream_audio_processor.cc
|
| @@ -140,7 +140,6 @@ class MediaStreamAudioProcessor::MediaStreamAudioConverter
|
| };
|
|
|
| MediaStreamAudioProcessor::MediaStreamAudioProcessor(
|
| - const media::AudioParameters& source_params,
|
| const blink::WebMediaConstraints& constraints,
|
| int effects,
|
| WebRtcPlayoutDataSource* playout_data_source)
|
| @@ -151,7 +150,6 @@ MediaStreamAudioProcessor::MediaStreamAudioProcessor(
|
| capture_thread_checker_.DetachFromThread();
|
| render_thread_checker_.DetachFromThread();
|
| InitializeAudioProcessingModule(constraints, effects);
|
| - InitializeCaptureConverter(source_params);
|
| }
|
|
|
| MediaStreamAudioProcessor::~MediaStreamAudioProcessor() {
|
| @@ -159,8 +157,26 @@ MediaStreamAudioProcessor::~MediaStreamAudioProcessor() {
|
| StopAudioProcessing();
|
| }
|
|
|
| +void MediaStreamAudioProcessor::OnCaptureFormatChanged(
|
| + const media::AudioParameters& source_params) {
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| + // There is no need to hold a lock here since the caller guarantees that
|
| + // there is no more PushCaptureData() and ProcessAndConsumeData() callbacks
|
| + // on the capture thread.
|
| + InitializeCaptureConverter(source_params);
|
| +
|
| + // Reset the |capture_thread_checker_| since the capture data will come from
|
| + // a new capture thread.
|
| + capture_thread_checker_.DetachFromThread();
|
| +}
|
| +
|
| void MediaStreamAudioProcessor::PushCaptureData(media::AudioBus* audio_source) {
|
| DCHECK(capture_thread_checker_.CalledOnValidThread());
|
| + DCHECK_EQ(audio_source->channels(),
|
| + capture_converter_->source_parameters().channels());
|
| + DCHECK_EQ(audio_source->frames(),
|
| + capture_converter_->source_parameters().frames_per_buffer());
|
| +
|
| if (audio_mirroring_ &&
|
| capture_converter_->source_parameters().channel_layout() ==
|
| media::CHANNEL_LAYOUT_STEREO) {
|
| @@ -195,6 +211,17 @@ const media::AudioParameters& MediaStreamAudioProcessor::OutputFormat() const {
|
| return capture_converter_->sink_parameters();
|
| }
|
|
|
| +void MediaStreamAudioProcessor::StartAecDump(
|
| + const base::PlatformFile& aec_dump_file) {
|
| + if (audio_processing_)
|
| + StartEchoCancellationDump(audio_processing_.get(), aec_dump_file);
|
| +}
|
| +
|
| +void MediaStreamAudioProcessor::StopAecDump() {
|
| + if (audio_processing_)
|
| + StopEchoCancellationDump(audio_processing_.get());
|
| +}
|
| +
|
| void MediaStreamAudioProcessor::OnPlayoutData(media::AudioBus* audio_bus,
|
| int sample_rate,
|
| int audio_delay_milliseconds) {
|
| @@ -332,6 +359,7 @@ void MediaStreamAudioProcessor::InitializeAudioProcessingModule(
|
|
|
| void MediaStreamAudioProcessor::InitializeCaptureConverter(
|
| const media::AudioParameters& source_params) {
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| DCHECK(source_params.IsValid());
|
|
|
| // Create and initialize audio converter for the source data.
|
| @@ -445,6 +473,8 @@ void MediaStreamAudioProcessor::StopAudioProcessing() {
|
| if (!audio_processing_.get())
|
| return;
|
|
|
| + StopAecDump();
|
| +
|
| if (playout_data_source_)
|
| playout_data_source_->RemovePlayoutSink(this);
|
|
|
|
|