我可以指望能够在过滤器图形之间共享DirectShow捕获过滤器吗?

时间:2011-11-20 07:51:39

标签: filter directshow audio-capture

我今天用一个DirectShow图表进行了测试,我已经组装了一个在图表顶部分配给我的VOIP手机的Capture Filter。应用程序从捕获过滤器获取音频并写入WAV文件,作为过滤器图形操作的一部分。出于好奇,我运行了两个程序副本,完全期待其中一个人抱怨错误,抱怨捕获设备“正在使用中”。令我惊讶的是,该程序的两个副本都运行良好,每个都创建了自己的录制音频的WAV文件。两个文件中的音频都是平滑的,没有问题,并且在包含的音频数据方面彼此是双胞胎。

我可以依靠所有DirectShow捕获过滤器来展示在多个过滤器图形之间共享的能力吗?或者每个设备/驱动程序都不同?

1 个答案:

答案 0 :(得分:2)

如果过滤器实例内部不共享任何独占访问资源(例如硬件,特定TCP端口等),则可以在进程内或多个进程中自由复制它们。对于特定过滤器而言,没有任何含义仅在整个系统中的单个实例中有效。

重要的例子包括:

  • USB视频捕获:视频捕获设备通常仅供一个应用程序使用,因此只要它处于活动状态就会被锁定,其他任何应用程序或过滤器实例都无法从中捕获

    < / LI>
  • 音频播放:用于音频的流行用户模式API是实际播放实现之上的一层,内部驱动程序混合来自多个启用音频的应用程序的音频;因此,当您播放音频时,不会涉及独占锁定,因为应用程序之间共享实际设备,并且运行的代码可以透明地组合来自应用程序的音频。