WebRTC AGC (Control automático de ganancia)
Estoy probando el AGC WebRTC pero debo estar haciendo algo mal porque la señal simplemente pasa sin modificaciones.
Así es como creo e inicializo el AGC:
agcConfig.compressionGaindB = 9;
agcConfig.limiterEnable = 1;
agcConfig.targetLevelDbfs = 9; /* 9dB below full scale */
WebRtcAgc_Create(&agc);
WebRtcAgc_Init(agc, minLevel, maxLevel, kAgcModeFixedDigital, 8000);
WebRtcAgc_set_config(agc, agcConfig);
Y luego, por cada bloque de muestra de 10 ms, hago lo siguiente:
WebRtcAgc_Process(agc, micData, NULL, 80, micData, NULL, micLevelIn, &micLevelOut, 0, &saturationWarning);
DóndemicLevelIn
se establece en 0.
¿Alguien puede decirme qué estoy haciendo mal?
Esperaba que un tono sinusoidal a gran escala se atenuaría al nivel objetivo de DBFS; y un tono sinusoidal de bajo nivel (es decir, -30dBFS) se amplificaría para que coincida con el nivel objetivo de DBFS. Pero eso no es lo que estoy viendo.