有关ADPCM算法的两张表

[复制链接]
3378|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原理应该就可分析到,信号动态由小变大,快速适应,反之,动态由大变小,缓慢释放。
 楼主| MaLaTang 发表于 2010-7-12 15:17 | 显示全部楼层
我是想知道1.1这个数如何确定?为什么不是1.2或1.3?
对这方面没什么基础,见笑了,呵呵。。。
ljm810010 发表于 2010-7-12 16:46 | 显示全部楼层
分辨率与动态跟踪速度之间的制衡关系确定,比值大动态跟踪快,但分辨率低;比值小动态跟踪慢,但分辨率高。
767598314 发表于 2013-5-29 15:37 | 显示全部楼层
我用adpcm压缩后解压出来的数怎么老是有负数呢?请指教!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

71

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部