diff --git a/modules/audio_processing/agc2/BUILD.gn b/modules/audio_processing/agc2/BUILD.gn index c8000feaa1..bf09533737 100644 --- a/modules/audio_processing/agc2/BUILD.gn +++ b/modules/audio_processing/agc2/BUILD.gn @@ -65,6 +65,7 @@ rtc_library("adaptive_digital") { "../../../api:array_view", "../../../common_audio", "../../../rtc_base:checks", + "../../../rtc_base:logging", "../../../rtc_base:rtc_base_approved", "../../../rtc_base:safe_compare", "../../../rtc_base:safe_minmax", diff --git a/modules/audio_processing/agc2/adaptive_agc.cc b/modules/audio_processing/agc2/adaptive_agc.cc index febb4e5cdb..9349436964 100644 --- a/modules/audio_processing/agc2/adaptive_agc.cc +++ b/modules/audio_processing/agc2/adaptive_agc.cc @@ -14,6 +14,7 @@ #include "modules/audio_processing/agc2/vad_with_level.h" #include "modules/audio_processing/logging/apm_data_dumper.h" #include "rtc_base/checks.h" +#include "rtc_base/logging.h" namespace webrtc { namespace { @@ -42,14 +43,20 @@ AdaptiveAgc::AdaptiveAgc(ApmDataDumper* apm_data_dumper, : speech_level_estimator_( apm_data_dumper, config.adaptive_digital.level_estimator, - config.adaptive_digital.use_saturation_protector, + config.adaptive_digital + .level_estimator_adjacent_speech_frames_threshold, + config.adaptive_digital.initial_saturation_margin_db, config.adaptive_digital.extra_saturation_margin_db), + vad_(config.adaptive_digital.vad_probability_attack), gain_applier_(apm_data_dumper, config.adaptive_digital .gain_applier_adjacent_speech_frames_threshold), apm_data_dumper_(apm_data_dumper), noise_level_estimator_(apm_data_dumper) { RTC_DCHECK(apm_data_dumper); + if (!config.adaptive_digital.use_saturation_protector) { + RTC_LOG(LS_WARNING) << "The saturation protector cannot be disabled."; + } } AdaptiveAgc::~AdaptiveAgc() = default; diff --git a/modules/audio_processing/agc2/adaptive_mode_level_estimator.cc b/modules/audio_processing/agc2/adaptive_mode_level_estimator.cc index 9a8d6482bf..f09f63bf2f 100644 --- a/modules/audio_processing/agc2/adaptive_mode_level_estimator.cc +++ b/modules/audio_processing/agc2/adaptive_mode_level_estimator.cc @@ -68,22 +68,6 @@ AdaptiveModeLevelEstimator::AdaptiveModeLevelEstimator( kDefaultInitialSaturationMarginDb, kDefaultExtraSaturationMarginDb) {} -AdaptiveModeLevelEstimator::AdaptiveModeLevelEstimator( - ApmDataDumper* apm_data_dumper, - AudioProcessing::Config::GainController2::LevelEstimator level_estimator, - bool use_saturation_protector, - float extra_saturation_margin_db) - : AdaptiveModeLevelEstimator( - apm_data_dumper, - level_estimator, - kDefaultLevelEstimatorAdjacentSpeechFramesThreshold, - kDefaultInitialSaturationMarginDb, - extra_saturation_margin_db) { - if (!use_saturation_protector) { - RTC_LOG(LS_WARNING) << "The saturation protector cannot be disabled."; - } -} - AdaptiveModeLevelEstimator::AdaptiveModeLevelEstimator( ApmDataDumper* apm_data_dumper, AudioProcessing::Config::GainController2::LevelEstimator level_estimator, diff --git a/modules/audio_processing/agc2/adaptive_mode_level_estimator.h b/modules/audio_processing/agc2/adaptive_mode_level_estimator.h index ccea406079..213fc0f0c8 100644 --- a/modules/audio_processing/agc2/adaptive_mode_level_estimator.h +++ b/modules/audio_processing/agc2/adaptive_mode_level_estimator.h @@ -29,14 +29,6 @@ class AdaptiveModeLevelEstimator { AdaptiveModeLevelEstimator(const AdaptiveModeLevelEstimator&) = delete; AdaptiveModeLevelEstimator& operator=(const AdaptiveModeLevelEstimator&) = delete; - // Deprecated ctor. `use_saturation_protector` is ignored and the saturation - // protector will be used regardless of what is passed. - AdaptiveModeLevelEstimator( - ApmDataDumper* apm_data_dumper, - AudioProcessing::Config::GainController2::LevelEstimator level_estimator, - bool use_saturation_protector, - float extra_saturation_margin_db); - // TODO(crbug.com/webrtc/7494): Replace ctor above with the one below. AdaptiveModeLevelEstimator( ApmDataDumper* apm_data_dumper, AudioProcessing::Config::GainController2::LevelEstimator level_estimator, diff --git a/modules/audio_processing/agc2/adaptive_mode_level_estimator_unittest.cc b/modules/audio_processing/agc2/adaptive_mode_level_estimator_unittest.cc index 991ac84886..ea35797f5e 100644 --- a/modules/audio_processing/agc2/adaptive_mode_level_estimator_unittest.cc +++ b/modules/audio_processing/agc2/adaptive_mode_level_estimator_unittest.cc @@ -49,7 +49,7 @@ struct TestLevelEstimator { estimator(std::make_unique( &data_dumper, AudioProcessing::Config::GainController2::LevelEstimator::kRms, - /*min_consecutive_speech_frames=*/1, + /*adjacent_speech_frames_threshold=*/1, kInitialSaturationMarginDb, kExtraSaturationMarginDb)) {} ApmDataDumper data_dumper; diff --git a/modules/audio_processing/include/audio_processing.h b/modules/audio_processing/include/audio_processing.h index f16f0ad996..e96a45b806 100644 --- a/modules/audio_processing/include/audio_processing.h +++ b/modules/audio_processing/include/audio_processing.h @@ -345,8 +345,12 @@ class RTC_EXPORT AudioProcessing : public rtc::RefCountInterface { } fixed_digital; struct { bool enabled = false; + float vad_probability_attack = 1.f; LevelEstimator level_estimator = kRms; + int level_estimator_adjacent_speech_frames_threshold = 1; + // TODO(crbug.com/webrtc/7494): Remove `use_saturation_protector`. bool use_saturation_protector = true; + float initial_saturation_margin_db = 20.f; float extra_saturation_margin_db = 2.f; int gain_applier_adjacent_speech_frames_threshold = 1; } adaptive_digital;