在DirectShow中,微软和一些第三方开发商提供了不少不错的Filter,一般情况下,要使用这些Filter,就必须创建基于DirectShow框架的应用程序。对于一些不是基于DirectShow框架的应用程序,如何做才能使用这些Filter呢?一个比较简单的办法就是把Filter封装在普通的DLL中。
做法很简单:1.在DLL中创建一个DirectShow Graph,把要封装的Filter加入Graph中。2.创建输入Filter和输出Filter(输入输出Filter可以是非独立的Filter,只实现必要的接口即可)并加入Graph中,输入Filter提供数据输入接口,输出Filter提供数据输出接口。3.连接Filter,即:输入Filter + 要封装的Filter + 输出Filter 。4.启动Graph,从输入Filter输入数据,从输出Filter获取输出数据。
具体做法可参考示例程序,示例代码是对H264 Decoder Filter的一个简单封装。