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

Side by Side Diff: webrtc/modules/audio_processing/audio_processing_impl.cc

Issue 1490333004: HighPassFilter not a ProcessingComponent anymore (bit exact). (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 5 years 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 /* 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 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 echo_control_mobile(nullptr), 82 echo_control_mobile(nullptr),
83 gain_control(nullptr), 83 gain_control(nullptr),
84 high_pass_filter(nullptr), 84 high_pass_filter(nullptr),
85 level_estimator(nullptr), 85 level_estimator(nullptr),
86 noise_suppression(nullptr), 86 noise_suppression(nullptr),
87 voice_detection(nullptr) {} 87 voice_detection(nullptr) {}
88 // Accessed externally of APM without any lock acquired. 88 // Accessed externally of APM without any lock acquired.
89 EchoCancellationImpl* echo_cancellation; 89 EchoCancellationImpl* echo_cancellation;
90 EchoControlMobileImpl* echo_control_mobile; 90 EchoControlMobileImpl* echo_control_mobile;
91 GainControlImpl* gain_control; 91 GainControlImpl* gain_control;
92 HighPassFilterImpl* high_pass_filter; 92 rtc::scoped_ptr<HighPassFilterImpl> high_pass_filter;
93 LevelEstimatorImpl* level_estimator; 93 LevelEstimatorImpl* level_estimator;
94 NoiseSuppressionImpl* noise_suppression; 94 NoiseSuppressionImpl* noise_suppression;
95 VoiceDetectionImpl* voice_detection; 95 VoiceDetectionImpl* voice_detection;
96 rtc::scoped_ptr<GainControlForNewAgc> gain_control_for_new_agc; 96 rtc::scoped_ptr<GainControlForNewAgc> gain_control_for_new_agc;
97 97
98 // Accessed internally from both render and capture. 98 // Accessed internally from both render and capture.
99 rtc::scoped_ptr<TransientSuppressor> transient_suppressor; 99 rtc::scoped_ptr<TransientSuppressor> transient_suppressor;
100 rtc::scoped_ptr<IntelligibilityEnhancer> intelligibility_enhancer; 100 rtc::scoped_ptr<IntelligibilityEnhancer> intelligibility_enhancer;
101 }; 101 };
102 102
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 { 236 {
237 rtc::CritScope cs_render(&crit_render_); 237 rtc::CritScope cs_render(&crit_render_);
238 rtc::CritScope cs_capture(&crit_capture_); 238 rtc::CritScope cs_capture(&crit_capture_);
239 239
240 public_submodules_->echo_cancellation = 240 public_submodules_->echo_cancellation =
241 new EchoCancellationImpl(this, &crit_render_, &crit_capture_); 241 new EchoCancellationImpl(this, &crit_render_, &crit_capture_);
242 public_submodules_->echo_control_mobile = 242 public_submodules_->echo_control_mobile =
243 new EchoControlMobileImpl(this, &crit_render_, &crit_capture_); 243 new EchoControlMobileImpl(this, &crit_render_, &crit_capture_);
244 public_submodules_->gain_control = 244 public_submodules_->gain_control =
245 new GainControlImpl(this, &crit_capture_, &crit_capture_); 245 new GainControlImpl(this, &crit_capture_, &crit_capture_);
246 public_submodules_->high_pass_filter = 246 public_submodules_->high_pass_filter.reset(
247 new HighPassFilterImpl(this, &crit_capture_); 247 new HighPassFilterImpl(&crit_capture_));
248 public_submodules_->level_estimator = 248 public_submodules_->level_estimator =
249 new LevelEstimatorImpl(this, &crit_capture_); 249 new LevelEstimatorImpl(this, &crit_capture_);
250 public_submodules_->noise_suppression = 250 public_submodules_->noise_suppression =
251 new NoiseSuppressionImpl(this, &crit_capture_); 251 new NoiseSuppressionImpl(this, &crit_capture_);
252 public_submodules_->voice_detection = 252 public_submodules_->voice_detection =
253 new VoiceDetectionImpl(this, &crit_capture_); 253 new VoiceDetectionImpl(this, &crit_capture_);
254 public_submodules_->gain_control_for_new_agc.reset( 254 public_submodules_->gain_control_for_new_agc.reset(
255 new GainControlForNewAgc(public_submodules_->gain_control)); 255 new GainControlForNewAgc(public_submodules_->gain_control));
256 256
257 private_submodules_->component_list.push_back( 257 private_submodules_->component_list.push_back(
258 public_submodules_->echo_cancellation); 258 public_submodules_->echo_cancellation);
259 private_submodules_->component_list.push_back( 259 private_submodules_->component_list.push_back(
260 public_submodules_->echo_control_mobile); 260 public_submodules_->echo_control_mobile);
261 private_submodules_->component_list.push_back( 261 private_submodules_->component_list.push_back(
262 public_submodules_->gain_control); 262 public_submodules_->gain_control);
263 private_submodules_->component_list.push_back( 263 private_submodules_->component_list.push_back(
264 public_submodules_->high_pass_filter);
265 private_submodules_->component_list.push_back(
266 public_submodules_->level_estimator); 264 public_submodules_->level_estimator);
267 private_submodules_->component_list.push_back( 265 private_submodules_->component_list.push_back(
268 public_submodules_->noise_suppression); 266 public_submodules_->noise_suppression);
269 private_submodules_->component_list.push_back( 267 private_submodules_->component_list.push_back(
270 public_submodules_->voice_detection); 268 public_submodules_->voice_detection);
271 } 269 }
272 270
273 SetExtraOptions(config); 271 SetExtraOptions(config);
274 } 272 }
275 273
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 } 397 }
400 398
401 InitializeExperimentalAgc(); 399 InitializeExperimentalAgc();
402 400
403 InitializeTransient(); 401 InitializeTransient();
404 402
405 InitializeBeamformer(); 403 InitializeBeamformer();
406 404
407 InitializeIntelligibility(); 405 InitializeIntelligibility();
408 406
407 InitializeHighPassFilter();
408
409 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP 409 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP
410 if (debug_dump_.debug_file->Open()) { 410 if (debug_dump_.debug_file->Open()) {
411 int err = WriteInitMessage(); 411 int err = WriteInitMessage();
412 if (err != kNoError) { 412 if (err != kNoError) {
413 return err; 413 return err;
414 } 414 }
415 } 415 }
416 #endif 416 #endif
417 417
418 return kNoError; 418 return kNoError;
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 ca->split_channels_f(kBand0To8kHz), capture_nonlocked_.split_rate, 760 ca->split_channels_f(kBand0To8kHz), capture_nonlocked_.split_rate,
761 ca->num_channels()); 761 ca->num_channels());
762 } 762 }
763 763
764 if (constants_.beamformer_enabled) { 764 if (constants_.beamformer_enabled) {
765 private_submodules_->beamformer->ProcessChunk(*ca->split_data_f(), 765 private_submodules_->beamformer->ProcessChunk(*ca->split_data_f(),
766 ca->split_data_f()); 766 ca->split_data_f());
767 ca->set_num_channels(1); 767 ca->set_num_channels(1);
768 } 768 }
769 769
770 RETURN_ON_ERR(public_submodules_->high_pass_filter->ProcessCaptureAudio(ca)); 770 public_submodules_->high_pass_filter->ProcessCaptureAudio(ca);
771 RETURN_ON_ERR(public_submodules_->gain_control->AnalyzeCaptureAudio(ca)); 771 RETURN_ON_ERR(public_submodules_->gain_control->AnalyzeCaptureAudio(ca));
772 RETURN_ON_ERR(public_submodules_->noise_suppression->AnalyzeCaptureAudio(ca)); 772 RETURN_ON_ERR(public_submodules_->noise_suppression->AnalyzeCaptureAudio(ca));
773 RETURN_ON_ERR(public_submodules_->echo_cancellation->ProcessCaptureAudio(ca)); 773 RETURN_ON_ERR(public_submodules_->echo_cancellation->ProcessCaptureAudio(ca));
774 774
775 if (public_submodules_->echo_control_mobile->is_enabled() && 775 if (public_submodules_->echo_control_mobile->is_enabled() &&
776 public_submodules_->noise_suppression->is_enabled()) { 776 public_submodules_->noise_suppression->is_enabled()) {
777 ca->CopyLowPassToReference(); 777 ca->CopyLowPassToReference();
778 } 778 }
779 RETURN_ON_ERR(public_submodules_->noise_suppression->ProcessCaptureAudio(ca)); 779 RETURN_ON_ERR(public_submodules_->noise_suppression->ProcessCaptureAudio(ca));
780 RETURN_ON_ERR( 780 RETURN_ON_ERR(
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
1140 // from the returned pointer. 1140 // from the returned pointer.
1141 if (constants_.use_new_agc) { 1141 if (constants_.use_new_agc) {
1142 return public_submodules_->gain_control_for_new_agc.get(); 1142 return public_submodules_->gain_control_for_new_agc.get();
1143 } 1143 }
1144 return public_submodules_->gain_control; 1144 return public_submodules_->gain_control;
1145 } 1145 }
1146 1146
1147 HighPassFilter* AudioProcessingImpl::high_pass_filter() const { 1147 HighPassFilter* AudioProcessingImpl::high_pass_filter() const {
1148 // Adding a lock here has no effect as it allows any access to the submodule 1148 // Adding a lock here has no effect as it allows any access to the submodule
1149 // from the returned pointer. 1149 // from the returned pointer.
1150 return public_submodules_->high_pass_filter; 1150 return public_submodules_->high_pass_filter.get();
1151 } 1151 }
1152 1152
1153 LevelEstimator* AudioProcessingImpl::level_estimator() const { 1153 LevelEstimator* AudioProcessingImpl::level_estimator() const {
1154 // Adding a lock here has no effect as it allows any access to the submodule 1154 // Adding a lock here has no effect as it allows any access to the submodule
1155 // from the returned pointer. 1155 // from the returned pointer.
1156 return public_submodules_->level_estimator; 1156 return public_submodules_->level_estimator;
1157 } 1157 }
1158 1158
1159 NoiseSuppression* AudioProcessingImpl::noise_suppression() const { 1159 NoiseSuppression* AudioProcessingImpl::noise_suppression() const {
1160 // Adding a lock here has no effect as it allows any access to the submodule 1160 // Adding a lock here has no effect as it allows any access to the submodule
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
1286 if (constants_.intelligibility_enabled) { 1286 if (constants_.intelligibility_enabled) {
1287 IntelligibilityEnhancer::Config config; 1287 IntelligibilityEnhancer::Config config;
1288 config.sample_rate_hz = capture_nonlocked_.split_rate; 1288 config.sample_rate_hz = capture_nonlocked_.split_rate;
1289 config.num_capture_channels = capture_.capture_audio->num_channels(); 1289 config.num_capture_channels = capture_.capture_audio->num_channels();
1290 config.num_render_channels = render_.render_audio->num_channels(); 1290 config.num_render_channels = render_.render_audio->num_channels();
1291 public_submodules_->intelligibility_enhancer.reset( 1291 public_submodules_->intelligibility_enhancer.reset(
1292 new IntelligibilityEnhancer(config)); 1292 new IntelligibilityEnhancer(config));
1293 } 1293 }
1294 } 1294 }
1295 1295
1296 void AudioProcessingImpl::InitializeHighPassFilter() {
1297 int channels = num_output_channels();
peah-webrtc 2015/12/08 14:52:27 Why are the number of output channels and sample r
the sun 2015/12/08 15:08:05 Done.
1298 int sample_rate_hz = proc_sample_rate_hz();
1299 public_submodules_->high_pass_filter->Initialize(channels, sample_rate_hz);
1300 }
1301
1296 void AudioProcessingImpl::MaybeUpdateHistograms() { 1302 void AudioProcessingImpl::MaybeUpdateHistograms() {
1297 static const int kMinDiffDelayMs = 60; 1303 static const int kMinDiffDelayMs = 60;
1298 1304
1299 if (echo_cancellation()->is_enabled()) { 1305 if (echo_cancellation()->is_enabled()) {
1300 // Activate delay_jumps_ counters if we know echo_cancellation is runnning. 1306 // Activate delay_jumps_ counters if we know echo_cancellation is runnning.
1301 // If a stream has echo we know that the echo_cancellation is in process. 1307 // If a stream has echo we know that the echo_cancellation is in process.
1302 if (capture_.stream_delay_jumps == -1 && 1308 if (capture_.stream_delay_jumps == -1 &&
1303 echo_cancellation()->stream_has_echo()) { 1309 echo_cancellation()->stream_has_echo()) {
1304 capture_.stream_delay_jumps = 0; 1310 capture_.stream_delay_jumps = 0;
1305 } 1311 }
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
1470 debug_dump_.capture.event_msg->set_type(audioproc::Event::CONFIG); 1476 debug_dump_.capture.event_msg->set_type(audioproc::Event::CONFIG);
1471 debug_dump_.capture.event_msg->mutable_config()->CopyFrom(config); 1477 debug_dump_.capture.event_msg->mutable_config()->CopyFrom(config);
1472 1478
1473 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), 1479 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(),
1474 &crit_debug_, &debug_dump_.capture)); 1480 &crit_debug_, &debug_dump_.capture));
1475 return kNoError; 1481 return kNoError;
1476 } 1482 }
1477 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP 1483 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP
1478 1484
1479 } // namespace webrtc 1485 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698