delphi - 如何在 EXE 中直接嵌入 DirectShow Push Source 过滤器?

标签 delphi filter directshow dspack

我有一个 Delphi 6 程序,它通过套接字从外部程序接收音频。现在,我想将该音频提供给我创建的 DirectShow 过滤器图表,该图表将该音频路由到 PC 上的不同输出过滤器。我正在使用 DSPACK 进行 DirectShow 过滤图工作。我将使用展示如何创建推送源过滤器的 DSPACK 示例之一作为我的起点。

是否可以将 DirectShow 过滤器直接嵌入到我的主 EXE 中,或者我是否必须创建外部 DLL 或 AX 文件并在其上运行 regsvr32?我想避免创建外部模块,否则我必须在它和我的主程序之间创建一个参数和数据传递桥,我宁愿消除这项工作。我想知道是否有一种方法可以简单地将推送源过滤器代码包含在我的主程序中,并巧妙地 Windows 将其用作 DirectShow 过滤器(如果可能的话)。

最佳答案

过滤器不必放入库 (DLL) 中,甚至不必是注册的 COM 对象,不是。如前所述,这样做的唯一原因是通过 CoCreateInstance 和/或通过 DirectShow 类别的枚举使过滤器可供应用程序使用。

直接放入您的应用程序中,它必须实现 IBaseFilter 并且您将 IFilterGraph::AddFilter 将其添加到图表中。私有(private)过滤器的一个优点是,您不需要通过 COM 接口(interface)实现应用程序和过滤器之间的通信,并且可以使用 native /直接指针。

另请参阅 Geraint 的帖子 Using Filters Without Registration .

关于delphi - 如何在 EXE 中直接嵌入 DirectShow Push Source 过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7708784/

相关文章:

delphi - 有没有办法找到谁触发了 TADOConnection 的 OnExecuteComplete 事件?

delphi - TAggregateField.IsNull 和 (TAggregateField.Value = Null) 之间有什么区别

extjs - Gridpanel 在分页时丢失过滤器

python - '!<' 过滤 Pandas 的语法错误

javascript - 添加分页后 AngularJS 中的自定义过滤器

visual-c++ - 数字电视设备选择需要哪些用户输入?

delphi - SpTBX : draw on my canvas X icon like on SpTbx panel

delphi - 如何在 Delphi 2010 中将 TypeLib 导入为 safecall 与 stdcall

webcam - DirectShow - 在观看时捕获网络摄像头?

audio - 在AVI混合时在AVISTREAMHEADER结构中设置deScale和日期值