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

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: comments+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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 assert(false); 74 assert(false);
75 return false; 75 return false;
76 } 76 }
77 } // namespace 77 } // namespace
78 78
79 struct AudioProcessingImpl::ApmPublicSubmodules { 79 struct AudioProcessingImpl::ApmPublicSubmodules {
80 ApmPublicSubmodules() 80 ApmPublicSubmodules()
81 : echo_cancellation(nullptr), 81 : echo_cancellation(nullptr),
82 echo_control_mobile(nullptr), 82 echo_control_mobile(nullptr),
83 gain_control(nullptr), 83 gain_control(nullptr),
84 high_pass_filter(nullptr),
85 level_estimator(nullptr), 84 level_estimator(nullptr),
86 noise_suppression(nullptr), 85 noise_suppression(nullptr),
87 voice_detection(nullptr) {} 86 voice_detection(nullptr) {}
88 // Accessed externally of APM without any lock acquired. 87 // Accessed externally of APM without any lock acquired.
89 EchoCancellationImpl* echo_cancellation; 88 EchoCancellationImpl* echo_cancellation;
90 EchoControlMobileImpl* echo_control_mobile; 89 EchoControlMobileImpl* echo_control_mobile;
91 GainControlImpl* gain_control; 90 GainControlImpl* gain_control;
92 HighPassFilterImpl* high_pass_filter; 91 rtc::scoped_ptr<HighPassFilterImpl> high_pass_filter;
93 LevelEstimatorImpl* level_estimator; 92 LevelEstimatorImpl* level_estimator;
94 NoiseSuppressionImpl* noise_suppression; 93 NoiseSuppressionImpl* noise_suppression;
95 VoiceDetectionImpl* voice_detection; 94 VoiceDetectionImpl* voice_detection;
96 rtc::scoped_ptr<GainControlForNewAgc> gain_control_for_new_agc; 95 rtc::scoped_ptr<GainControlForNewAgc> gain_control_for_new_agc;
97 96
98 // Accessed internally from both render and capture. 97 // Accessed internally from both render and capture.
99 rtc::scoped_ptr<TransientSuppressor> transient_suppressor; 98 rtc::scoped_ptr<TransientSuppressor> transient_suppressor;
100 rtc::scoped_ptr<IntelligibilityEnhancer> intelligibility_enhancer; 99 rtc::scoped_ptr<IntelligibilityEnhancer> intelligibility_enhancer;
101 }; 100 };
102 101
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 { 235 {
237 rtc::CritScope cs_render(&crit_render_); 236 rtc::CritScope cs_render(&crit_render_);
238 rtc::CritScope cs_capture(&crit_capture_); 237 rtc::CritScope cs_capture(&crit_capture_);
239 238
240 public_submodules_->echo_cancellation = 239 public_submodules_->echo_cancellation =
241 new EchoCancellationImpl(this, &crit_render_, &crit_capture_); 240 new EchoCancellationImpl(this, &crit_render_, &crit_capture_);
242 public_submodules_->echo_control_mobile = 241 public_submodules_->echo_control_mobile =
243 new EchoControlMobileImpl(this, &crit_render_, &crit_capture_); 242 new EchoControlMobileImpl(this, &crit_render_, &crit_capture_);
244 public_submodules_->gain_control = 243 public_submodules_->gain_control =
245 new GainControlImpl(this, &crit_capture_, &crit_capture_); 244 new GainControlImpl(this, &crit_capture_, &crit_capture_);
246 public_submodules_->high_pass_filter = 245 public_submodules_->high_pass_filter.reset(
247 new HighPassFilterImpl(this, &crit_capture_); 246 new HighPassFilterImpl(&crit_capture_));
248 public_submodules_->level_estimator = 247 public_submodules_->level_estimator =
249 new LevelEstimatorImpl(this, &crit_capture_); 248 new LevelEstimatorImpl(this, &crit_capture_);
250 public_submodules_->noise_suppression = 249 public_submodules_->noise_suppression =
251 new NoiseSuppressionImpl(this, &crit_capture_); 250 new NoiseSuppressionImpl(this, &crit_capture_);
252 public_submodules_->voice_detection = 251 public_submodules_->voice_detection =
253 new VoiceDetectionImpl(this, &crit_capture_); 252 new VoiceDetectionImpl(this, &crit_capture_);
254 public_submodules_->gain_control_for_new_agc.reset( 253 public_submodules_->gain_control_for_new_agc.reset(
255 new GainControlForNewAgc(public_submodules_->gain_control)); 254 new GainControlForNewAgc(public_submodules_->gain_control));
256 255
257 private_submodules_->component_list.push_back( 256 private_submodules_->component_list.push_back(
258 public_submodules_->echo_cancellation); 257 public_submodules_->echo_cancellation);
259 private_submodules_->component_list.push_back( 258 private_submodules_->component_list.push_back(
260 public_submodules_->echo_control_mobile); 259 public_submodules_->echo_control_mobile);
261 private_submodules_->component_list.push_back( 260 private_submodules_->component_list.push_back(
262 public_submodules_->gain_control); 261 public_submodules_->gain_control);
263 private_submodules_->component_list.push_back( 262 private_submodules_->component_list.push_back(
264 public_submodules_->high_pass_filter);
265 private_submodules_->component_list.push_back(
266 public_submodules_->level_estimator); 263 public_submodules_->level_estimator);
267 private_submodules_->component_list.push_back( 264 private_submodules_->component_list.push_back(
268 public_submodules_->noise_suppression); 265 public_submodules_->noise_suppression);
269 private_submodules_->component_list.push_back( 266 private_submodules_->component_list.push_back(
270 public_submodules_->voice_detection); 267 public_submodules_->voice_detection);
271 } 268 }
272 269
273 SetExtraOptions(config); 270 SetExtraOptions(config);
274 } 271 }
275 272
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 } 396 }
400 397
401 InitializeExperimentalAgc(); 398 InitializeExperimentalAgc();
402 399
403 InitializeTransient(); 400 InitializeTransient();
404 401
405 InitializeBeamformer(); 402 InitializeBeamformer();
406 403
407 InitializeIntelligibility(); 404 InitializeIntelligibility();
408 405
406 InitializeHighPassFilter();
407
409 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP 408 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP
410 if (debug_dump_.debug_file->Open()) { 409 if (debug_dump_.debug_file->Open()) {
411 int err = WriteInitMessage(); 410 int err = WriteInitMessage();
412 if (err != kNoError) { 411 if (err != kNoError) {
413 return err; 412 return err;
414 } 413 }
415 } 414 }
416 #endif 415 #endif
417 416
418 return kNoError; 417 return kNoError;
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 ca->split_channels_f(kBand0To8kHz), capture_nonlocked_.split_rate, 759 ca->split_channels_f(kBand0To8kHz), capture_nonlocked_.split_rate,
761 ca->num_channels()); 760 ca->num_channels());
762 } 761 }
763 762
764 if (constants_.beamformer_enabled) { 763 if (constants_.beamformer_enabled) {
765 private_submodules_->beamformer->ProcessChunk(*ca->split_data_f(), 764 private_submodules_->beamformer->ProcessChunk(*ca->split_data_f(),
766 ca->split_data_f()); 765 ca->split_data_f());
767 ca->set_num_channels(1); 766 ca->set_num_channels(1);
768 } 767 }
769 768
770 RETURN_ON_ERR(public_submodules_->high_pass_filter->ProcessCaptureAudio(ca)); 769 public_submodules_->high_pass_filter->ProcessCaptureAudio(ca);
771 RETURN_ON_ERR(public_submodules_->gain_control->AnalyzeCaptureAudio(ca)); 770 RETURN_ON_ERR(public_submodules_->gain_control->AnalyzeCaptureAudio(ca));
772 RETURN_ON_ERR(public_submodules_->noise_suppression->AnalyzeCaptureAudio(ca)); 771 RETURN_ON_ERR(public_submodules_->noise_suppression->AnalyzeCaptureAudio(ca));
773 RETURN_ON_ERR(public_submodules_->echo_cancellation->ProcessCaptureAudio(ca)); 772 RETURN_ON_ERR(public_submodules_->echo_cancellation->ProcessCaptureAudio(ca));
774 773
775 if (public_submodules_->echo_control_mobile->is_enabled() && 774 if (public_submodules_->echo_control_mobile->is_enabled() &&
776 public_submodules_->noise_suppression->is_enabled()) { 775 public_submodules_->noise_suppression->is_enabled()) {
777 ca->CopyLowPassToReference(); 776 ca->CopyLowPassToReference();
778 } 777 }
779 RETURN_ON_ERR(public_submodules_->noise_suppression->ProcessCaptureAudio(ca)); 778 RETURN_ON_ERR(public_submodules_->noise_suppression->ProcessCaptureAudio(ca));
780 RETURN_ON_ERR( 779 RETURN_ON_ERR(
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
1140 // from the returned pointer. 1139 // from the returned pointer.
1141 if (constants_.use_new_agc) { 1140 if (constants_.use_new_agc) {
1142 return public_submodules_->gain_control_for_new_agc.get(); 1141 return public_submodules_->gain_control_for_new_agc.get();
1143 } 1142 }
1144 return public_submodules_->gain_control; 1143 return public_submodules_->gain_control;
1145 } 1144 }
1146 1145
1147 HighPassFilter* AudioProcessingImpl::high_pass_filter() const { 1146 HighPassFilter* AudioProcessingImpl::high_pass_filter() const {
1148 // Adding a lock here has no effect as it allows any access to the submodule 1147 // Adding a lock here has no effect as it allows any access to the submodule
1149 // from the returned pointer. 1148 // from the returned pointer.
1150 return public_submodules_->high_pass_filter; 1149 return public_submodules_->high_pass_filter.get();
1151 } 1150 }
1152 1151
1153 LevelEstimator* AudioProcessingImpl::level_estimator() const { 1152 LevelEstimator* AudioProcessingImpl::level_estimator() const {
1154 // Adding a lock here has no effect as it allows any access to the submodule 1153 // Adding a lock here has no effect as it allows any access to the submodule
1155 // from the returned pointer. 1154 // from the returned pointer.
1156 return public_submodules_->level_estimator; 1155 return public_submodules_->level_estimator;
1157 } 1156 }
1158 1157
1159 NoiseSuppression* AudioProcessingImpl::noise_suppression() const { 1158 NoiseSuppression* AudioProcessingImpl::noise_suppression() const {
1160 // Adding a lock here has no effect as it allows any access to the submodule 1159 // Adding a lock here has no effect as it allows any access to the submodule
(...skipping 11 matching lines...) Expand all
1172 if (constants_.beamformer_enabled) { 1171 if (constants_.beamformer_enabled) {
1173 return true; 1172 return true;
1174 } 1173 }
1175 1174
1176 int enabled_count = 0; 1175 int enabled_count = 0;
1177 for (auto item : private_submodules_->component_list) { 1176 for (auto item : private_submodules_->component_list) {
1178 if (item->is_component_enabled()) { 1177 if (item->is_component_enabled()) {
1179 enabled_count++; 1178 enabled_count++;
1180 } 1179 }
1181 } 1180 }
1181 if (public_submodules_->high_pass_filter->is_enabled()) {
1182 enabled_count++;
1183 }
1182 1184
1183 // Data is unchanged if no components are enabled, or if only 1185 // Data is unchanged if no components are enabled, or if only
1184 // public_submodules_->level_estimator 1186 // public_submodules_->level_estimator
1185 // or public_submodules_->voice_detection is enabled. 1187 // or public_submodules_->voice_detection is enabled.
1186 if (enabled_count == 0) { 1188 if (enabled_count == 0) {
1187 return false; 1189 return false;
1188 } else if (enabled_count == 1) { 1190 } else if (enabled_count == 1) {
1189 if (public_submodules_->level_estimator->is_enabled() || 1191 if (public_submodules_->level_estimator->is_enabled() ||
1190 public_submodules_->voice_detection->is_enabled()) { 1192 public_submodules_->voice_detection->is_enabled()) {
1191 return false; 1193 return false;
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
1286 if (constants_.intelligibility_enabled) { 1288 if (constants_.intelligibility_enabled) {
1287 IntelligibilityEnhancer::Config config; 1289 IntelligibilityEnhancer::Config config;
1288 config.sample_rate_hz = capture_nonlocked_.split_rate; 1290 config.sample_rate_hz = capture_nonlocked_.split_rate;
1289 config.num_capture_channels = capture_.capture_audio->num_channels(); 1291 config.num_capture_channels = capture_.capture_audio->num_channels();
1290 config.num_render_channels = render_.render_audio->num_channels(); 1292 config.num_render_channels = render_.render_audio->num_channels();
1291 public_submodules_->intelligibility_enhancer.reset( 1293 public_submodules_->intelligibility_enhancer.reset(
1292 new IntelligibilityEnhancer(config)); 1294 new IntelligibilityEnhancer(config));
1293 } 1295 }
1294 } 1296 }
1295 1297
1298 void AudioProcessingImpl::InitializeHighPassFilter() {
1299 public_submodules_->high_pass_filter->Initialize(num_output_channels(),
1300 proc_sample_rate_hz());
1301 }
1302
1296 void AudioProcessingImpl::MaybeUpdateHistograms() { 1303 void AudioProcessingImpl::MaybeUpdateHistograms() {
1297 static const int kMinDiffDelayMs = 60; 1304 static const int kMinDiffDelayMs = 60;
1298 1305
1299 if (echo_cancellation()->is_enabled()) { 1306 if (echo_cancellation()->is_enabled()) {
1300 // Activate delay_jumps_ counters if we know echo_cancellation is runnning. 1307 // 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. 1308 // If a stream has echo we know that the echo_cancellation is in process.
1302 if (capture_.stream_delay_jumps == -1 && 1309 if (capture_.stream_delay_jumps == -1 &&
1303 echo_cancellation()->stream_has_echo()) { 1310 echo_cancellation()->stream_has_echo()) {
1304 capture_.stream_delay_jumps = 0; 1311 capture_.stream_delay_jumps = 0;
1305 } 1312 }
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
1470 debug_dump_.capture.event_msg->set_type(audioproc::Event::CONFIG); 1477 debug_dump_.capture.event_msg->set_type(audioproc::Event::CONFIG);
1471 debug_dump_.capture.event_msg->mutable_config()->CopyFrom(config); 1478 debug_dump_.capture.event_msg->mutable_config()->CopyFrom(config);
1472 1479
1473 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), 1480 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(),
1474 &crit_debug_, &debug_dump_.capture)); 1481 &crit_debug_, &debug_dump_.capture));
1475 return kNoError; 1482 return kNoError;
1476 } 1483 }
1477 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP 1484 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP
1478 1485
1479 } // namespace webrtc 1486 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_processing/audio_processing_impl.h ('k') | webrtc/modules/audio_processing/high_pass_filter_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698