编写自己的DirectShow Filter,除了编写实现功能的代码之外,要使自己的DLL称为一个Filter,还有一个重要的工作需要做,那就是注册信息。DirectShow Filter有两种信息注册,一种是包含Filter的DLL作为COM组件的注册信息,一种是注册Filter种类信息。
当应用程序通过CoCreateInstane创建Filter的时候,通过第一中注册信息定位DLL。
第二种信息注册后,可以通过系统设备枚举器和Filter Mapped定位到Filter,这种信息不是必须注册,当不注册时候,Filter被默认为CLSID_LegacyAmFilterCategory类型。
注册Filter种类信息分一下步骤:
一、声明Filter信息
二、声明类工厂
三、重载DllRegisterServer
四、注销Filter的函数
IFilterMapper2的RegisterFilter接口注册Filter信息,接口的第四个参数决定Filter属于什么种类,如果使用CLSID_VideoCompressorCategory,在GraphEdit中看到的Filter就在Video Capture Source中。