Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "content/renderer/media/media_stream_audio_processor.h" | 5 #include "content/renderer/media/media_stream_audio_processor.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/debug/trace_event.h" | 8 #include "base/debug/trace_event.h" |
| 9 #include "content/public/common/content_switches.h" | 9 #include "content/public/common/content_switches.h" |
| 10 #include "content/renderer/media/media_stream_audio_processor_options.h" | 10 #include "content/renderer/media/media_stream_audio_processor_options.h" |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 158 DCHECK(main_thread_checker_.CalledOnValidThread()); | 158 DCHECK(main_thread_checker_.CalledOnValidThread()); |
| 159 StopAudioProcessing(); | 159 StopAudioProcessing(); |
| 160 } | 160 } |
| 161 | 161 |
| 162 void MediaStreamAudioProcessor::PushCaptureData(media::AudioBus* audio_source) { | 162 void MediaStreamAudioProcessor::PushCaptureData(media::AudioBus* audio_source) { |
| 163 DCHECK(capture_thread_checker_.CalledOnValidThread()); | 163 DCHECK(capture_thread_checker_.CalledOnValidThread()); |
| 164 if (audio_mirroring_ && | 164 if (audio_mirroring_ && |
| 165 capture_converter_->source_parameters().channel_layout() == | 165 capture_converter_->source_parameters().channel_layout() == |
| 166 media::CHANNEL_LAYOUT_STEREO) { | 166 media::CHANNEL_LAYOUT_STEREO) { |
| 167 // Swap the first and second channels. | 167 // Swap the first and second channels. |
| 168 audio_source->SwapChannels(0, 1); | 168 audio_source->SwapChannels(0, 1); |
|
no longer working on chromium
2014/03/06 08:35:14
FYI, audio_mirroring is done without the APM.
| |
| 169 } | 169 } |
| 170 | 170 |
| 171 capture_converter_->Push(audio_source); | 171 capture_converter_->Push(audio_source); |
| 172 } | 172 } |
| 173 | 173 |
| 174 bool MediaStreamAudioProcessor::ProcessAndConsumeData( | 174 bool MediaStreamAudioProcessor::ProcessAndConsumeData( |
| 175 base::TimeDelta capture_delay, int volume, bool key_pressed, | 175 base::TimeDelta capture_delay, int volume, bool key_pressed, |
| 176 int* new_volume, int16** out) { | 176 int* new_volume, int16** out) { |
| 177 DCHECK(capture_thread_checker_.CalledOnValidThread()); | 177 DCHECK(capture_thread_checker_.CalledOnValidThread()); |
| 178 TRACE_EVENT0("audio", "MediaStreamAudioProcessor::ProcessAndConsumeData"); | 178 TRACE_EVENT0("audio", "MediaStreamAudioProcessor::ProcessAndConsumeData"); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 264 MediaConstraintsInterface::kExperimentalNoiseSuppression); | 264 MediaConstraintsInterface::kExperimentalNoiseSuppression); |
| 265 const bool enable_high_pass_filter = GetPropertyFromConstraints( | 265 const bool enable_high_pass_filter = GetPropertyFromConstraints( |
| 266 &native_constraints, MediaConstraintsInterface::kHighpassFilter); | 266 &native_constraints, MediaConstraintsInterface::kHighpassFilter); |
| 267 | 267 |
| 268 audio_mirroring_ = GetPropertyFromConstraints( | 268 audio_mirroring_ = GetPropertyFromConstraints( |
| 269 &native_constraints, webrtc::MediaConstraintsInterface::kAudioMirroring); | 269 &native_constraints, webrtc::MediaConstraintsInterface::kAudioMirroring); |
| 270 | 270 |
| 271 // Return immediately if no audio processing component is enabled. | 271 // Return immediately if no audio processing component is enabled. |
| 272 if (!enable_aec && !enable_experimental_aec && !enable_ns && | 272 if (!enable_aec && !enable_experimental_aec && !enable_ns && |
| 273 !enable_high_pass_filter && !enable_typing_detection && !enable_agc && | 273 !enable_high_pass_filter && !enable_typing_detection && !enable_agc && |
| 274 !audio_mirroring_ && !enable_experimental_ns) { | 274 !enable_experimental_ns) { |
|
Henrik Grunell
2014/03/06 07:59:10
I can't say if this is correct, since I don't unde
no longer working on chromium
2014/03/06 08:35:14
I can confirm that this is correct, since the mirr
Henrik Grunell
2014/03/06 09:50:09
OK, thanks for clarifying.
| |
| 275 return; | 275 return; |
| 276 } | 276 } |
| 277 | 277 |
| 278 // Create and configure the webrtc::AudioProcessing. | 278 // Create and configure the webrtc::AudioProcessing. |
| 279 audio_processing_.reset(webrtc::AudioProcessing::Create(0)); | 279 audio_processing_.reset(webrtc::AudioProcessing::Create(0)); |
| 280 | 280 |
| 281 // Enable the audio processing components. | 281 // Enable the audio processing components. |
| 282 if (enable_aec) { | 282 if (enable_aec) { |
| 283 EnableEchoCancellation(audio_processing_.get()); | 283 EnableEchoCancellation(audio_processing_.get()); |
| 284 if (enable_experimental_aec) | 284 if (enable_experimental_aec) |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 431 if (!audio_processing_.get()) | 431 if (!audio_processing_.get()) |
| 432 return; | 432 return; |
| 433 | 433 |
| 434 if (playout_data_source_) | 434 if (playout_data_source_) |
| 435 playout_data_source_->RemovePlayoutSink(this); | 435 playout_data_source_->RemovePlayoutSink(this); |
| 436 | 436 |
| 437 audio_processing_.reset(); | 437 audio_processing_.reset(); |
| 438 } | 438 } |
| 439 | 439 |
| 440 } // namespace content | 440 } // namespace content |
| OLD | NEW |