打印

有关ADPCM算法的两张表

[复制链接]
2537|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
MaLaTang|  楼主 | 2010-7-12 10:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在网上看到很多ADPCM的C语言算法,用的都是那两张表:
int index_adjust[8] = {-1,-1,-1,-1,2,4,6,8};

int step_table[89] = { 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143, 157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767 };

想问一下,这两张表是怎么得出来的?多谢!

相关帖子

沙发
ljm810010| | 2010-7-12 13:28 | 只看该作者
int step_table[89]的第9个数(16)为原点,
向右一个,16乘以1.1的一次方,舍弃小数,得17;
向右两个,16乘以1.1的两次方,舍弃小数,得19;
向右三个,16乘以1.1的三次方,舍弃小数,得21;



向右79个,16乘以1.1的79次方,舍弃小数,得29794;

使用特权

评论回复
板凳
MaLaTang|  楼主 | 2010-7-12 14:03 | 只看该作者
这是基于一个什么规律呢?还有那个int index_adjust[8] = {-1,-1,-1,-1,2,4,6,8}; 又是怎么回事?还望赐教:D

使用特权

评论回复
地板
ljm810010| | 2010-7-12 14:37 | 只看该作者
很简单的规律嘛,就是等比数列,相当于用指数形式表示信号的幅度。
至于int index_adjust[8] = {-1,-1,-1,-1,2,4,6,8};
知道ADPCM原理应该就可分析到,信号动态由小变大,快速适应,反之,动态由大变小,缓慢释放。

使用特权

评论回复
5
MaLaTang|  楼主 | 2010-7-12 15:17 | 只看该作者
我是想知道1.1这个数如何确定?为什么不是1.2或1.3?
对这方面没什么基础,见笑了,呵呵。。。

使用特权

评论回复
6
ljm810010| | 2010-7-12 16:46 | 只看该作者
分辨率与动态跟踪速度之间的制衡关系确定,比值大动态跟踪快,但分辨率低;比值小动态跟踪慢,但分辨率高。

使用特权

评论回复
7
767598314| | 2013-5-29 15:37 | 只看该作者
我用adpcm压缩后解压出来的数怎么老是有负数呢?请指教!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

71

帖子

0

粉丝