DirectShow:检测相关的过滤器,并添加那些?

时间:2012-11-15 09:02:43

标签: c# .net directshow video-capture directshow.net

目前我正在开发一个DirectShow应用程序,帮助用户配置他们的电视采集卡。此配置稍后将用于另一个程序。

我使用ICaptureGraphBuilder2::RenderStream方法渲染视频和音频。我的图表来源取决于用户选择的设备,但这主要是WDM Video Capture Filter类别中的设备。

这是我的问题。有些设备不起作用,因为它们不仅仅需要一个源过滤器。例如,我有一个网络摄像头,它有一个单独的音频过滤器。另一个例子,我有一个电视调谐卡,它有自己的编码器/复用器。

由于我的应用程序应该与大多数捕获设备一起使用,是否有通用方法来检测源过滤器旁边是否有图形所需的其他过滤器工作?

我可以枚举所有过滤器并检查它们的名称是否彼此相似,但名称不可信任......

1 个答案:

答案 0 :(得分:0)

DirectShow作为一个框架基本上是一套灵活的DIY过滤器。你有一组分散的,他们(一些)也被分类,枚举一个类别,你可以做一些假设,包括的功能集。

特别是,视频和音频(以及其他媒体类型)源之间没有直接对应关系。您可以做的是提示用户选择设备(例如作为应用程序配置的一部分)并假设它们是相关的并发送同步内容(如果适用)。

另一个常见任务是连接一个您可能有兴趣使用电视调谐器的横杆。 Capture Graph Builder对象中有一个帮助器,您可以利用它。请参阅ICaptureGraphBuilder2::FindInterface中的“支持过滤器”备注。