代码之家  ›  专栏  ›  技术社区  ›  DontPanic

DirectShow示例过滤器:如何使用?

  •  0
  • DontPanic  · 技术社区  · 8 年前

    我正在尝试编写自定义DS呈现过滤器。我决定从SDK提供的示例过滤器开始,即“转储”。我可以成功构建DUMP。DLL和相关文件,但我不知道如何在我的应用程序中使用它。

    它看起来像IFilterMapper2->RegisterFilter可能会这样做,但(IMHO)这是一个怪物,文档是极简主义的。此外,我看不到任何地方可以将DLL指定为InProcServer,我认为这是一个必要条件。

    我还尝试了regsvr32 DUMP。DLL,但我不确定这是否有帮助。

    我相信答案一定很简单,但我就是看不出来。任何帮助都将不胜感激,尤其是代码片段(学术讨论没有太大帮助)。此外,最好的解决方案应该是直接的C++(没有第三方软件包或.NET内容)。

    提前感谢,
    -约翰

    1 回复  |  直到 8 年前
        1
  •  2
  •   Roman Ryltsov    8 年前

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

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

    在大多数情况下,即使不需要完全以这种方式进行,此注册也是通用COM注册的一部分,由regsvr32或等效调用完成。DLL注册代码通常会 IFilterMapper2::寄存器筛选器

    在Dump示例中, there is a AMovieDllRegisterServer2 call g_Templates 在同一个文件中更高。

    注册筛选器后,应用程序可以对其进行枚举。首先要尝试的是SDK GraphEdit工具或其更新且功能更强大的开源替代品 GraphStudioNext .

    + F

    看见 Using GraphEdit 在MSDN上。