用DirectShow写一个“合并左右声道”的Filter实现小结
2016-09-08 14:42
323 查看
因工作关系,需要完成将两个音频采集设备,同时进来的两路立体声,分别抽取每一路中的一路,合并成一个立体声声源,合并后的左、右声道分别是两路立体声的一路,原理图如下:
像麦克风进来的声音源的数据格式非常简单,左、右声道分别是一个16位的字,如“AA AA BB BB AA AA BB BB ....”(AA是一个字节,AA AA就是左声道的“字”数据)。假设另一个麦克风输入进来的数据如“XX XX YY YY”,那么声道合并后的新的声音数据:“AA AA YY YY”(左声道是第一个麦克风,右声道是第二个麦克风)。
选择陆其明编写的《DirectShow实务精选》第四章“视频抠像”为开发蓝本。确定Filter的父类为CTransInplaceFilter,这是一个“就地”处理的Filter,在函数TransForm中完成上述算法的合并。这个类已经有了两个pin,分别是一个输入Pin和一个输出Pin,还需要自己添加一个输入Pin来完成两路音频输入的功能。这一段见书中P321页,已经说的非常清楚了。
最终完成后的Filter在GraphStudioNext中的效果如下图:
像麦克风进来的声音源的数据格式非常简单,左、右声道分别是一个16位的字,如“AA AA BB BB AA AA BB BB ....”(AA是一个字节,AA AA就是左声道的“字”数据)。假设另一个麦克风输入进来的数据如“XX XX YY YY”,那么声道合并后的新的声音数据:“AA AA YY YY”(左声道是第一个麦克风,右声道是第二个麦克风)。
选择陆其明编写的《DirectShow实务精选》第四章“视频抠像”为开发蓝本。确定Filter的父类为CTransInplaceFilter,这是一个“就地”处理的Filter,在函数TransForm中完成上述算法的合并。这个类已经有了两个pin,分别是一个输入Pin和一个输出Pin,还需要自己添加一个输入Pin来完成两路音频输入的功能。这一段见书中P321页,已经说的非常清楚了。
最终完成后的Filter在GraphStudioNext中的效果如下图:
相关文章推荐
- 一个开源的Directshow RTSP Filter:实现了一个简单的RTSP 服务器
- 用API函数实现切换VCD的左右声道
- 做了一个directshow的filter,把RGB视频流变成黑白的
- [转]关天WINCE的AC97音频驱动实现左右声道交换的方法
- jQuery实现一个图片左右滚动
- 任务三:做一个directshow的filter,把RGB视频流变成黑白的
- MSSQL:存储过程-实现两个表中取出头两行,然后合并到一个表中
- 一个PDF合并操作实现类,利用iTextSharp控件实现
- 做了一个directshow的filter,把RGB视频流变成黑白的 .
- K个有序链表共N个结点在O(NlgK)时间合并为一个新的有序链表实现文件C语言
- 用两个栈实现一个队列——我作为面试官的小结
- 最近由于要用到分隔条,找到了一篇讲原理的, 实现了一个。可以双击缩到左边,可以左右拖动
- 同一个表单 根据要求递交到不同页面的实现方法小结
- 同一个表单 根据要求递交到不同页面的实现方法小结
- 用两个栈实现一个队列——我作为面试官的小结
- 一个视频聊天软件,目前已经实现远程视频语音通讯(DirectShow+UDP)
- 一个上下左右都居中的非table的纯CSS实现代码
- 关天WINCE的AC97音频驱动实现左右声道交换的方法概述(转)
- 做了一个directshow的filter,把RGB视频流变成黑白的
- 用两个栈实现一个队列——我作为面试官的小结