Adding the option to experiment with the max_allowed_excess_render_blocks parameter.
Bug: webrtc:337900458
Change-Id: I2108c7c67eb9aa460932efe881760924109b1915
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349460
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42207}
diff --git a/experiments/field_trials.py b/experiments/field_trials.py
index 6cb0d53..c23d523 100755
--- a/experiments/field_trials.py
+++ b/experiments/field_trials.py
@@ -41,6 +41,9 @@
# 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 fcd9757..4c500f4 100644
--- a/modules/audio_processing/aec3/echo_canceller3.cc
+++ b/modules/audio_processing/aec3/echo_canceller3.cc
@@ -633,6 +633,13 @@
"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 ad126af..10957fd 100644
--- a/modules/audio_processing/aec3/echo_canceller3_unittest.cc
+++ b/modules/audio_processing/aec3/echo_canceller3_unittest.cc
@@ -924,6 +924,16 @@
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;