|
1、Filter的实现类
在这里就是CMyFilter类,在这个类里你可以实现自己的逻辑上的功能,包括定义你的filter的特性,给你的filter配备pin接口等。 2 com组件的引出函数, 五个全局函数:
DllMain //dll的入口函数 DllGetClassObject //获得com组件的类厂对象 DllCanUnloadNow //com组件是否可以卸载 DllRegisterServer //注册com组件 DllUnregisterServer //卸载com组件 其中DllGetClassObject 已经由基类完成,你自己只要完成三个函数即可, DllMain,DllRegisterServer,DllUnregisterServer。 3、com组件的类厂对象 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> |
filter开发3
最新推荐文章于 2025-09-20 21:18:44 发布
5127

被折叠的 条评论
为什么被折叠?



