AgcManagerDirect: Fix the use of `use_clipping_predictor_step_`

Evaluate the clipping predictor whenever injected but keep using the
predictions only when allowed.

Bug: webrtc:12774
Change-Id: I9e8930a528d1d514d52b821a28b6c8ad0c3aeb5e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/231137
Reviewed-by: Minyue Li <minyue@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Hanna Silen <silen@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34937}
diff --git a/modules/audio_processing/agc/agc_manager_direct.cc b/modules/audio_processing/agc/agc_manager_direct.cc
index 7e9a6a9..22a097e 100644
--- a/modules/audio_processing/agc/agc_manager_direct.cc
+++ b/modules/audio_processing/agc/agc_manager_direct.cc
@@ -588,7 +588,7 @@
       const auto step = clipping_predictor_->EstimateClippedLevelStep(
           channel, stream_analog_level_, clipped_level_step_,
           channel_agcs_[channel]->min_mic_level(), kMaxMicLevel);
-      if (use_clipping_predictor_step_ && step.has_value()) {
+      if (step.has_value()) {
         predicted_step = std::max(predicted_step, step.value());
         clipping_predicted = true;
       }
@@ -609,16 +609,20 @@
       clipping_predictor_log_counter_ = 0;
     }
   }
-  if (clipping_detected || clipping_predicted) {
-    int step = clipped_level_step_;
-    if (clipping_detected) {
-      RTC_DLOG(LS_INFO) << "[agc] Clipping detected. clipped_ratio="
-                        << clipped_ratio;
+  if (clipping_detected) {
+    RTC_DLOG(LS_INFO) << "[agc] Clipping detected. clipped_ratio="
+                      << clipped_ratio;
+  }
+  int step = clipped_level_step_;
+  if (clipping_predicted) {
+    predicted_step = std::max(predicted_step, clipped_level_step_);
+    RTC_DLOG(LS_INFO) << "[agc] Clipping predicted. step=" << predicted_step;
+    if (use_clipping_predictor_step_) {
+      step = predicted_step;
     }
-    if (clipping_predicted) {
-      step = std::max(predicted_step, clipped_level_step_);
-      RTC_DLOG(LS_INFO) << "[agc] Clipping predicted. step=" << step;
-    }
+  }
+  if (clipping_detected ||
+      (clipping_predicted && use_clipping_predictor_step_)) {
     for (auto& state_ch : channel_agcs_) {
       state_ch->HandleClipping(step);
     }