写一个Filter至少需要那些东西。
[文章信息] |
|
作者: |
智慧的鱼 |
时间: |
2004-12-20 |
出处: |
天极网 |
|
|
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 |
分享到:
相关推荐
Servlet Filter 是Java Servlet API中的一个重要组件,主要用于在Servlet处理请求之前或之后进行拦截处理,例如权限检查、日志记录、内容转换等。进行Servlet Filter的单元测试是确保Filter功能正确性和健壮性的重要...
创建一个自定义的Filter空工程是开发DirectShow应用的第一步,这允许我们根据需求定制过滤器功能。以下是一份详细的步骤指南,帮助你开始这个过程。 **一、理解DirectShow Filter** DirectShow是Microsoft提供的一...
### 如何制作一个检测是否已经登录的Filter 在B/S架构的开发中,频繁地在各个页面中重复相同的代码逻辑,如检查用户是否已登录,不仅增加了代码的冗余度,还降低了系统的可维护性。为了解决这一问题,我们可以利用...
在我们的"Directshow filter编写例程(二)读取文件"中,我们将创建一个自定义Filter,即AsyncReadFilter,它的主要任务是从文件中异步地读取数据并将其推送到Filter Graph中。 AsyncReadFilter是基于SDK自带的...
在这个特定的情况下,我们关注的是一个专门设计用来读取H264视频流的source filter。H264,也称为AVC(Advanced Video Coding),是目前广泛使用的高效视频编码标准,它能在较低带宽下提供高质量的视频流。 该...
在这个特定的案例中,我们关注的是一个实现图像翻转功能的Transform Filter,标题为"一个翻转图像的Transform Filter"。这个滤镜是基于DirectX(Dx)技术,因此,标签“Filter Dx”表明它是利用DirectX API来处理...
标题中的“cors-filter-2.5.jar”是一个Java Web应用程序使用的库,专门用于处理跨域资源共享(CORS)的问题。CORS是一种机制,允许Web应用通过浏览器从不同源(即非同源策略允许的源)获取资源,以克服浏览器的同源...
在IT行业中,尤其是在Web开发领域,跨域资源共享(CORS,Cross-Origin Resource Sharing)是一个重要的概念,它允许浏览器向不同的源(域名、协议或端口)发送Ajax请求,以突破同源策略的限制。Tomcat作为一款广泛...
本文将深入探讨标题为"vc++写的抠像叠加Filter"的知识点,以及如何利用DirectShow API来创建这样一个滤镜。 首先,"抠像"(Chroma Keying)是一种常见的视觉效果技术,常用于电影、电视制作,它通过消除特定颜色...
在IT领域,尤其是在Web开发中,`FilterBuilder`是一个重要的工具,它允许用户构建自定义的查询和过滤条件,以动态地筛选数据。这个组件通常用于数据量大、需要复杂查询逻辑的应用场景,如数据分析、报表展示或者管理...
另一个示例是用于检测用户是否已登录的Filter。如果用户未登录,则会将用户重定向到登录页面。这是一个非常常见的需求,在许多应用中都需要实现这样的功能。 ```java public class CheckLoginFilter implements ...
`Datagrid-filter`插件正是针对这种需求设计的,它是一个高效且实用的Grid插件,旨在提升数据网格的可操作性和用户交互性。这个插件的核心功能是为每一列提供过滤条件,使得用户能够快速筛选出所需的信息,极大地...
TI公司开发的FilterPro是一款软件工具,旨在辅助工程师设计由多重反馈(MFB)和Sallen-Key拓扑结构实现的有源滤波器。它能够减少设计和验证有源滤波器时所耗费的时间和精力,这对于现代电子设计而言极为重要,因为...
总的来说,Filter驱动开发是一项技术含量高、要求细致入微的工作,需要开发者深入理解操作系统内核机制、NDIS规范以及网络协议。通过学习和实践,开发者能够创建出满足特定需求的Filter驱动,从而在系统层面实现高效...
每个Filter完成自己的处理后,将请求传递给下一个Filter,直到达到最终的目标Servlet。 3. **配置Filter**:在Web应用的`web.xml`配置文件中,可以通过`<filter>`和`<filter-mapping>`元素定义Filter,指定其拦截...
- 使用`StreamUtil.readBytes()`方法将请求体中的数据读入一个`byte[]`数组。 - 创建一个新的`ByteArrayInputStream`实例并将其包装为`ServletInputStream`。 - 在`getInputStream()`方法中返回该`Servlet...
此外,由于Karaf是一个基于OSGi的服务容器,我们可能还需要考虑ServiceTracker或者Declarative Services(DS)来动态跟踪和管理Session共享Filter。ServiceTracker可以帮助我们在运行时自动检测到其他Bundle对...
在IT领域,尤其是在多媒体处理和视频播放技术中,"AppFilter 播放视频(.avi)源代码"是一个关于开发自定义DirectShow过滤器的项目。DirectShow是Microsoft开发的一个用于处理多媒体流的API,广泛应用于视频播放、音频...
4. **Filter链**:在一个Web应用中,可以有多个Filter,它们组成一个Filter链。当请求到达时,Filter会按照配置的顺序依次执行,直到请求传递到目标资源。 5. **Filter的实际应用**: - **安全控制**:Filter可以...
《jQuery Multiselect Filter插件详解》 在网页开发中,多选...对于那些需要处理大量选项的场景,它无疑能显著提升用户的操作体验。在实际项目中,开发者可以根据需求灵活应用和定制,以满足特定的设计和功能要求。