MonoAgc: Move error computation outside UpdateGain
Bug: webrtc:7494 Change-Id: If95f44bf404316b8fadf28e3fd01a25f87c96a5b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/277625 Reviewed-by: Alessio Bazzica <alessiob@webrtc.org> Commit-Queue: Hanna Silen <silen@webrtc.org> Cr-Commit-Position: refs/heads/main@{#38282}
This commit is contained in:
parent
4426c4709d
commit
56b3a00d52
@ -215,7 +215,12 @@ void MonoAgc::Process(rtc::ArrayView<const int16_t> audio) {
|
|||||||
|
|
||||||
agc_->Process(audio);
|
agc_->Process(audio);
|
||||||
|
|
||||||
UpdateGain();
|
// Update gain if `agc_` has an RMS error estimate ready.
|
||||||
|
int rms_error = 0;
|
||||||
|
if (agc_->GetRmsErrorDb(&rms_error)) {
|
||||||
|
UpdateGain(rms_error);
|
||||||
|
}
|
||||||
|
|
||||||
if (!disable_digital_adaptive_) {
|
if (!disable_digital_adaptive_) {
|
||||||
UpdateCompressor();
|
UpdateCompressor();
|
||||||
}
|
}
|
||||||
@ -342,19 +347,15 @@ int MonoAgc::CheckVolumeAndReset() {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Requests the RMS error from AGC and distributes the required gain change
|
// Distributes the required gain change between the digital compression stage
|
||||||
// between the digital compression stage and volume slider. We use the
|
// and volume slider. We use the compressor first, providing a slack region
|
||||||
// compressor first, providing a slack region around the current slider
|
// around the current slider position to reduce movement.
|
||||||
// position to reduce movement.
|
|
||||||
//
|
//
|
||||||
// If the slider needs to be moved, we check first if the user has adjusted
|
// If the slider needs to be moved, we check first if the user has adjusted
|
||||||
// it, in which case we take no action and cache the updated level.
|
// it, in which case we take no action and cache the updated level.
|
||||||
void MonoAgc::UpdateGain() {
|
void MonoAgc::UpdateGain(int rms_error_db) {
|
||||||
int rms_error = 0;
|
int rms_error = rms_error_db;
|
||||||
if (!agc_->GetRmsErrorDb(&rms_error)) {
|
|
||||||
// No error update ready.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// The compressor will always add at least kMinCompressionGain. In effect,
|
// The compressor will always add at least kMinCompressionGain. In effect,
|
||||||
// this adjusts our target gain upward by the same amount and rms_error
|
// this adjusts our target gain upward by the same amount and rms_error
|
||||||
// needs to reflect that.
|
// needs to reflect that.
|
||||||
|
|||||||
@ -228,7 +228,7 @@ class MonoAgc {
|
|||||||
void SetMaxLevel(int level);
|
void SetMaxLevel(int level);
|
||||||
|
|
||||||
int CheckVolumeAndReset();
|
int CheckVolumeAndReset();
|
||||||
void UpdateGain();
|
void UpdateGain(int rms_error_db);
|
||||||
void UpdateCompressor();
|
void UpdateCompressor();
|
||||||
|
|
||||||
const int min_mic_level_;
|
const int min_mic_level_;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user