WebRTC AGC (автоматический контроль усиления)
Я тестирую WebRTC AGC, но, должно быть, я делаю что-то не так, потому что сигнал просто проходит без изменений.
Вот как я создаю и инициализирую 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);
И затем для каждого образца блока 10 мс я делаю следующее:
WebRtcAgc_Process(agc, micData, NULL, 80, micData, NULL, micLevelIn, &micLevelOut, 0, &saturationWarning);
кудаmicLevelIn
установлен на 0.
Может кто-нибудь сказать мне, что я делаю не так?
Я ожидал, что полный синусоидальный тон будет ослаблен до целевого уровня DBFS; и синусоидальный сигнал низкого уровня (то есть -30dBFS) будет усилен, чтобы соответствовать целевому уровню DBFS. Но это не то, что я вижу.