diff --git a/modules/audio_processing/gain_controller2.cc b/modules/audio_processing/gain_controller2.cc index f256be04f4..06ad8f50c3 100644 --- a/modules/audio_processing/gain_controller2.cc +++ b/modules/audio_processing/gain_controller2.cc @@ -62,13 +62,15 @@ void GainController2::NotifyAnalogLevel(int level) { void GainController2::ApplyConfig( const AudioProcessing::Config::GainController2& config) { - RTC_DCHECK(Validate(config)); - config_ = config; - if (gain_applier_.GetGainFactor() != config_.fixed_gain_db) { + RTC_DCHECK(Validate(config)) + << " the invalid config was " << ToString(config); + + if (config.fixed_gain_db != config_.fixed_gain_db) { // Reset the limiter to quickly react on abrupt level changes caused by // large changes of the fixed gain. limiter_.Reset(); } + config_ = config; gain_applier_.SetGainFactor(DbToRatio(config_.fixed_gain_db)); adaptive_digital_mode_ = config_.adaptive_digital_mode; adaptive_agc_.reset( @@ -77,7 +79,7 @@ void GainController2::ApplyConfig( bool GainController2::Validate( const AudioProcessing::Config::GainController2& config) { - return config.fixed_gain_db >= 0.f && + return config.fixed_gain_db >= 0.f && config.fixed_gain_db < 50.f && config.extra_saturation_margin_db >= 0.f && config.extra_saturation_margin_db <= 100.f; } diff --git a/modules/audio_processing/gain_controller2_unittest.cc b/modules/audio_processing/gain_controller2_unittest.cc index caaefdd1fc..f469bc7775 100644 --- a/modules/audio_processing/gain_controller2_unittest.cc +++ b/modules/audio_processing/gain_controller2_unittest.cc @@ -117,7 +117,7 @@ TEST(GainController2, CreateApplyConfig) { EXPECT_FALSE(GainController2::Validate(config)); // Check that valid configurations are applied. - for (const float& fixed_gain_db : {0.f, 5.f, 10.f, 50.f}) { + for (const float& fixed_gain_db : {0.f, 5.f, 10.f, 40.f}) { config.fixed_gain_db = fixed_gain_db; EXPECT_TRUE(GainController2::Validate(config)); gain_controller2->ApplyConfig(config); diff --git a/test/fuzzers/audio_processing_configs_fuzzer.cc b/test/fuzzers/audio_processing_configs_fuzzer.cc index 6bbd0c0cb4..95bdf09c23 100644 --- a/test/fuzzers/audio_processing_configs_fuzzer.cc +++ b/test/fuzzers/audio_processing_configs_fuzzer.cc @@ -89,7 +89,7 @@ std::unique_ptr CreateApm(test::FuzzDataHelper* fuzz_data, // Read an int8 value, but don't let it be too large or small. const float gain_controller2_gain_db = - rtc::SafeClamp(fuzz_data->ReadOrDefaultValue(0), -50, 50); + rtc::SafeClamp(fuzz_data->ReadOrDefaultValue(0), -40, 40); constexpr size_t kNumFieldTrials = arraysize(kFieldTrialNames); // Verify that the read data type has enough bits to fuzz the field trials.