我已经编写了一个DirectShow源过滤器和源过滤器的外引脚连接到视频解码器过滤器。
它在GraphEdit中工作得很好,因为我手动连接它们。
现在,我正在努力使它在中工作。问题在于译码器滤波器。
如何将解码器过滤器限制为"ffdshow视频解码器“?从CheckMediaType?我想要"ffdshow视频解码器“是唯一的过滤器可以连接到OutPin,它也可以自动连接到WMP。如果未安装此解码器筛选器,则图表不应工作。
谢谢您的帮助,12小时后我会回来查看答案:)
发布于 2012-08-26 14:29:25
在输出引脚类中重写IPin::Connect方法。在那里,您将有您正在连接的引脚的IPin接口。您希望这只是视频解码器的输入引脚,所以您在那里做IPin::QueryPinInfo,并获得引脚的过滤器。在这里,您可以做IBaseFilter::GetClassID,并将获得的CLSID与您所知道和期望的CLSID进行比较。如果不匹配,则返回失败。
这是如何只连接到您想要的过滤器。另一件事是,应用程序甚至可能不尝试所需的筛选器,在这种情况下,您可能希望实现IStreamBuilder来建议输出引脚上连接的筛选器。
https://stackoverflow.com/questions/12130821
复制相似问题