DirectShow样本过滤器:如何使用?

时间:2016-09-14 14:09:51

标签: c++ winapi com directshow

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

看起来像IFilterMapper2-> RegisterFilter可能会这样做,但是(恕我直言)它是一个怪物而且文档是极简主义的。另外,我看不到将DLL指定为InProcServer,我认为这是一个要求。

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

我相信答案必须简单,但我只是没有看到。任何帮助将不胜感激,特别是代码snipplets(学术论文不是非常有用)。此外,最好的解决方案应该是直接的C ++(没有第三方软件包或.NET的东西)。

提前感谢,
-John

1 个答案:

答案 0 :(得分:2)

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

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

在大多数情况下,即使不需要以这种方式发生,此注册也是通用COM注册的一部分,由regsvr32或等效调用完成。对于它发布的过滤器,DLL注册码通常会IFilterMapper2::RegisterFilter

在转储示例中,there is a AMovieDllRegisterServer2 call处理它,在同一文件中g_Templates的帮助下更高。

注册过滤器后,应用程序可以枚举它。您想要尝试的第一件事是SDK GraphEdit工具或其更新,更强大的开源替换GraphStudioNext

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

请参阅MSDN上的Using GraphEdit