【发布时间】:2012-12-06 12:24:08
【问题描述】:
我有来自 ffmpeg 的样本,通常是 16 位样本(短类型),我使用了带有 dbGain 的 iir 带通滤波器,如 here 所述,过滤后我有时会出现短类型溢出和结果当计算的样本值从 32767/-32767 流出时,这是一些噪音,有什么方法可以逃避音频 pcm 样本剪辑。可能存在任何方法吗?
我已经用谷歌搜索但没有找到任何有效的例子?
更新
当我将传递函数计算结果转换为整数并检查溢出时,仍然会出现噪音::
int result = A1 * ((int) Rx) + A2 * ((int) Rxx) + A3 * ((int) Rxxx)
- B1 * ((int) Ryy) - B2 * ((int) Ryyy);
if (result > 32767)
result = 32767;
if (result < -32700)
result = -32700;
y = (short) result;
【问题讨论】:
-
如果您的过滤器有正增益,饱和是您要承担的风险。你能更好地解释你的具体问题吗?
-
您具体想了解什么?
-
好吧,如果你正在应用增益,你为什么不期望它有时会溢出/饱和?
-
我怎么能期望溢出/饱和?
-
你的过滤器实现应该处理下溢/溢出,你可以“剪辑”,“地板”“饱和”最终结果。你应该为“中间结果”使用更高的精度(32/64位) .