|
2450的wavedev结构AC97和IIS音频驱动一处不同的疑惑
[复制链接]
在进行外部声音采样的时候,SetRate和Render2是用来将采样到的数据转换成应用程序指定的采样率而进行的线性插值运算(回放我想应该也是类似的),不过我发现AC97和IIS有所区别
(1)前者的m_CurrT初值是0x200,后者的初值是0x20000
(2)在进行运算的时候,内层循环前者CurrT按0x100递减进行判断,后者按0x10000(也就是1<<16)递减进行判断。
(3)带着这个疑问我看了一下2440BSP中的IIS驱动,m_CurrT的初值是0x200,但是内层循环CurrT递减值是0x8000(1<<15),是采用17.15 format方法计算,在它的注释中说明如果按16.16 format计算CurrT递减值,则因为是有符号数运算可能会溢出,转换后的数据会“cause an bad-sounding click”(原文)
我的问题是:估且不管17.15还是16.16,AC97和IIS传输的应该都是外部codec送过来的预先设置好采样率的数据,为什么在进行采样率转换的时候两种驱动的CurrT值和递减值会不样呢?
|
|