欢迎来到天天文库
浏览记录
ID:50979934
大小:37.89 KB
页数:19页
时间:2020-03-08
《设计自定义的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
此文档下载收益归作者所有