用DirectShow写一个“合并左右声道”的Filter实现小结

来源:互联网 发布:sql server union all 编辑:程序博客网 时间:2024/05/22 06:46

因工作关系,需要完成将两个音频采集设备,同时进来的两路立体声,分别抽取每一路中的一路,合并成一个立体声声源,合并后的左、右声道分别是两路立体声的一路,原理图如下:

像麦克风进来的声音源的数据格式非常简单,左、右声道分别是一个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中的效果如下图:







0 0
原创粉丝点击