设计自定义的Filter.docx

设计自定义的Filter.docx

ID:50979934

大小:37.89 KB

页数:19页

时间:2020-03-08

设计自定义的Filter.docx_第1页
设计自定义的Filter.docx_第2页
设计自定义的Filter.docx_第3页
设计自定义的Filter.docx_第4页
设计自定义的Filter.docx_第5页
资源描述:

《设计自定义的Filter.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、如何设计自定义的transformfilter(转)对于DIrectShow的初学者而言,最大的困难莫过于尝试设计自定义的filter。设计自定义的transformfilter是困难的因为首先filter是一种dll(后缀名为.ax)而编写dll工程需要一定的VC基础所以建议先补充一点dll的知识其次dll的注册,GUID的生成和工程的配置都很麻烦。再次网上缺乏现成的transformfilter的例子。DirectShow给的源码比如NULLINPLACE和CONTRAST都太复杂,都带有对话框和属性页,不适合初学者,而且这些例

2、子没有一个涉及到图像格式的转换,而transformfilter最大的公用就是媒体类型的转换,因此这些例子不适用作为一个初学者,我深深受到这些问题的困扰,经过刻苦钻研终于走出了这个泥潭,豁然开朗。于是把它记录下来,希望可以对其他人有帮助,也作为对08年的一个小结。我的例子是设计一个transformfilter把YUY216bit的媒体转化为RGB2424bit的类型。原因是我的摄像头只支持YUY216bit这种格式,我想得到位图。。顺便学习一下Filter的设计以下为具体步骤:一配置开发环境  1.VC中在Tools->Optio

3、ns->Directories设置好DirectXSDK的头文件和库文件路径     2.编译了基类源码,生成strmbasd.lib(debug版),strmbase.lib(release版)  3.VC向导新建一个win32DLL(empty)工程  4.Setting->Link->Outputfilename:YUV2RGBfilter.ax  5.Setting->Link加入strmbasd.libwinmm.libquartz.libvfw32.lib  (注意路径)  6.定义一个同名.def文件,加入到工程,内容

4、如下:                LIBRARYYUV2RGBfilter.ax       EXPORTS          DllMain             PRIVATE            DllGetClassObject   PRIVATE          DllCanUnloadNow     PRIVATE          DllRegisterServer   PRIVATE          DllUnregisterServerPRIVATE  7.建立一个类YUV2RGBfilter建立他的c

5、pp文件和h文件    8.在YUV2RGBfilter.cpp中定义DLL的入口函数及注册  放在cpp文件的最后////DllEntryPoint//extern"C"BOOLWINAPIDllEntryPoint(HINSTANCE,ULONG,LPVOID);BOOLAPIENTRYDllMain(HANDLEhModule,                     DWORDdwReason,                     LPVOIDlpReserved){returnDllEntryPoint((HINSTA

6、NCE)(hModule),dwReason,lpReserved);}////////////////////////////////////////////////////////////////////////////Exportedentrypointsforregistrationandunregistration//(inthiscasetheyonlycallthroughtodefaultimplementations).////////////////////////////////////////////////

7、//////////////////////////STDAPIDllRegisterServer(){   returnAMovieDllRegisterServer2(TRUE);}STDAPIDllUnregisterServer(){    returnAMovieDllRegisterServer2(FALSE);}  9.cpp文件中要包含的头文件#include#include#include#include#if(1100>_MS

8、C_VER)#include#endif#include"Y2Ruids.h"        //ourownpublicguids#include"YUV2RGBfilter.h"  二开发Filter  1

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

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

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