自动增益控制
WebRTC AGC (Automatic Gain Control)
本文关键字:控制 更新时间:2023-10-16
我正在测试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电平。但这不是我看到的。
下面是用于Webrtc_AGC的操作顺序:
- 创建AGC:
WebRtcAgc_Create
- 初始化AGC:
WebRtcAgc_Init
- Set Config:
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/模块/audio_processing/gain_control_impl。Cc供参考。
试试这个:
相关文章:
- 控制允许动态运行c++的并发操作数
- 从控制台中删除最后打印的元素
- 是否可以使用if constexpr删除控制流语句
- 无法在windows控制台中为C++程序提供必要的输入
- 控制到达非空函数clang(-Wreturn-type)的末尾
- 查找 GCD:并非所有控制路径都返回值
- 通过 API 控制 DJI 相机
- 禁止在控制台上记录谷神星
- 是否可以使用一个类来控制 C++ 中另一个类的对象?(阿杜伊诺)
- 如何删除列出的"QGraphicsPathItem"对象以控制进程内存使用情况?
- 我在 C++ 代码中遇到错误警告:控制到达非空函数 [-Wreturn 类型] 的末尾
- C++ Python 模块在 Blender 中崩溃,但在 Python 控制台中不会崩溃
- wx通用目录控制错误"wxTheFileIconsTable was nullptr"
- main() 中的 std::cout 在调试期间不会在调试控制台中打印任何内容
- Cython通过浮点数的最快方式,用于高频控制回路
- 用户控制从 c++ 到 java 脚本的 Webassembly 访问调用
- C ++,如何从控制台中输入的字符串中删除字母?
- 如何从单独的线程控制 SFML 窗口?
- 如何防止 Windows 控制台上的回车键自动滚动
- 我们能否在stm32f中使用硬件定时器控制两个独立的进程