写一个Filter至少需要那些东西。[转贴]
2005-07-27 10:58
489 查看
写一个Filter至少需要那些东西。
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对象的,用的模板类定义了一个全局的模板类对象数组,一般格式如下
4、关于你自己定义的Filter以及Pin的信息
这些是一个全局的结构变量,用于描述你的Filter和你定义的pin,在注册Filter的时候会用到,如下
AMOVIESETUP_FILTER 描述一个Filter
AMOVIESETUP_PIN 描述pin
AMOVIESETUP_MEDIATYPE 描述数据类型
下面的代码描述了一个Filter带有一个output PIN
最后如果你还是调试通不过,看看你是否包含了下面的头文件
[文章信息] | |
作者: | 智慧的鱼 |
时间: | 2004-12-20 |
出处: | 天极网 |
在这里就是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]); |
这些是一个全局的结构变量,用于描述你的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 |
相关文章推荐
- 一个系统分析师至少需要知道的东西
- 成为一个高级Java架构师所需要具备那些技能呢?
- 做一个分布式、跨语言、跨平台、敏捷 需要那些技术做支撑?
- 当需要为一个既存的类中增加一个数据成员的时候,你会想到那些问题?
- 有懂discuz的吗?我需要在我自己的系统注册一个账号的时候,也把当前注册的账号放在discuz的用户里面。应该怎么做呀。需要discuz和java的接口吗?需要更改哪些东西。
- 在面试一个游戏编程职位前,你需要知道的东西
- 在面试一个游戏编程职位前,你需要知道的东西
- 一个IT人士的个人经历, 给那些迷失方向的朋友(转贴)
- 16、正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b, 需要计算出Q中的前几项
- 【解答】一个电动模型,每一组电池能让其行驶8分钟,一个充电器能同时给两组电池充电,一组充满需要15分钟,至少准备(?)组电池,(?)个充电器,可以让模型每次行驶完可以立即换电池行驶不用等待。
- php需要学习那些东西
- 建立一个能运行的spring-mvc程序,至少需要哪些配置以及jar包
- 在面试一个游戏编程职位前,你需要知道的东西
- 一个APP应用开发技术负责人需要了解的东西
- 建一个生物模型需要那些条件
- 一个裸的Ubuntu系统,搭建LAMP需要配置这些东西
- 《转》架设一个BLOG需要整合多少东西?
- 一个完整的移动互联网公司需要包涵那些人物
- 面试题:GPS定位一个点,至少需要几个卫星?
- 当一个DBA离职时,如何清除掉数据库里属于他的那些“东西” (job所有者更新)