深入浅出Directshow Filter演示教学.doc

深入浅出Directshow Filter演示教学.doc

ID:57138586

大小:93.00 KB

页数:48页

时间:2020-08-03

深入浅出Directshow Filter演示教学.doc_第1页
深入浅出Directshow Filter演示教学.doc_第2页
深入浅出Directshow Filter演示教学.doc_第3页
深入浅出Directshow Filter演示教学.doc_第4页
深入浅出Directshow Filter演示教学.doc_第5页
资源描述:

《深入浅出Directshow Filter演示教学.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、深入浅出DirectshowFilter精品文档深入浅出DirectShowFilterFilter概述Filter是一个COM组件,由一个或多个Pin组成。Pin也是一个COM组件。Filter文件的扩展名为.ax,但也可以是.dll。Filter根据其包含Inputpin或Outputpin的情况(或在FilterGraph的位置),大致可分为三类:SourceFilter(仅有Outputpin)、TransformFilter(同时具有Inputpin和Outputpin)和RendererFilter(仅有Inputpin)。一般情况下

2、,创建Filter使用一个普通的Win32DLL项目。而且,一般Filter项目不使用MFC。这时,应用程序通过CoCreateInstance函数Filter实例;Filter与应用程序在二进制级别的协作。另外一种方法,也可以在MFC的应用程序项目中创建Filter。这种情况下,Filter不需注册为COM组件,Filter与应用程序之间的协作是源代码级别的;创建Filter实例,不再使用CoCreateInstance函数,而是直接new出一个Filter对象,如下: m_pFilterObject=newCFilterClass();//m

3、aketheinitialrefcount1tomatchCOMcreationm_pFilterObject->AddRef();因为Filter的基类实现了对象的引用计数,所以即使在第二种情况下,对创建后的Filter对象的操作也完全可以遵循COM标准。Filter是一个独立功能模块,最好不要将Filter依赖于其他第三方的DLL。因为Filter具有COM的位置透明性特点,Filter文件可以放在硬盘的任何位置,只要位置移动后重新注册。但此时,如果Filter依赖其他DLL,则Filter对该DLL的定位就会出现问题。收集于网络,如有侵权请

4、联系管理员删除精品文档Filter不能脱离FilterGraph单独使用。所以,如果你想绕过FilterGraph直接使用Filter实现的模块功能,请将你的Filter移植成DMO(DirectXMediaObject)。2.Filter的注册Filter是COM组件,所以在使用前一定要注册。Filter的注册程序为regsvr32.exe。如果带上命令行参数/u,表示注销;如果带上是/s,表示不弹出任何注册/注销成功与否的提示对话框。如果你想在BuildFilter项目的时候进行自动注册,请在VC的Projectsettings的Custom

5、Build页如下设置: Description:Registerfilter Commands:regsvr32/s/c$(TargetPath) echoregsvr32exe.time>$(TargetDir)$(TargetName).trg Outputs:$(TargetDir)$(TargetName).trgFilter的注册信息包括两部分:基本的COM信息和Filter信息。注册信息都存放在注册表中。前者的位置为:HKEY_CLASSES_ROOTCLSIDFilterClsid,后者的位置为:HKEY_CLASSES_

6、ROOTCLSIDCategoryInstanceFilterClsid。COM信息标示了Filter是一个标准的可以通过CoCreateInstance函数创建的COM组件,Filter信息标示了我们通过Graphedit看到的描述这个Filter的信息。如果你不想让Graphedit看到(或者让Filter枚举器找到)你写的Filter,你完全可以不注册Filter信息。而且不用担心,你这么做也完全不会影响Filter的功能。屏蔽注册Filter信息的方法也很简单。因为CBaseFilter实现了IAMovieSetup接口的两个函

7、数:Register和Unregister。我们只需重载这两个函数,直接return收集于网络,如有侵权请联系管理员删除精品文档S_OK就行了。(注意:IAMovieSetup是用以注册Filter信息部分的接口,但已经废弃,仅在AMovieDllRegisterServer和AMovieDllUnregisterServer调用才会用到。新写的Filter注册函数一般使用AMovieDllRegisterServer2,这个函数不使用IAMovieSetup接口。如果想要不注册Filter信息,最好自己实现Filter的两个导出函数:DllRe

8、gisterServer和DllUnregisterServer,其中只使用RegisterAllServers函数注册OleServe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。