From 96765f51ad97252ebe4eae8b4e965ba2be292d04 Mon Sep 17 00:00:00 2001 From: Thorvald Natvig Date: Tue, 9 Mar 2010 15:54:55 +0100 Subject: [PATCH] Add workaround for creeping gain --- src/mumble/AudioInput.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/mumble/AudioInput.cpp b/src/mumble/AudioInput.cpp index 78ec96ac9..72d956112 100644 --- a/src/mumble/AudioInput.cpp +++ b/src/mumble/AudioInput.cpp @@ -662,6 +662,9 @@ void AudioInput::encodeAudioFrame() { iArg = iroundf(floorf(20.0f * log10f(v))); speex_preprocess_ctl(sppPreprocess, SPEEX_PREPROCESS_SET_AGC_MAX_GAIN, &iArg); + iArg = -60; + speex_preprocess_ctl(sppPreprocess, SPEEX_PREPROCESS_SET_AGC_DECREMENT, &iArg); + iArg = g.s.iNoiseSuppress; speex_preprocess_ctl(sppPreprocess, SPEEX_PREPROCESS_SET_NOISE_SUPPRESS, &iArg); @@ -679,6 +682,11 @@ void AudioInput::encodeAudioFrame() { bResetProcessor = false; } + speex_preprocess_ctl(sppPreprocess, SPEEX_PREPROCESS_GET_AGC_GAIN, &iArg); + iArg = g.s.iNoiseSuppress - iArg; + speex_preprocess_ctl(sppPreprocess, SPEEX_PREPROCESS_SET_NOISE_SUPPRESS, &iArg); + + int iIsSpeech; if (sesEcho && psSpeaker) { @@ -760,7 +768,12 @@ void AudioInput::encodeAudioFrame() { emit doDeaf(); tIdle.restart(); } + spx_int32_t increment = 0; + speex_preprocess_ctl(sppPreprocess, SPEEX_PREPROCESS_SET_AGC_INCREMENT, &increment); return; + } else { + spx_int32_t increment = 12; + speex_preprocess_ctl(sppPreprocess, SPEEX_PREPROCESS_SET_AGC_INCREMENT, &increment); } tIdle.restart();