环形区块式混音缓冲区

1. 设计思路

由于DirectSound循环播放时,是按区域锁定写入数据方式,并且在播放时不能写入数据的特征,所以设计成区块方式。

2. 概念

2.1 按区块划分管理,虚拟头区块接尾区块构成“环"。“环”是有n个区块构成。
2.2 播放过的区块需要清零,避免混入播放过的声音。
2.3 监督播放位置,每当播放到区块首时,触发一次通知消息,引发对下一块的处理事件。
2.4 由步进、读、写功能组成。

3. 实现

3.1 为了方便专门抽象为一个类,即混音环类。
3.2 区块长度为1秒,共有21个区块,1个区块用于当前混音操作。
3.3 按区块步进,每次步进一个区块。
3.3 按20个区块长度为一个区块读写,因为一个最长采样限制在20秒以内。

4. 导出数据

4.1 混音操作完后,导出到一个字节缓冲区,再有DirectSound写入到发音环形缓冲区。

posted @ 2015-11-16 20:32  hbg200  阅读(193)  评论(0编辑  收藏  举报