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 f9659b82c4d597dcd1e58f5e7b21b95278cad951..06b0cc7023e1b86a336298a4bb57592ef96b657c 100644 | 
| --- a/webrtc/modules/audio_processing/audio_processing_impl.cc | 
| +++ b/webrtc/modules/audio_processing/audio_processing_impl.cc | 
| @@ -259,7 +259,7 @@ bool AudioProcessingImpl::ApmSubmoduleStates::CaptureMultiBandProcessingActive() | 
| bool AudioProcessingImpl::ApmSubmoduleStates::CaptureFullBandProcessingActive() | 
| const { | 
| - return level_controller_enabled_; | 
| + return level_controller_enabled_ && gain_controller2_enabled_; | 
| } | 
| bool AudioProcessingImpl::ApmSubmoduleStates::RenderMultiBandSubModulesActive() | 
| @@ -711,24 +711,17 @@ void AudioProcessingImpl::ApplyConfig(const AudioProcessing::Config& config) { | 
| << capture_nonlocked_.echo_canceller3_enabled; | 
| } | 
| - config_ok = GainController2::Validate(config_.gain_controller2); | 
| - if (!config_ok) { | 
| + if (!GainController2::Validate(config_.gain_controller2)) { | 
| LOG(LS_ERROR) << "AudioProcessing module config error" << std::endl | 
| - << "gain_controller2: " | 
| + << "Gain Controller 2: " | 
| << GainController2::ToString(config_.gain_controller2) | 
| << std::endl | 
| << "Reverting to default parameter set"; | 
| config_.gain_controller2 = AudioProcessing::Config::GainController2(); | 
| } | 
| - | 
| - if (config.gain_controller2.enabled != | 
| - capture_nonlocked_.gain_controller2_enabled) { | 
| - capture_nonlocked_.gain_controller2_enabled = | 
| - config_.gain_controller2.enabled; | 
| - InitializeGainController2(); | 
| - LOG(LS_INFO) << "Gain controller 2 activated: " | 
| - << capture_nonlocked_.gain_controller2_enabled; | 
| - } | 
| + InitializeGainController2(); | 
| + LOG(LS_INFO) << "Gain Controller 2 activated: " | 
| + << config_.gain_controller2.enabled; | 
| } | 
| void AudioProcessingImpl::SetExtraOptions(const webrtc::Config& config) { | 
| @@ -1366,7 +1359,7 @@ int AudioProcessingImpl::ProcessCaptureStreamLocked() { | 
| capture_.key_pressed); | 
| } | 
| - if (capture_nonlocked_.gain_controller2_enabled) { | 
| + if (config_.gain_controller2.enabled) { | 
| private_submodules_->gain_controller2->Process(capture_buffer); | 
| } | 
| @@ -1827,7 +1820,7 @@ bool AudioProcessingImpl::UpdateActiveSubmoduleStates() { | 
| capture_nonlocked_.intelligibility_enabled, | 
| capture_nonlocked_.beamformer_enabled, | 
| public_submodules_->gain_control->is_enabled(), | 
| - capture_nonlocked_.gain_controller2_enabled, | 
| + config_.gain_controller2.enabled, | 
| capture_nonlocked_.level_controller_enabled, | 
| capture_nonlocked_.echo_canceller3_enabled, | 
| public_submodules_->voice_detection->is_enabled(), | 
| @@ -1889,9 +1882,12 @@ void AudioProcessingImpl::InitializeEchoCanceller3() { | 
| } | 
| void AudioProcessingImpl::InitializeGainController2() { | 
| - if (capture_nonlocked_.gain_controller2_enabled) { | 
| + if (config_.gain_controller2.enabled) { | 
| + // TODO(alessiob): If GainController2 was already enabled and the fixed gain | 
| 
 
peah-webrtc
2017/08/18 04:51:06
I think you probably want to update the sample rat
 
aleloi
2017/08/18 08:28:31
Isn't it already updated at line 1890?
 
 | 
| + // to apply hasn't changed do not re-initialize. | 
| private_submodules_->gain_controller2.reset( | 
| - new GainController2(proc_sample_rate_hz())); | 
| + new GainController2(config_.gain_controller2.fixed_gain_db)); | 
| + private_submodules_->gain_controller2->Initialize(proc_sample_rate_hz()); | 
| } else { | 
| private_submodules_->gain_controller2.reset(); | 
| } | 
| @@ -1995,6 +1991,9 @@ void AudioProcessingImpl::WriteAecDumpConfigMessage(bool forced) { | 
| if (capture_nonlocked_.echo_canceller3_enabled) { | 
| experiments_description += "EchoCanceller3;"; | 
| } | 
| + if (config_.gain_controller2.enabled) { | 
| + experiments_description += "GainController2;"; | 
| + } | 
| InternalAPMConfig apm_config; |