WebRTC AGC(自动增益控制)
我正在testingWebRTC AGC,但是我必须做一些错误的事情,因为信号只是未经修改而通过。
以下是我如何创build和初始化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);
然后,对于每个10ms的示例块,我执行以下操作:
WebRtcAgc_Process(agc, micData, NULL, 80, micData, NULL, micLevelIn, &micLevelOut, 0, &saturationWarning);
其中micLevelIn
设置为0。
有人能告诉我我做错了什么吗?
我预计全面的正弦音调将被削弱到目标DBFS的水平; 和低级正弦波(即-30dBFS)将被放大以匹配目标DBFS级别。 但是,这不是我所看到的。
以下是Webrtc_AGC使用的操作顺序:
- 创buildAGC:
WebRtcAgc_Create
- 初始化AGC:
WebRtcAgc_Init
- 设置configuration:
WebRtcAgc_set_config
- 初始化
capture_level = 0
- 对于
kAgcModeAdaptiveDigital
,调用VirtualMic:WebRtcAgc_VirtualMic
- 具有
capture_level
进程缓冲区:WebRtcAgc_Process
- 获取从
WebRtcAgc_Process
返回的捕获级别并将其设置为capture_level
- 对
audio buffers
重复5到7 - 销毁AGC:
WebRtcAgc_Free
检查webrtc / modules / audio_processing / gain_control_impl.cc以供参考。
尝试这个:
agcConfig.compressionGaindB = 9; agcConfig.limiterEnable = 1; agcConfig.targetLevelDbfs = 9; / *满量程以下9dB * / WebRtcAgc_Create(AGC); WebRtcAgc_Init(&agc,minLevel,maxLevel,kAgcModeFixedDigital,8000); WebRtcAgc_set_config(&agc,&agcConfig);