wince下的音频驱动关于混音问题

i_am_j 2010-06-23 05:20:23
在做项目时,发现在WinCE下面,不管是播放什么采样率的音频文件,I2s都工作一个采样率下(比如不管播放44.1K还是8k的的音频文件,I2S始终都是工作在44.1K)。也就是说其实我的平台的驱动对于codec的采样率是固定的。对于这个我很疑惑。后来在网上看到一个帖子,

而声音的驱动要负责完成声音采集的混音和声音放音的混音。其基本原理如下:
1) 将声音设备设定在一个频率下,比如:44.1KHZ,16BIT
2) 驱动允许打开多个音频流,每个音频流可以允许不同的采样率,比如: (A:8KHZ,8BIT B: 44.1KHZ,16BIT)
3) 放音的混音在最后的数据准备阶段(即放入到DMA前),用合成算法将所有的流进行数学运算,得出声音设备采样频率下(44.1KHZ,16BIT)的数据。数据通过DMA发送到CODEC中。
4) 录音的混音操作,都是从声音设备采样频率下(44.1KHZ,16BIT)下得到采样的基本数据,然后通过数学运算分配到不同的频率下的音频流上。
5) 要注意的就是合成的时候要注意数据不溢出;分开的时候要注意数据速率的匹配和数据宽度的匹配。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xxxluozhen/archive/2010/04/14/5486220.aspx

哪位能帮忙解下惑,”用合成算法将所有的流进行数学运算“是用的什么样的算法(可别自己猜哦)?在驱动的哪里可以找到呢?
谢谢!
...全文
119 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
unsway123 2010-07-02
  • 打赏
  • 举报
回复
这个是wavedev2里面我有看到算法的代码,但没有去研究感觉有点难懂,就是在stream.cpp里面的吧,就是那一堆的render2函数,
i_am_j 2010-06-25
  • 打赏
  • 举报
回复
顶顶更健康

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧