DirectShow示例过滤器:如何使用

DirectShow Sample Filters: How to Use?

本文关键字:何使用 过滤器 DirectShow      更新时间:2023-10-16

我正在尝试编写一个自定义DS渲染过滤器。我决定从SDK提供的示例过滤器开始,即"Dump"。我可以成功地构建DUMP.DLL和相关文件,但我不知道如何在我的应用程序中使用它。

它看起来像IFilterMapper2->RegisterFilter可能会做到这一点,但(IMHO)它是一个怪物和文档是极简主义。此外,我没有看到任何地方指定DLL作为InProcServer,我认为这将是一个要求。

我也尝试过regsvr32 DUMP.DLL,但我不确定这是否有帮助。

我相信答案一定很简单,但我就是看不出来。任何帮助都将非常感谢,特别是代码片段(学术论述不是很有帮助)。此外,最好的解决方案应该是直接使用c++(没有第三方包或。net之类的东西)。

提前感谢,
镜头转

过滤器不是单独使用的——它们是管道的一部分,它们与其他过滤器和过滤器图管理器通信。

过滤器确实注册在IFilterMapper2::RegisterFilter调用中。请注意,由于这涉及到在HKLM下写入注册表,因此必须使用本地管理员的提升权限进行注册。

在大多数情况下,即使它不需要完全这样发生,这个注册是通用COM注册的一部分,由regsvr32或等效调用完成。DLL注册码通常为它发布的过滤器执行IFilterMapper2::RegisterFilter

在Dump示例中,有一个AMovieDllRegisterServer2调用来处理它,在同一文件中的g_Templates的帮助下。

一旦注册了过滤器,应用程序就可以枚举它。首先要尝试的是SDK graphhedit工具或其更新且更强大的开源替代品GraphStudioNext。

Ctrl+ F打开过滤器列表,您可以在其中找到您的过滤器并将其插入正在交互式构建的过滤器图中。然后连接tpo其他过滤器并运行。

参见在MSDN上使用graphhedit