建立directshow的filter工程有2中方法:
1. 直接从DXSDK提供的samples中拷贝一个最接近你想要的filter的filter工程
比如你想要sourcefilter那么你可以直接拷贝ball这个工程作为你的工程,然后在此工程的基础上开发。
2. 从一个空的工程开始
a. 假设你使用visiualstudio,那么建立一个win32 dynamic dll工程,空工程就可以。
b. 添加一个def文件,并且输入下面的内容:
LIBRARY MYFILTER.ax EXPORTS DllMain PRIVATE DllGetClassObject PRIVATE DllCanUnloadNow PRIVATE DllRegisterServer PRIVATE DllUnregisterServer PRIVATE
把MYFILTER.ax改成你自己的filter的名字。
c. 修改工程设置,c运行时库都改为multithreaded
d. 修改工程设置, 选择‘ignore default libraries’在linker选项页
e. 修改工程设置,使用__stdcall convention
f. 添加directshow要用到的库:
Debug 版本:
Strmbasd.lib, Msvcrtd.lib, Winmm.lib
Release版本:
Strmbase.lib, Msvcrt.lib, Winmm.lib
g. 添加一个cpp文件,内容如下:
#include <windows.h> #include <streams.h> STDAPI DllRegisterServer() { return AMovieDllRegisterServer2( TRUE ); } // DllRegisterServer // // DllUnregisterServer // STDAPI DllUnregisterServer() { return AMovieDllRegisterServer2( FALSE ); } // DllUnregisterServer extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE, ULONG, LPVOID); BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved) { return DllEntryPoint((HINSTANCE)(hModule), dwReason, lpReserved); }
接下来就是根据需要添加filter的类。
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.