From 09c292f84d003335d0aeeb3140e475508287261b Mon Sep 17 00:00:00 2001 From: Hanna Silen Date: Wed, 5 Oct 2022 11:20:26 +0200 Subject: [PATCH] AdaptiveDigitalGainController: Add method GetSpeechLevelDbfsIfConfident Bug: webrtc:7494 Change-Id: I18d8ee4e50f6fd901f29e4591ff12759018d070d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/277381 Reviewed-by: Alessio Bazzica Commit-Queue: Hanna Silen Cr-Commit-Position: refs/heads/main@{#38303} --- .../agc2/adaptive_digital_gain_controller.cc | 7 +++++++ .../agc2/adaptive_digital_gain_controller.h | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/modules/audio_processing/agc2/adaptive_digital_gain_controller.cc b/modules/audio_processing/agc2/adaptive_digital_gain_controller.cc index 381e454868..c579ced55d 100644 --- a/modules/audio_processing/agc2/adaptive_digital_gain_controller.cc +++ b/modules/audio_processing/agc2/adaptive_digital_gain_controller.cc @@ -105,4 +105,11 @@ void AdaptiveDigitalGainController::HandleInputGainChange() { saturation_protector_->Reset(); } +absl::optional +AdaptiveDigitalGainController::GetSpeechLevelDbfsIfConfident() const { + return speech_level_estimator_.IsConfident() + ? absl::optional(speech_level_estimator_.level_dbfs()) + : absl::nullopt; +} + } // namespace webrtc diff --git a/modules/audio_processing/agc2/adaptive_digital_gain_controller.h b/modules/audio_processing/agc2/adaptive_digital_gain_controller.h index 75ea44591e..af7f0238ec 100644 --- a/modules/audio_processing/agc2/adaptive_digital_gain_controller.h +++ b/modules/audio_processing/agc2/adaptive_digital_gain_controller.h @@ -13,6 +13,7 @@ #include +#include "absl/types/optional.h" #include "modules/audio_processing/agc2/adaptive_digital_gain_applier.h" #include "modules/audio_processing/agc2/adaptive_mode_level_estimator.h" #include "modules/audio_processing/agc2/noise_level_estimator.h" @@ -50,6 +51,10 @@ class AdaptiveDigitalGainController { // Handles a gain change applied to the input signal (e.g., analog gain). void HandleInputGainChange(); + // Returns the most recent speech level (dBFs) if the estimator is confident. + // Otherwise returns absl::nullopt. + absl::optional GetSpeechLevelDbfsIfConfident() const; + private: AdaptiveModeLevelEstimator speech_level_estimator_; AdaptiveDigitalGainApplier gain_controller_;