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

Rob*_*ler 2 delphi directshow filter dspack

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

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

Rom*_* R. 5

过滤器不必放入库(DLL),它们甚至不必是注册的COM对象,没有.如上所述,实现此目的的唯一原因是通过CoCreateInstance和/或通过枚举DirectShow类别使应用程序可用于应用程序.

直接放入您的应用程序,它必须实现IBaseFilter,您将IFilterGraph::AddFilter进入图表.私有过滤器的一个优点是,您不需要通过COM接口实现应用程序和过滤器之间的通信,您可以使用本机/直接指针.

另请参阅Geraint的帖子使用无注册过滤器.