我编写了一个DirectShow源过滤器 并且源过滤器的分支连接到 ffdshow视频解码器过滤器。
它在 GraphEdit 中运行良好,因为我手动连接它们。
现在我正试图让它在 Windows Media Player 中运行。问题在于解码器过滤器。
如何在源过滤器中将解码器过滤器限制为“ ffdshow视频解码器”?来自 CheckMediaType ?我想“ ffdshow视频解码器”是唯一可以连接到OutPin的过滤器,它也可以在WMP中自动连接。如果未安装此解码器过滤器,则图表不起作用。
感谢您的帮助,我会在12小时后回来检查答案:)
答案 0 :(得分:2)
在输出引脚类覆盖IPin::Connect
方法中。在那里,您将有正在连接的引脚的IPin
接口。你希望这只是ffdshow视频解码器的输入引脚,所以你在那里做IPin::QueryPinInfo
并获得引脚的过滤器。在那里,您IBaseFilter::GetClassID
并将获得的CLSID
与您知道和期望的那个进行比较。你在不匹配时返回失败。
这是如何仅连接到您想要的过滤器。另一件事是应用程序甚至可能不会尝试您需要的过滤器,在这种情况下,您可能希望实现IStreamBuilder
以建议过滤器在输出引脚上进行连接。