【问题标题】:How to make directShow to Create graph automatically with available filters如何使用可用的过滤器使 directShow 自动创建图形
【发布时间】:2016-05-08 17:52:10
【问题描述】:

我想在我的应用程序中使用 Medialooks 多源过滤器,这在 HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\ 但我仍然必须使用 CLS_IDAddFilter 函数手动添加此过滤器。

有什么方法可以让 Dshow 的 Renderfile 函数通过枚举注册表中的过滤器来自动创建图形

签入Grphedt工具,但如果我手动插入并连接过滤器,我可以正常播放视频。否则它不会通过构建图形自动呈现

【问题讨论】:

    标签: windows com directx directshow source-filter


    【解决方案1】:

    能够连接过滤器并获得您感兴趣的拓扑是一回事,而在Intelligent Connect 期间发生这种连接是另一回事。对于 Intelligent Connect 和RenderFile,感兴趣的过滤器必须明显注册,然后它们具有准确的 DirectShow 注册详细信息:优点、媒体类型。过滤器经常缺少这种注册(有时他们会“过度注册”自己,以便在明显不合适时被拾取)。

    即使您可以使用备用注册详细信息自行重新注册过滤器(请参阅IFilterMapper2::RegisterFilter),但您通常不会这样做。准确注册是过滤器开发商的事。对您来说更好的选择是使用 AddFilter 调用来构建图形,您可以在其中很好地控制图形构建。或者,如果 RenderFile 首先失败,您可能希望将其作为备用构造方法。

    【讨论】:

    • 如何确认过滤器是否正确注册?
    • 您可以使用 GraphEdit、GraphStudioNext 或类似工具查看注册。然后对比Guidelines for Registering Filters判断是否合适。它是否符合意图以及开发人员应该做什么,或者看起来像错误或不准确。
    • 我发现 grphedit 工具的优点或过滤器设置为 MERIT_DO_NOT_USE(0x002000)。这是一个源过滤器。我可以自己更改过滤器的优点吗?
    • IFilterMapper2::RegisterFilter 上面已经提到过,或者交互使用GraphStudioNext
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 2012-05-08
    相关资源
    最近更新 更多