Chromium Code Reviews| Index: webrtc/modules/audio_processing/audio_processing_impl.cc |
| diff --git a/webrtc/modules/audio_processing/audio_processing_impl.cc b/webrtc/modules/audio_processing/audio_processing_impl.cc |
| index 816210f34f8738eb7a042adee69f87f5ed1a99d8..1ba20ef83d324b837bbd619a4f7a6001b8a0dc4a 100644 |
| --- a/webrtc/modules/audio_processing/audio_processing_impl.cc |
| +++ b/webrtc/modules/audio_processing/audio_processing_impl.cc |
| @@ -23,6 +23,7 @@ |
| #include "webrtc/common_audio/signal_processing/include/signal_processing_library.h" |
| #include "webrtc/modules/audio_processing/aec/aec_core.h" |
| #include "webrtc/modules/audio_processing/aec3/echo_canceller3.h" |
| +#include "webrtc/modules/audio_processing/agc2/gain_controller2.h" |
| #include "webrtc/modules/audio_processing/agc/agc_manager_direct.h" |
| #include "webrtc/modules/audio_processing/audio_buffer.h" |
| #include "webrtc/modules/audio_processing/beamformer/nonlinear_beamformer.h" |
| @@ -168,6 +169,7 @@ bool AudioProcessingImpl::ApmSubmoduleStates::Update( |
| bool intelligibility_enhancer_enabled, |
| bool beamformer_enabled, |
| bool adaptive_gain_controller_enabled, |
| + bool adaptive_gain_controller2_enabled, |
| bool level_controller_enabled, |
| bool echo_canceller3_enabled, |
| bool voice_activity_detector_enabled, |
| @@ -186,6 +188,8 @@ bool AudioProcessingImpl::ApmSubmoduleStates::Update( |
| changed |= (beamformer_enabled != beamformer_enabled_); |
| changed |= |
| (adaptive_gain_controller_enabled != adaptive_gain_controller_enabled_); |
| + changed |= |
| + (adaptive_gain_controller2_enabled != adaptive_gain_controller2_enabled_); |
| changed |= (level_controller_enabled != level_controller_enabled_); |
| changed |= (echo_canceller3_enabled != echo_canceller3_enabled_); |
| changed |= (level_estimator_enabled != level_estimator_enabled_); |
| @@ -201,6 +205,7 @@ bool AudioProcessingImpl::ApmSubmoduleStates::Update( |
| intelligibility_enhancer_enabled_ = intelligibility_enhancer_enabled; |
| beamformer_enabled_ = beamformer_enabled; |
| adaptive_gain_controller_enabled_ = adaptive_gain_controller_enabled; |
| + adaptive_gain_controller2_enabled_ = adaptive_gain_controller2_enabled; |
| level_controller_enabled_ = level_controller_enabled; |
| echo_canceller3_enabled_ = echo_canceller3_enabled; |
| level_estimator_enabled_ = level_estimator_enabled; |
| @@ -274,6 +279,7 @@ struct AudioProcessingImpl::ApmPrivateSubmodules { |
| // Accessed internally from capture or during initialization |
| std::unique_ptr<NonlinearBeamformer> beamformer; |
| std::unique_ptr<AgcManagerDirect> agc_manager; |
| + std::unique_ptr<GainController2> gain_controller2; |
| std::unique_ptr<LowCutFilter> low_cut_filter; |
| std::unique_ptr<LevelController> level_controller; |
| std::unique_ptr<ResidualEchoDetector> residual_echo_detector; |
| @@ -345,6 +351,7 @@ AudioProcessingImpl::AudioProcessingImpl(const webrtc::Config& config, |
| public_submodules_->gain_control.get(), &crit_capture_)); |
| private_submodules_->residual_echo_detector.reset( |
| new ResidualEchoDetector()); |
| + private_submodules_->gain_controller2.reset(new GainController2()); |
| // TODO(peah): Move this creation to happen only when the level controller |
| // is enabled. |
| @@ -517,6 +524,7 @@ int AudioProcessingImpl::InitializeLocked() { |
| InitializeLevelController(); |
| InitializeResidualEchoDetector(); |
| InitializeEchoCanceller3(); |
| + InitializeGainController2(); |
| #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
| if (debug_dump_.debug_file->is_open()) { |
| @@ -665,6 +673,16 @@ void AudioProcessingImpl::ApplyConfig(const AudioProcessing::Config& config) { |
| LOG(LS_INFO) << "Echo canceller 3 activated: " |
| << capture_nonlocked_.echo_canceller3_enabled; |
| } |
| + |
| + config_ok = GainController2::Validate(config_.gain_controller2); |
| + if (!config_ok) { |
| + LOG(LS_ERROR) << "AudioProcessing module config error" << std::endl |
| + << "gain_controller2: " |
|
peah-webrtc
2017/05/05 20:44:11
What about also adding a LOG(LS_INFO) about that t
AleBzk
2017/05/16 12:38:43
Done.
|
| + << GainController2::ToString(config_.gain_controller2) |
| + << std::endl |
| + << "Reverting to default parameter set"; |
| + config_.gain_controller2 = AudioProcessing::Config::GainController2(); |
| + } |
| } |
| void AudioProcessingImpl::SetExtraOptions(const webrtc::Config& config) { |
| @@ -1697,6 +1715,7 @@ bool AudioProcessingImpl::UpdateActiveSubmoduleStates() { |
| capture_nonlocked_.intelligibility_enabled, |
| capture_nonlocked_.beamformer_enabled, |
| public_submodules_->gain_control->is_enabled(), |
| + capture_nonlocked_.adaptive_gain_controller2_enabled, |
| capture_nonlocked_.level_controller_enabled, |
| capture_nonlocked_.echo_canceller3_enabled, |
| public_submodules_->voice_detection->is_enabled(), |
| @@ -1747,6 +1766,7 @@ void AudioProcessingImpl::InitializeLowCutFilter() { |
| private_submodules_->low_cut_filter.reset(); |
| } |
| } |
| + |
| void AudioProcessingImpl::InitializeEchoCanceller3() { |
| if (capture_nonlocked_.echo_canceller3_enabled) { |
| private_submodules_->echo_canceller3.reset( |
| @@ -1756,6 +1776,14 @@ void AudioProcessingImpl::InitializeEchoCanceller3() { |
| } |
| } |
| +void AudioProcessingImpl::InitializeGainController2() { |
| + if (capture_nonlocked_.adaptive_gain_controller2_enabled) { |
| + private_submodules_->gain_controller2.reset(new GainController2()); |
| + } else { |
| + private_submodules_->gain_controller2.reset(); |
| + } |
| +} |
| + |
| void AudioProcessingImpl::InitializeLevelController() { |
| private_submodules_->level_controller->Initialize(proc_sample_rate_hz()); |
| } |