From eeff85010685c4755177956179f69088a2137905 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20de=20Vicente=20Pe=C3=B1a?= Date: Tue, 30 Apr 2024 10:45:08 +0200 Subject: [PATCH] Adding the option to experiment with the max_allowed_excess_render_blocks parameter. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:337900458 Change-Id: I2108c7c67eb9aa460932efe881760924109b1915 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349460 Reviewed-by: Per Ã…hgren Commit-Queue: Jesus de Vicente Pena Cr-Commit-Position: refs/heads/main@{#42207} --- experiments/field_trials.py | 3 +++ modules/audio_processing/aec3/echo_canceller3.cc | 7 +++++++ .../audio_processing/aec3/echo_canceller3_unittest.cc | 10 ++++++++++ 3 files changed, 20 insertions(+) diff --git a/experiments/field_trials.py b/experiments/field_trials.py index 6cb0d530ec..c23d523611 100755 --- a/experiments/field_trials.py +++ b/experiments/field_trials.py @@ -41,6 +41,9 @@ class FieldTrial: # registered in the container below. ACTIVE_FIELD_TRIALS: FrozenSet[FieldTrial] = frozenset([ # keep-sorted start + FieldTrial('WebRTC-Aec3BufferingMaxAllowedExcessRenderBlocksOverride', + 337900458, + date(2024, 9, 1)), FieldTrial('WebRTC-Audio-GainController2', 42232605, date(2024, 4, 1)), diff --git a/modules/audio_processing/aec3/echo_canceller3.cc b/modules/audio_processing/aec3/echo_canceller3.cc index fcd9757ad1..4c500f45dc 100644 --- a/modules/audio_processing/aec3/echo_canceller3.cc +++ b/modules/audio_processing/aec3/echo_canceller3.cc @@ -633,6 +633,13 @@ EchoCanceller3Config AdjustConfig(const EchoCanceller3Config& config) { "WebRTC-Aec3DelayEstimateSmoothingDelayFoundOverride", 0.f, 1.f, &adjusted_cfg.delay.delay_estimate_smoothing_delay_found); + int max_allowed_excess_render_blocks_override = + adjusted_cfg.buffering.max_allowed_excess_render_blocks; + RetrieveFieldTrialValue( + "WebRTC-Aec3BufferingMaxAllowedExcessRenderBlocksOverride", 0, 20, + &max_allowed_excess_render_blocks_override); + adjusted_cfg.buffering.max_allowed_excess_render_blocks = + max_allowed_excess_render_blocks_override; return adjusted_cfg; } diff --git a/modules/audio_processing/aec3/echo_canceller3_unittest.cc b/modules/audio_processing/aec3/echo_canceller3_unittest.cc index ad126af4d3..10957fdd8d 100644 --- a/modules/audio_processing/aec3/echo_canceller3_unittest.cc +++ b/modules/audio_processing/aec3/echo_canceller3_unittest.cc @@ -924,6 +924,16 @@ TEST(EchoCanceller3FieldTrials, Aec3UseNearendReverb) { EXPECT_FLOAT_EQ(adjusted_config.ep_strength.nearend_len, 0.8); } +// Testing the field trial-based that overrides the maximum allowed ecess render +// blocks in the render buffering. +TEST(EchoCanceller3FieldTrials, Aec3BufferingMaxAllowedExcessRenderBlocks) { + webrtc::test::ScopedFieldTrials field_trials( + "WebRTC-Aec3BufferingMaxAllowedExcessRenderBlocksOverride/2/"); + EchoCanceller3Config default_config; + EchoCanceller3Config adjusted_config = AdjustConfig(default_config); + EXPECT_EQ(adjusted_config.buffering.max_allowed_excess_render_blocks, 2ul); +} + TEST(EchoCanceller3, DetectionOfProperStereo) { constexpr int kSampleRateHz = 16000; constexpr int kNumChannels = 2;