| 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 d89cc339315c5bf6b76cda4334eff5dbe8137121..e75b3280346c7fc7120ead6b7d90d1f932b6dffb 100644
|
| --- a/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| +++ b/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| @@ -163,12 +163,10 @@ AudioProcessingImpl::AudioProcessingImpl(const Config& config,
|
| private_submodules_(new ApmPrivateSubmodules(beamformer)),
|
| constants_(config.Get<ExperimentalAgc>().startup_min_volume,
|
| #if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS)
|
| - false,
|
| + false),
|
| #else
|
| - config.Get<ExperimentalAgc>().enabled,
|
| + config.Get<ExperimentalAgc>().enabled),
|
| #endif
|
| - config.Get<Intelligibility>().enabled),
|
| -
|
| #if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS)
|
| capture_(false,
|
| #else
|
| @@ -176,7 +174,8 @@ AudioProcessingImpl::AudioProcessingImpl(const Config& config,
|
| #endif
|
| config.Get<Beamforming>().array_geometry,
|
| config.Get<Beamforming>().target_direction),
|
| - capture_nonlocked_(config.Get<Beamforming>().enabled)
|
| + capture_nonlocked_(config.Get<Beamforming>().enabled,
|
| + config.Get<Intelligibility>().enabled)
|
| {
|
| {
|
| rtc::CritScope cs_render(&crit_render_);
|
| @@ -411,6 +410,13 @@ void AudioProcessingImpl::SetExtraOptions(const Config& config) {
|
| InitializeTransient();
|
| }
|
|
|
| + if(capture_nonlocked_.intelligibility_enabled !=
|
| + config.Get<Intelligibility>().enabled) {
|
| + capture_nonlocked_.intelligibility_enabled =
|
| + config.Get<Intelligibility>().enabled;
|
| + InitializeIntelligibility();
|
| + }
|
| +
|
| #ifdef WEBRTC_ANDROID_PLATFORM_BUILD
|
| if (capture_nonlocked_.beamformer_enabled !=
|
| config.Get<Beamforming>().enabled) {
|
| @@ -704,12 +710,13 @@ int AudioProcessingImpl::ProcessStreamLocked() {
|
| ca->CopyLowPassToReference();
|
| }
|
| public_submodules_->noise_suppression->ProcessCaptureAudio(ca);
|
| - if (constants_.intelligibility_enabled) {
|
| + if (capture_nonlocked_.intelligibility_enabled) {
|
| RTC_DCHECK(public_submodules_->noise_suppression->is_enabled());
|
| - RTC_DCHECK(public_submodules_->gain_control->is_enabled());
|
| + int gain_db = public_submodules_->gain_control->is_enabled() ?
|
| + public_submodules_->gain_control->compression_gain_db() :
|
| + 0;
|
| public_submodules_->intelligibility_enhancer->SetCaptureNoiseEstimate(
|
| - public_submodules_->noise_suppression->NoiseEstimate(),
|
| - public_submodules_->gain_control->compression_gain_db());
|
| + public_submodules_->noise_suppression->NoiseEstimate(), gain_db);
|
| }
|
|
|
| // Ensure that the stream delay was set before the call to the
|
| @@ -902,7 +909,7 @@ int AudioProcessingImpl::ProcessReverseStreamLocked() {
|
| ra->SplitIntoFrequencyBands();
|
| }
|
|
|
| - if (constants_.intelligibility_enabled) {
|
| + if (capture_nonlocked_.intelligibility_enabled) {
|
| public_submodules_->intelligibility_enhancer->ProcessRenderAudio(
|
| ra->split_channels_f(kBand0To8kHz), capture_nonlocked_.split_rate,
|
| ra->num_channels());
|
| @@ -1150,7 +1157,7 @@ bool AudioProcessingImpl::fwd_analysis_needed() const {
|
| }
|
|
|
| bool AudioProcessingImpl::is_rev_processed() const {
|
| - return constants_.intelligibility_enabled;
|
| + return capture_nonlocked_.intelligibility_enabled;
|
| }
|
|
|
| bool AudioProcessingImpl::rev_synthesis_needed() const {
|
| @@ -1215,7 +1222,7 @@ void AudioProcessingImpl::InitializeBeamformer() {
|
| }
|
|
|
| void AudioProcessingImpl::InitializeIntelligibility() {
|
| - if (constants_.intelligibility_enabled) {
|
| + if (capture_nonlocked_.intelligibility_enabled) {
|
| public_submodules_->intelligibility_enhancer.reset(
|
| new IntelligibilityEnhancer(capture_nonlocked_.split_rate,
|
| render_.render_audio->num_channels(),
|
| @@ -1442,6 +1449,8 @@ int AudioProcessingImpl::WriteConfigMessage(bool forced) {
|
|
|
| config.set_transient_suppression_enabled(
|
| capture_.transient_suppressor_enabled);
|
| + config.set_intelligibility_enhancer_enabled(
|
| + capture_nonlocked_.intelligibility_enabled);
|
|
|
| std::string experiments_description =
|
| public_submodules_->echo_cancellation->GetExperimentsDescription();
|
|
|