DirectShow示例过滤器:如何使用
DirectShow Sample Filters: How to Use?
我正在尝试编写一个自定义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
- C++对开销较少的容器使用多个过滤器
- 使用 Vivek 的 Vcam / 捕获源过滤器构建/链接错误
- 如何使用C++获取/设置OBS中的垂直滚动过滤器属性?
- 使用指针使用过滤器重写字符数组
- 如何使用GNU将过滤器输出从目录中列表
- 如何使用调色板生成和调色板使用过滤器与 FFmpeg 在C++
- 如何使用 Win API 获取文件夹中的文件列表(带过滤器)
- 未定义的参考,差异使用 CUDA 的 OpenCV 中的双边过滤器
- 使用运算符<<与增强 iostreams 压缩过滤器
- 我如何使用 juce 的文件过滤器描述我想要的文件过滤器?
- 使用OpenCV的平均过滤器
- 使用夹具时的升压单元测试过滤器
- GCC 的<实验/范围>过滤器视图不能使用无限范围 iota() 进行编译
- 如何使用Visual C 5.0构建直接筛选过滤器
- 使用OpenMPv.2.0并行化过滤器迭代器
- 使用过滤器增强日志记录
- 使用过滤器c++获取OLE属性
- 如何使用c++过滤器
- Visual Studio&C++:使用过滤器作为目录
- 为什么GCC -O3在std::deque上使用过滤器迭代器会导致std::距离无限?