From 9524c0fa4f5a1318d411de189d683bbfacf3ba6a Mon Sep 17 00:00:00 2001 From: Hanna Silen Date: Wed, 16 Mar 2022 12:51:57 +0100 Subject: [PATCH] AgcManagerDirect: Modify clipping_predictor_evaluator_ configuration Increase the history size of clipping_predictor_evaluator_. Use one-sample accuracy in clipping detection for the evaluator. Bug: webrtc:12774 Change-Id: I8c1bbfe69fe55af73ce14992e49ef7295b3ce926 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/241602 Reviewed-by: Alessio Bazzica Commit-Queue: Hanna Silen Cr-Commit-Position: refs/heads/main@{#36218} --- modules/audio_processing/agc/agc_manager_direct.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/audio_processing/agc/agc_manager_direct.cc b/modules/audio_processing/agc/agc_manager_direct.cc index 8bce7690a3..fb54cf52f6 100644 --- a/modules/audio_processing/agc/agc_manager_direct.cc +++ b/modules/audio_processing/agc/agc_manager_direct.cc @@ -52,7 +52,7 @@ constexpr int kSurplusCompressionGain = 6; // History size for the clipping predictor evaluator (unit: number of 10 ms // frames). -constexpr int kClippingPredictorEvaluatorHistorySize = 32; +constexpr int kClippingPredictorEvaluatorHistorySize = 500; using ClippingPredictorConfig = AudioProcessing::Config::GainController1:: AnalogGainController::ClippingPredictor; @@ -609,9 +609,14 @@ void AgcManagerDirect::AnalyzePreProcess(const float* const* audio, } } // Clipping prediction evaluation. + // `clipping_detected` is not used to evaluate the clipping predictor + // since for this purpose a single clipping sample counts as clipping. + const bool one_or_more_clipped_samples = + clipped_ratio >= (1.0f / samples_per_channel); absl::optional prediction_interval = - clipping_predictor_evaluator_.Observe(clipping_detected, - clipping_predicted); + clipping_predictor_evaluator_.Observe( + /*clipping_detected=*/one_or_more_clipped_samples, + clipping_predicted); if (prediction_interval.has_value()) { RTC_HISTOGRAM_COUNTS_LINEAR( "WebRTC.Audio.Agc.ClippingPredictor.PredictionInterval",