我想用语音数据增加缓冲区的音量。关键是我正在使用 DirectSound,并且我有一个主缓冲区和一个辅助缓冲区 - 所有流混合都是手动完成的。在语音聊天中,所有参与者都可以有独立的音量级别。我将每个流数据乘以一个值(增益)并将其相加到一个缓冲区。一切正常,但是当我尝试将数据乘以大于 1.0f 的值时 - 我听到一些剪辑或什么。
我试过使用 Audacity 效果压缩器,但这无助于减少奇怪的噪音。
也许我应该以其他方式修改增益?或者只是使用另一种后处理算法?
更新:哇,我刚刚发现了有趣的事情!我在增加音量之前和之后都转储了音频。
这是图片
对不起质量 - 我认为这就是声音应该出现的方式(我自己画了红线)。确实看起来值超出了示例数据类型。但我不明白为什么?我的样本缓冲区是 BYTE,但我只能通过短指针访问它。它已签名,但即使 *ptr 约为 15-20 千,也会发生剪裁。