Avoid incorrect filter alignment due to call skew detection

Bug: chromium:892040,webrtc:9816
Change-Id: I46e8b2de61eedf67e235fcea8f3b9e85f690e64f
Reviewed-on: https://webrtc-review.googlesource.com/c/103661
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24982}
diff --git a/modules/audio_processing/aec3/render_delay_controller.cc b/modules/audio_processing/aec3/render_delay_controller.cc
index 8adf5f5..f336c39 100644
--- a/modules/audio_processing/aec3/render_delay_controller.cc
+++ b/modules/audio_processing/aec3/render_delay_controller.cc
@@ -40,6 +40,10 @@
   return static_cast<int>(config.delay.skew_hysteresis_blocks);
 }
 
+bool UseOffsetBlocks() {
+  return field_trial::IsEnabled("WebRTC-Aec3UseOffsetBlocks");
+}
+
 constexpr int kSkewHistorySizeLog2 = 8;
 
 class RenderDelayControllerImpl final : public RenderDelayController {
@@ -63,6 +67,7 @@
   const int hysteresis_limit_1_blocks_;
   const int hysteresis_limit_2_blocks_;
   const int skew_hysteresis_blocks_;
+  const bool use_offset_blocks_;
   absl::optional<DelayEstimate> delay_;
   EchoPathDelayEstimator delay_estimator_;
   std::vector<float> delay_buf_;
@@ -131,6 +136,7 @@
       hysteresis_limit_2_blocks_(
           static_cast<int>(config.delay.hysteresis_limit_2_blocks)),
       skew_hysteresis_blocks_(GetSkewHysteresis(config)),
+      use_offset_blocks_(UseOffsetBlocks()),
       delay_estimator_(data_dumper_.get(), config),
       delay_buf_(kBlockSize * non_causal_offset, 0.f),
       skew_estimator_(kSkewHistorySizeLog2) {
@@ -237,6 +243,8 @@
       soft_reset_counter_ = 0;
     }
   }
+  if (!use_offset_blocks_)
+    offset_blocks = 0;
 
   // Log any changes in the skew.
   skew_shift_reporting_counter_ =