0 c linux audio pcm
我正在研究一种声音转换算法,其中接收一组带符号的短路. 在算法的给定点,它将样本从16位转换为14位,并且它像这样:
int16_t sample = (old_sample + 2) >> 2;
对我来说很清楚,因为我们想要摆脱至少2个重要位,所以需要移位,但+2那里呢?
+2
psm*_*ars 8
向下移动会丢失最不重要的两位.如果你只是移位,那么即使底部的两位都设置了,它也总是向下舍入.如果设置了更大的丢失位,则添加2轮.
(另外值得注意的是,减少位数的更好方法是使用抖动,即在减小样本大小之前添加随机(和非常小)的噪声量;这避免了由于声音是周期性的问题,对于特定频率,舍入通常最终会持续向上或持续向下,从而导致声音中出现明显的失真.维基百科文章链接解释了它比我更好!)
归档时间:
15 年,6 月 前
查看次数:
167 次
最近记录: