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 011325f8ca1cc00a525d01e11ef296db4ecddf52..fa4ad02028207159c8cb5946e5767080a0dd6d5d 100644 |
| --- a/webrtc/modules/audio_processing/audio_processing_impl.cc |
| +++ b/webrtc/modules/audio_processing/audio_processing_impl.cc |
| @@ -116,6 +116,10 @@ int ClosestHigherNativeRate(int min_proc_rate) { |
| } // namespace |
| +bool AudioProcessing::Config::Validate() const { |
|
the sun
2016/09/01 13:48:00
Make .cc-local or bake into ApplyConfig().
peah-webrtc
2016/09/02 08:22:00
Done.
|
| + return webrtc::LevelController::Validate(level_controller); |
| +} |
| + |
| // Throughout webrtc, it's assumed that success is represented by zero. |
| static_assert(AudioProcessing::kNoError == 0, "kNoError must be zero"); |
| @@ -149,15 +153,15 @@ struct AudioProcessingImpl::ApmPrivateSubmodules { |
| }; |
| AudioProcessing* AudioProcessing::Create() { |
| - Config config; |
| + webrtc::Config config; |
| return Create(config, nullptr); |
| } |
| -AudioProcessing* AudioProcessing::Create(const Config& config) { |
| +AudioProcessing* AudioProcessing::Create(const webrtc::Config& config) { |
| return Create(config, nullptr); |
| } |
| -AudioProcessing* AudioProcessing::Create(const Config& config, |
| +AudioProcessing* AudioProcessing::Create(const webrtc::Config& config, |
| NonlinearBeamformer* beamformer) { |
| AudioProcessingImpl* apm = new AudioProcessingImpl(config, beamformer); |
| if (apm->Initialize() != kNoError) { |
| @@ -168,10 +172,10 @@ AudioProcessing* AudioProcessing::Create(const Config& config, |
| return apm; |
| } |
| -AudioProcessingImpl::AudioProcessingImpl(const Config& config) |
| +AudioProcessingImpl::AudioProcessingImpl(const webrtc::Config& config) |
| : AudioProcessingImpl(config, nullptr) {} |
| -AudioProcessingImpl::AudioProcessingImpl(const Config& config, |
| +AudioProcessingImpl::AudioProcessingImpl(const webrtc::Config& config, |
| NonlinearBeamformer* beamformer) |
| : public_submodules_(new ApmPublicSubmodules()), |
| private_submodules_(new ApmPrivateSubmodules(beamformer)), |
| @@ -189,8 +193,7 @@ AudioProcessingImpl::AudioProcessingImpl(const Config& config, |
| config.Get<Beamforming>().array_geometry, |
| config.Get<Beamforming>().target_direction), |
| capture_nonlocked_(config.Get<Beamforming>().enabled, |
| - config.Get<Intelligibility>().enabled, |
| - config.Get<LevelControl>().enabled) { |
| + config.Get<Intelligibility>().enabled) { |
| { |
| rtc::CritScope cs_render(&crit_render_); |
| rtc::CritScope cs_capture(&crit_capture_); |
| @@ -413,7 +416,29 @@ int AudioProcessingImpl::InitializeLocked(const ProcessingConfig& config) { |
| return InitializeLocked(); |
| } |
| -void AudioProcessingImpl::SetExtraOptions(const Config& config) { |
| +bool AudioProcessingImpl::ApplyConfig(const AudioProcessing::Config& config) { |
| + bool config_ok = config.Validate(); |
| + RTC_DCHECK(config_ok); |
| + if (!config_ok) { |
| + return false; |
| + } |
| + |
| + // Run in a single-threaded manner when applying the settings. |
| + rtc::CritScope cs_render(&crit_render_); |
| + rtc::CritScope cs_capture(&crit_capture_); |
| + |
| + if (config.level_controller.enabled && |
|
the sun
2016/09/01 13:48:00
!=
peah-webrtc
2016/09/02 08:22:00
Done.
|
| + (!capture_nonlocked_.level_controller_enabled)) { |
| + InitializeLevelController(); |
| + LOG(LS_INFO) << "Level controller activated: " |
| + << capture_nonlocked_.level_controller_enabled; |
| + } |
| + capture_nonlocked_.level_controller_enabled = config.level_controller.enabled; |
|
the sun
2016/09/01 13:48:00
Move inside the above conditional
peah-webrtc
2016/09/02 08:22:00
Done.
|
| + |
| + return true; |
| +} |
| + |
| +void AudioProcessingImpl::SetExtraOptions(const webrtc::Config& config) { |
| // Run in a single-threaded manner when setting the extra options. |
| rtc::CritScope cs_render(&crit_render_); |
| rtc::CritScope cs_capture(&crit_capture_); |
| @@ -427,16 +452,6 @@ void AudioProcessingImpl::SetExtraOptions(const Config& config) { |
| InitializeTransient(); |
| } |
| - if (capture_nonlocked_.level_controller_enabled != |
| - config.Get<LevelControl>().enabled) { |
| - capture_nonlocked_.level_controller_enabled = |
| - config.Get<LevelControl>().enabled; |
| - LOG(LS_INFO) << "Level controller activated: " |
| - << config.Get<LevelControl>().enabled; |
| - |
| - InitializeLevelController(); |
| - } |
| - |
| #if WEBRTC_INTELLIGIBILITY_ENHANCER |
| if(capture_nonlocked_.intelligibility_enabled != |
| config.Get<Intelligibility>().enabled) { |