建立directshow的filter工程的过程

建立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的类。

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

Leave a Reply

Your email address will not be published. Required fields are marked *