diff --git a/modules/audio_processing/aec3/comfort_noise_generator.cc b/modules/audio_processing/aec3/comfort_noise_generator.cc index bedd227b3b..fd12a7171e 100644 --- a/modules/audio_processing/aec3/comfort_noise_generator.cc +++ b/modules/audio_processing/aec3/comfort_noise_generator.cc @@ -92,9 +92,10 @@ void GenerateComfortNoise(Aec3Optimization optimization, } // namespace -ComfortNoiseGenerator::ComfortNoiseGenerator(Aec3Optimization optimization) +ComfortNoiseGenerator::ComfortNoiseGenerator(Aec3Optimization optimization, + uint32_t seed) : optimization_(optimization), - seed_(42), + seed_(seed), N2_initial_(new std::array()) { N2_initial_->fill(0.f); Y2_smoothed_.fill(0.f); diff --git a/modules/audio_processing/aec3/comfort_noise_generator.h b/modules/audio_processing/aec3/comfort_noise_generator.h index 79bf62333c..77967d8011 100644 --- a/modules/audio_processing/aec3/comfort_noise_generator.h +++ b/modules/audio_processing/aec3/comfort_noise_generator.h @@ -41,7 +41,7 @@ void EstimateComfortNoise(const std::array& N2, // Generates the comfort noise. class ComfortNoiseGenerator { public: - explicit ComfortNoiseGenerator(Aec3Optimization optimization); + ComfortNoiseGenerator(Aec3Optimization optimization, uint32_t seed); ~ComfortNoiseGenerator(); // Computes the comfort noise. diff --git a/modules/audio_processing/aec3/comfort_noise_generator_unittest.cc b/modules/audio_processing/aec3/comfort_noise_generator_unittest.cc index 10ba696036..bac30b459c 100644 --- a/modules/audio_processing/aec3/comfort_noise_generator_unittest.cc +++ b/modules/audio_processing/aec3/comfort_noise_generator_unittest.cc @@ -36,7 +36,7 @@ TEST(ComfortNoiseGenerator, NullLowerBandNoise) { std::array N2; FftData noise; EXPECT_DEATH( - ComfortNoiseGenerator(DetectOptimization()) + ComfortNoiseGenerator(DetectOptimization(), 42) .Compute(AecState(EchoCanceller3Config{}), N2, nullptr, &noise), ""); } @@ -45,7 +45,7 @@ TEST(ComfortNoiseGenerator, NullUpperBandNoise) { std::array N2; FftData noise; EXPECT_DEATH( - ComfortNoiseGenerator(DetectOptimization()) + ComfortNoiseGenerator(DetectOptimization(), 42) .Compute(AecState(EchoCanceller3Config{}), N2, &noise, nullptr), ""); } @@ -53,7 +53,7 @@ TEST(ComfortNoiseGenerator, NullUpperBandNoise) { #endif TEST(ComfortNoiseGenerator, CorrectLevel) { - ComfortNoiseGenerator cng(DetectOptimization()); + ComfortNoiseGenerator cng(DetectOptimization(), 42); AecState aec_state(EchoCanceller3Config{}); std::array N2; diff --git a/modules/audio_processing/aec3/echo_remover.cc b/modules/audio_processing/aec3/echo_remover.cc index ebd7981bd6..c9a58ec831 100644 --- a/modules/audio_processing/aec3/echo_remover.cc +++ b/modules/audio_processing/aec3/echo_remover.cc @@ -220,12 +220,14 @@ EchoRemoverImpl::EchoRemoverImpl(const EchoCanceller3Config& config, e_k.fill(0.f); } + uint32_t cng_seed = 42; for (size_t ch = 0; ch < num_capture_channels_; ++ch) { residual_echo_estimators_[ch] = std::make_unique(config_); suppression_gains_[ch] = std::make_unique( config_, optimization_, sample_rate_hz); - cngs_[ch] = std::make_unique(optimization_); + cngs_[ch] = + std::make_unique(optimization_, cng_seed++); e_old_[ch].fill(0.f); y_old_[ch].fill(0.f); }