WebRTC AGC(自动增益控制)

时间:2014-03-28 07:13:49

标签: c++ signal-processing webrtc

我正在测试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);

然后对于每个10ms样本块,我执行以下操作:

WebRtcAgc_Process(agc, micData, NULL, 80, micData, NULL, micLevelIn, &micLevelOut, 0, &saturationWarning);

micLevelIn设置为0.

有人可以告诉我我做错了什么吗?

我预计全音域正弦音将衰减到目标DBFS水平;并且将放大低电平正弦音(即-30dBFS)以匹配目标DBFS电平。但那不是我所看到的。

2 个答案:

答案 0 :(得分:2)

以下是用于Webrtc_AGC的操作序列:

  1. 创建AGC:WebRtcAgc_Create
  2. 初始化AGC:WebRtcAgc_Init
  3. 设置配置:WebRtcAgc_set_config
  4. 初始化capture_level = 0
  5. 对于kAgcModeAdaptiveDigital,请调用VirtualMic:WebRtcAgc_VirtualMic
  6. 处理缓冲区capture_levelWebRtcAgc_Process
  7. 获取WebRtcAgc_Process返回的捕获级别,并将其设置为capture_level
  8. audio buffers
  9. 重复5到7
  10. 销毁AGC:WebRtcAgc_Free
  11. 检查webrtc / modules / audio_processing / gain_control_impl.cc以供参考。

答案 1 :(得分:0)

试试这个:


    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);