创建filter笔记

 
1. 创建filter,可以从ms提供的filter类库中继承,filter类库中的基类为CBaseFilter。
2. 创建pin,可以继承,基类为CBasePin,也可以从CBasePin的子类继承。
3. 连接pin,如果想让两个pin可以连接,那么就要符合一定的规范,主要有3个:
a)         传输机制要相同,可以为“推”模式的,也可以为“拉”模式的,但outpin和inpin的模式要一样。
b)        媒体类型要相同。
c)        分配器,Sample缓存的分配约定,要约定好哪个pin提供分配器,分配的缓存的大小、数量以及其他的属性。
4. 传输和处理数据
5. 支持com
 
使filter自动注册
列出filter的key
a)         注册com服务:
HKEY_CLASSES_ROOT
    CLSID
        Filter CLSID 
            REG_SZ: (Default) = Friendly name
 
            InprocServer32
                REG_SZ: (Default) = File name of the DLL
                REG_SZ: ThreadingModel = Both
b)      注册filter目录
HKEY_CLASSES_ROOT
    CLSID
        Category
            Instance
                Filter CLSID
                    REG_SZ: CLSID = Filter CLSID
                    REG_BINARY: FilterData = Filter information
                    REG_SZ: FriendlyName = Friendly name
1.声明filter信息
Structure
Description
Describes a filter.
Describes a pin.
Describes a media type.
 
    AMOVIESETUP_FILTER中包含有一个AMOVIESETUP_PIN数组指针,每个AMOVIESETUP_PIN中又包含一个AMOVIESETUP_MEDIATYPE数组指针。
    可以使用IFilterMapper2接口定位一个filter。
2.声明Factory Template
     在dll中声明一个CFactoryTemplate对象的全局数组,其中的每个对象对应一个filter或者一个com组件,这个数组的名字必须是g_Templates。
3.实现DllRegisterServer
    包含com组件的dll必须包含这个函数,这个函数在filter被注册的时候调用。这是这个函数的一个最小实现:
STDAPI DllRegisterServer(void)
{
    return AMovieDllRegisterServer2(TRUE);
}
    AMovieDllRegisterServer2()函数为g_Templates数组中的每个组件创建注册入口。
4.注销filter
    在DllUnregisterServer()函数中实现filter的注销,在此函数中调用AMovieDllRegisterServer2()函数并传传入FALSE参数就可以了。
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值