环形区块式混音缓冲区
2015-11-16 20:32
162 查看
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写入到发音环形缓冲区。
由于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写入到发音环形缓冲区。
相关文章推荐
- 关于去耦电容和旁路电容
- Android 学习笔记之AndBase框架学习(七) SlidingMenu滑动菜单的实现
- 关于二叉树的问题1-已知前序,中序求后序遍历
- 【LeetCode OJ 007】Reverse Integer
- LeetCode H-Index II 数组+二分
- 关于weka文件不能保存的问题
- 数字电路中上拉电阻和下拉电阻作用和选用选择
- ProgressBar样式的定义
- python的变量传递
- 关于xcode7升级以后,无法archive,或者archive后xcode闪退的问题处理方案
- 【黑马程序员】方法与数组
- HDU 5524 Subtrees
- 单链表的程序实现
- 配置eclipse开发floodlight环境
- 图像复原
- Android打包安装过程
- 发声控制
- bootstrap学习1
- salt-master IPC文件的一次报错
- ubuntu 14.04 安装mysql