OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
162 #endif | 162 #endif |
163 config.Get<Beamforming>().array_geometry, | 163 config.Get<Beamforming>().array_geometry, |
164 config.Get<Beamforming>().target_direction), | 164 config.Get<Beamforming>().target_direction), |
165 capture_nonlocked_(config.Get<Beamforming>().enabled) | 165 capture_nonlocked_(config.Get<Beamforming>().enabled) |
166 { | 166 { |
167 { | 167 { |
168 rtc::CritScope cs_render(&crit_render_); | 168 rtc::CritScope cs_render(&crit_render_); |
169 rtc::CritScope cs_capture(&crit_capture_); | 169 rtc::CritScope cs_capture(&crit_capture_); |
170 | 170 |
171 public_submodules_->echo_cancellation.reset( | 171 public_submodules_->echo_cancellation.reset( |
172 new EchoCancellationImpl(this, &crit_render_, &crit_capture_)); | 172 new EchoCancellationImpl(&crit_render_, &crit_capture_)); |
173 public_submodules_->echo_control_mobile = | 173 public_submodules_->echo_control_mobile = |
174 new EchoControlMobileImpl(this, &crit_render_, &crit_capture_); | 174 new EchoControlMobileImpl(this, &crit_render_, &crit_capture_); |
175 public_submodules_->gain_control = | 175 public_submodules_->gain_control = |
176 new GainControlImpl(this, &crit_capture_, &crit_capture_); | 176 new GainControlImpl(this, &crit_capture_, &crit_capture_); |
177 public_submodules_->high_pass_filter.reset( | 177 public_submodules_->high_pass_filter.reset( |
178 new HighPassFilterImpl(&crit_capture_)); | 178 new HighPassFilterImpl(&crit_capture_)); |
179 public_submodules_->level_estimator.reset( | 179 public_submodules_->level_estimator.reset( |
180 new LevelEstimatorImpl(&crit_capture_)); | 180 new LevelEstimatorImpl(&crit_capture_)); |
181 public_submodules_->noise_suppression.reset( | 181 public_submodules_->noise_suppression.reset( |
182 new NoiseSuppressionImpl(&crit_capture_)); | 182 new NoiseSuppressionImpl(&crit_capture_)); |
(...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
708 | 708 |
709 if (capture_nonlocked_.beamformer_enabled) { | 709 if (capture_nonlocked_.beamformer_enabled) { |
710 private_submodules_->beamformer->ProcessChunk(*ca->split_data_f(), | 710 private_submodules_->beamformer->ProcessChunk(*ca->split_data_f(), |
711 ca->split_data_f()); | 711 ca->split_data_f()); |
712 ca->set_num_channels(1); | 712 ca->set_num_channels(1); |
713 } | 713 } |
714 | 714 |
715 public_submodules_->high_pass_filter->ProcessCaptureAudio(ca); | 715 public_submodules_->high_pass_filter->ProcessCaptureAudio(ca); |
716 RETURN_ON_ERR(public_submodules_->gain_control->AnalyzeCaptureAudio(ca)); | 716 RETURN_ON_ERR(public_submodules_->gain_control->AnalyzeCaptureAudio(ca)); |
717 public_submodules_->noise_suppression->AnalyzeCaptureAudio(ca); | 717 public_submodules_->noise_suppression->AnalyzeCaptureAudio(ca); |
718 RETURN_ON_ERR(public_submodules_->echo_cancellation->ProcessCaptureAudio(ca)); | 718 |
719 // Ensure that not both the AEC and AECM are active at the same time. | |
720 // TODO(peah): Simplify once the public API Enable functions for these | |
721 // are moved to APM. | |
722 if (public_submodules_->echo_cancellation->is_enabled() && | |
the sun
2016/03/15 09:38:55
Make this a DCHECK and move it to the beginning of
peah-webrtc
2016/03/15 10:32:10
Done.
| |
723 public_submodules_->echo_control_mobile->is_enabled()) { | |
724 return AudioProcessing::kBadParameterError; | |
725 } | |
726 | |
727 // Ensure that the stream delay was set before the call to the | |
728 // AEC ProcessCaptureAudio function. | |
729 if (public_submodules_->echo_cancellation->is_enabled() && | |
730 !was_stream_delay_set()) { | |
the sun
2016/03/15 09:38:55
Likewise, this is a precondition, so move to begin
peah-webrtc
2016/03/15 10:32:10
What you say makes sense! I think this case is a b
the sun
2016/03/15 14:22:14
Ok, let's leave as is.
| |
731 return AudioProcessing::kStreamParameterNotSetError; | |
732 } | |
733 | |
734 RETURN_ON_ERR(public_submodules_->echo_cancellation->ProcessCaptureAudio( | |
735 ca, stream_delay_ms())); | |
719 | 736 |
720 if (public_submodules_->echo_control_mobile->is_enabled() && | 737 if (public_submodules_->echo_control_mobile->is_enabled() && |
721 public_submodules_->noise_suppression->is_enabled()) { | 738 public_submodules_->noise_suppression->is_enabled()) { |
722 ca->CopyLowPassToReference(); | 739 ca->CopyLowPassToReference(); |
723 } | 740 } |
724 public_submodules_->noise_suppression->ProcessCaptureAudio(ca); | 741 public_submodules_->noise_suppression->ProcessCaptureAudio(ca); |
725 if (constants_.intelligibility_enabled) { | 742 if (constants_.intelligibility_enabled) { |
726 RTC_DCHECK(public_submodules_->noise_suppression->is_enabled()); | 743 RTC_DCHECK(public_submodules_->noise_suppression->is_enabled()); |
727 public_submodules_->intelligibility_enhancer->SetCaptureNoiseEstimate( | 744 public_submodules_->intelligibility_enhancer->SetCaptureNoiseEstimate( |
728 public_submodules_->noise_suppression->NoiseEstimate()); | 745 public_submodules_->noise_suppression->NoiseEstimate()); |
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1244 public_submodules_->high_pass_filter->Initialize(num_proc_channels(), | 1261 public_submodules_->high_pass_filter->Initialize(num_proc_channels(), |
1245 proc_sample_rate_hz()); | 1262 proc_sample_rate_hz()); |
1246 } | 1263 } |
1247 | 1264 |
1248 void AudioProcessingImpl::InitializeNoiseSuppression() { | 1265 void AudioProcessingImpl::InitializeNoiseSuppression() { |
1249 public_submodules_->noise_suppression->Initialize(num_proc_channels(), | 1266 public_submodules_->noise_suppression->Initialize(num_proc_channels(), |
1250 proc_sample_rate_hz()); | 1267 proc_sample_rate_hz()); |
1251 } | 1268 } |
1252 | 1269 |
1253 void AudioProcessingImpl::InitializeEchoCanceller() { | 1270 void AudioProcessingImpl::InitializeEchoCanceller() { |
1254 public_submodules_->echo_cancellation->Initialize(); | 1271 public_submodules_->echo_cancellation->Initialize( |
1272 proc_sample_rate_hz(), num_reverse_channels(), num_output_channels(), | |
1273 num_proc_channels()); | |
1255 } | 1274 } |
1256 | 1275 |
1257 void AudioProcessingImpl::InitializeLevelEstimator() { | 1276 void AudioProcessingImpl::InitializeLevelEstimator() { |
1258 public_submodules_->level_estimator->Initialize(); | 1277 public_submodules_->level_estimator->Initialize(); |
1259 } | 1278 } |
1260 | 1279 |
1261 void AudioProcessingImpl::InitializeVoiceDetection() { | 1280 void AudioProcessingImpl::InitializeVoiceDetection() { |
1262 public_submodules_->voice_detection->Initialize(proc_split_sample_rate_hz()); | 1281 public_submodules_->voice_detection->Initialize(proc_split_sample_rate_hz()); |
1263 } | 1282 } |
1264 | 1283 |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1457 debug_dump_.capture.event_msg->mutable_config()->CopyFrom(config); | 1476 debug_dump_.capture.event_msg->mutable_config()->CopyFrom(config); |
1458 | 1477 |
1459 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), | 1478 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), |
1460 &debug_dump_.num_bytes_left_for_log_, | 1479 &debug_dump_.num_bytes_left_for_log_, |
1461 &crit_debug_, &debug_dump_.capture)); | 1480 &crit_debug_, &debug_dump_.capture)); |
1462 return kNoError; | 1481 return kNoError; |
1463 } | 1482 } |
1464 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP | 1483 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP |
1465 | 1484 |
1466 } // namespace webrtc | 1485 } // namespace webrtc |
OLD | NEW |