2012-11-15 135 views
1

目前我正在开发一个DirectShow应用程序,帮助用户配置他们的电视采集卡。此配置稍后将在另一个程序中使用。DirectShow:检测相关过滤器并添加这些过滤器?

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

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

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

我可以通过所有过滤器列举并检查他们的名字是彼此相似,但名字不能被信任......

回答

0

的DirectShow作为一个框架基本上是一个灵活的DIY设置的过滤器。你有它们的分散集合,并且它们(一些)也被分类,在列举一个类别时,你可以对包含的特征集做出一些假设。

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

另一个常见任务是连接一个交叉开关,您可能有兴趣与电视调谐器一起工作。 Capture Graph Builder对象中有一个帮助器,您可以利用它。请参阅ICaptureGraphBuilder2::FindInterface中的“Supporting Filters”备注。

+0

提示用户输入音频过滤器听起来像是唯一的选择。顺便说一下,'ICaptureGraphBuilder2 :: RenderStream'也会自动添加一些过滤器,例如交叉开关。 –