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..14138d50907e3f6dac90c33669b25d71eb10504a 100644 |
--- a/webrtc/modules/audio_processing/audio_processing_impl.cc |
+++ b/webrtc/modules/audio_processing/audio_processing_impl.cc |
@@ -116,6 +116,14 @@ int ClosestHigherNativeRate(int min_proc_rate) { |
} // namespace |
+bool ApmSettings::LevelControllerSettings::IsOk() const { |
the sun
2016/08/30 10:32:38
I don't think this is the right place for this kno
peah-webrtc
2016/08/30 17:05:57
That makes sense. I've rewritten this. PTAL.
|
+ return true; |
+} |
+ |
+bool ApmSettings::IsOk() const { |
+ return level_controller.IsOk(); |
+} |
+ |
// Throughout webrtc, it's assumed that success is represented by zero. |
static_assert(AudioProcessing::kNoError == 0, "kNoError must be zero"); |
@@ -189,8 +197,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_); |
@@ -238,6 +245,29 @@ int AudioProcessingImpl::Initialize() { |
return InitializeLocked(); |
} |
+int AudioProcessingImpl::ApplySettings(const ApmSettings& settings) { |
+ bool settings_ok = settings.IsOk(); |
+ RTC_DCHECK(settings_ok); |
+ |
+ if (!settings_ok) { |
hlundin-webrtc
2016/08/30 11:26:26
I think you can be more aggressive, and simply RTC
peah-webrtc
2016/08/30 17:05:57
I think it is not absolutely necessary to CHECK he
|
+ return -1; |
+ } |
+ |
+ // Run in a single-threaded manner when applying the settings. |
+ rtc::CritScope cs_render(&crit_render_); |
+ rtc::CritScope cs_capture(&crit_capture_); |
+ |
+ capture_nonlocked_.level_controller_enabled = |
+ settings.level_controller.enabled; |
+ if (capture_nonlocked_.level_controller_enabled) { |
+ InitializeLevelController(); |
+ } |
+ LOG(LS_INFO) << "Level controller activated: " |
+ << capture_nonlocked_.level_controller_enabled; |
+ |
+ return settings_ok ? 0 : -1; |
+} |
+ |
int AudioProcessingImpl::Initialize(int input_sample_rate_hz, |
int output_sample_rate_hz, |
int reverse_sample_rate_hz, |
@@ -427,16 +457,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) { |