0

我写了一个 DirectShow 源过滤器,源过滤器的输出连接到ffdshow Video Decoder Filter

它在GraphEdit中运行良好,因为我手动连接它们。

现在我正试图让它在Windows Media Player中工作。问题在于解码器过滤器。

如何在我的源过滤器中将解码器过滤器限制为“ ffdshow Video Decoder ”?从检查媒体类型?我希望“ ffdshow Video Decoder ”是唯一可以连接到OutPin的过滤器,它也可以在WMP中自动连接。如果未安装此解码器过滤器,则该图将不起作用。

感谢您的帮助,我会在 12 小时后回来检查答案:)

4

1 回答 1

2

在您的输出引脚类覆盖IPin::Connect方法中。在那里,您将拥有IPin正在连接的引脚的接口。您希望这只是 ffdshow 视频解码器的输入引脚,因此您可以在IPin::QueryPinInfo那里获取引脚的过滤器。在那里,您可以IBaseFilter::GetClassID将获得CLSID的内容与您知道和期望的内容进行比较。您在不匹配时返回失败。

这是仅连接到您想要的过滤器的方法。另一件事是应用程序甚至可能不会尝试您需要的过滤器,在这种情况下,您可能希望实施IStreamBuilder可能建议过滤器连接到输出引脚。

于 2012-08-26T14:29:25.593 回答