【问题标题】:How to auto-select the decoder filter I want for the OutPin of my DirectShow source filter如何为我的 DirectShow 源过滤器的 OutPin 自动选择我想要的解码器过滤器
【发布时间】:2012-08-26 14:15:04
【问题描述】:

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

它在 GraphEdit 中效果很好,因为我手动连接它们。

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

如何在源过滤器中将解码器过滤器限制为“ffdshow Video Decoder”?来自 CheckMediaType ?我希望“ffdshow Video Decoder”是唯一可以连接到OutPin的过滤器,它也可以在WMP中自动连接。如果未安装此解码器过滤器,则图表将无法工作。

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

【问题讨论】:

    标签: directshow


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2020-04-18
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 2011-12-01
      相关资源
      最近更新 更多