filter开发3

1、Filter的实现类
   在这里就是CMyFilter类,在这个类里你可以实现自己的逻辑上的功能,包括定义你的filter的特性,给你的filter配备pin接口等。

2 com组件的引出函数, 五个全局函数:

 

DllMain //dll的入口函数

DllGetClassObject //获得com组件的类厂对象

DllCanUnloadNow //com组件是否可以卸载 

DllRegisterServer //注册com组件 

DllUnregisterServer //卸载com组件

其中DllGetClassObject 已经由基类完成,你自己只要完成三个函数即可,

DllMain,DllRegisterServer,DllUnregisterServer。

3、com组件的类厂对象

   类厂对象是用来生成Filter对象的,用的模板类定义了一个全局的模板类对象数组,一般格式如下:

CFactoryTemplate g_Templates[1] = 

{

    { 

      L"my filter",                // Name

      &CLSID_MYFilter,             // CLSID

      CMyFilter::CreateInstance,   // Method to create an instance of MyComponent

      NULL,                           // Initialization function

      &sudInfTee                            // Set-up information (for filters)

    }

};

int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]);  
4、关于你自己定义的Filter以及Pin的信息

   这些是一个全局的结构变量,用于描述你的Filter和你定义的pin,在注册Filter的时候会用到,如下:
AMOVIESETUP_FILTER 描述一个Filter

AMOVIESETUP_PIN 描述pin

AMOVIESETUP_MEDIATYPE 描述数据类型

下面的代码描述了一个Filter带有一个output PIN:

static const WCHAR g_wszName[] = L"Some Filter";

AMOVIESETUP_MEDIATYPE sudMediaTypes[] = {

    { &MEDIATYPE_Video, &MEDIASUBTYPE_RGB24 },

    { &MEDIATYPE_Video, &MEDIASUBTYPE_RGB32 },

};

AMOVIESETUP_PIN sudOutputPin = {

    L"",            // Obsolete, not used.

    FALSE,          // Is this pin rendered?

    TRUE,           // Is it an output pin?

    FALSE,          // Can the filter create zero instances?

    FALSE,          // Does the filter create multiple instances?

    &GUID_NULL,     // Obsolete.

    NULL,           // Obsolete.

    2,              // Number of media types.

    sudMediaTypes   // Pointer to media types.

};



AMOVIESETUP_FILTER sudFilterReg = {

    &CLSID_SomeFilter,      // Filter CLSID.

    g_wszName,              // Filter name.

    MERIT_NORMAL,           // Merit.

    1,                      // Number of pin types.

    &sudOutputPin           // Pointer to pin information.

};
最后如果你还是调试通不过,看看你是否包含了下面的头文件:
#include <streams.h> 

#include <initguid.h>

#include <tchar.h>

#include <stdio.h>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值