`
iwebcode
  • 浏览: 2071840 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

写一个Filter至少需要那些东西。[转贴]

 
阅读更多

  写一个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 的单元测试

    Servlet Filter 是Java Servlet API中的一个重要组件,主要用于在Servlet处理请求之前或之后进行拦截处理,例如权限检查、日志记录、内容转换等。进行Servlet Filter的单元测试是确保Filter功能正确性和健壮性的重要...

    如何新建一个Filter空工程

    创建一个自定义的Filter空工程是开发DirectShow应用的第一步,这允许我们根据需求定制过滤器功能。以下是一份详细的步骤指南,帮助你开始这个过程。 **一、理解DirectShow Filter** DirectShow是Microsoft提供的一...

    讲述了如何制作一个检测是否已经登陆的filter

    ### 如何制作一个检测是否已经登录的Filter 在B/S架构的开发中,频繁地在各个页面中重复相同的代码逻辑,如检查用户是否已登录,不仅增加了代码的冗余度,还降低了系统的可维护性。为了解决这一问题,我们可以利用...

    Directshow filter编写例程(二)读取文件

    在我们的"Directshow filter编写例程(二)读取文件"中,我们将创建一个自定义Filter,即AsyncReadFilter,它的主要任务是从文件中异步地读取数据并将其推送到Filter Graph中。 AsyncReadFilter是基于SDK自带的...

    一个支持读取H264视频流(.264)的Source Filter

    在这个特定的情况下,我们关注的是一个专门设计用来读取H264视频流的source filter。H264,也称为AVC(Advanced Video Coding),是目前广泛使用的高效视频编码标准,它能在较低带宽下提供高质量的视频流。 该...

    一个翻转图像的Transform Filter

    在这个特定的案例中,我们关注的是一个实现图像翻转功能的Transform Filter,标题为"一个翻转图像的Transform Filter"。这个滤镜是基于DirectX(Dx)技术,因此,标签“Filter Dx”表明它是利用DirectX API来处理...

    cors-filter-2.5.jar

    标题中的“cors-filter-2.5.jar”是一个Java Web应用程序使用的库,专门用于处理跨域资源共享(CORS)的问题。CORS是一种机制,允许Web应用通过浏览器从不同源(即非同源策略允许的源)获取资源,以克服浏览器的同源...

    cors-filter-1.7.jar,cors-filter-2.5.jar,cors-filter-2.10.jar

    在IT行业中,尤其是在Web开发领域,跨域资源共享(CORS,Cross-Origin Resource Sharing)是一个重要的概念,它允许浏览器向不同的源(域名、协议或端口)发送Ajax请求,以突破同源策略的限制。Tomcat作为一款广泛...

    vc++写的抠像叠加Filter

    本文将深入探讨标题为"vc++写的抠像叠加Filter"的知识点,以及如何利用DirectShow API来创建这样一个滤镜。 首先,"抠像"(Chroma Keying)是一种常见的视觉效果技术,常用于电影、电视制作,它通过消除特定颜色...

    FilterBuilder过滤器

    在IT领域,尤其是在Web开发中,`FilterBuilder`是一个重要的工具,它允许用户构建自定义的查询和过滤条件,以动态地筛选数据。这个组件通常用于数据量大、需要复杂查询逻辑的应用场景,如数据分析、报表展示或者管理...

    java中filter的用法(过滤器)

    另一个示例是用于检测用户是否已登录的Filter。如果用户未登录,则会将用户重定向到登录页面。这是一个非常常见的需求,在许多应用中都需要实现这样的功能。 ```java public class CheckLoginFilter implements ...

    Datagrid-filter插件

    `Datagrid-filter`插件正是针对这种需求设计的,它是一个高效且实用的Grid插件,旨在提升数据网格的可操作性和用户交互性。这个插件的核心功能是为每一列提供过滤条件,使得用户能够快速筛选出所需的信息,极大地...

    FilterPro使用指南

    TI公司开发的FilterPro是一款软件工具,旨在辅助工程师设计由多重反馈(MFB)和Sallen-Key拓扑结构实现的有源滤波器。它能够减少设计和验证有源滤波器时所耗费的时间和精力,这对于现代电子设计而言极为重要,因为...

    Filter驱动开发笔记_filter_

    总的来说,Filter驱动开发是一项技术含量高、要求细致入微的工作,需要开发者深入理解操作系统内核机制、NDIS规范以及网络协议。通过学习和实践,开发者能够创建出满足特定需求的Filter驱动,从而在系统层面实现高效...

    Filter

    每个Filter完成自己的处理后,将请求传递给下一个Filter,直到达到最终的目标Servlet。 3. **配置Filter**:在Web应用的`web.xml`配置文件中,可以通过`<filter>`和`<filter-mapping>`元素定义Filter,指定其拦截...

    java filter打印请求返回参数

    - 使用`StreamUtil.readBytes()`方法将请求体中的数据读入一个`byte[]`数组。 - 创建一个新的`ByteArrayInputStream`实例并将其包装为`ServletInputStream`。 - 在`getInputStream()`方法中返回该`Servlet...

    osgi session共享 支持springmvc 配置个filter即可

    此外,由于Karaf是一个基于OSGi的服务容器,我们可能还需要考虑ServiceTracker或者Declarative Services(DS)来动态跟踪和管理Session共享Filter。ServiceTracker可以帮助我们在运行时自动检测到其他Bundle对...

    AppFilter 播放视频(.avi)源代码

    在IT领域,尤其是在多媒体处理和视频播放技术中,"AppFilter 播放视频(.avi)源代码"是一个关于开发自定义DirectShow过滤器的项目。DirectShow是Microsoft开发的一个用于处理多媒体流的API,广泛应用于视频播放、音频...

    Java-filter测试程序

    4. **Filter链**:在一个Web应用中,可以有多个Filter,它们组成一个Filter链。当请求到达时,Filter会按照配置的顺序依次执行,直到请求传递到目标资源。 5. **Filter的实际应用**: - **安全控制**:Filter可以...

    jquery.multiselect.filter

    《jQuery Multiselect Filter插件详解》 在网页开发中,多选...对于那些需要处理大量选项的场景,它无疑能显著提升用户的操作体验。在实际项目中,开发者可以根据需求灵活应用和定制,以满足特定的设计和功能要求。

Global site tag (gtag.js) - Google Analytics