Building DirectShow Filters

 
Microsoft DirectShow 9.0

Building DirectShow Filters

The DirectShow base classes are recommended for implementing DirectShow filters. To build with the base classes, perform the following steps, in addition to the steps listed in Setting Up the Build Environment:

  • Build the base class library, located in the directory Samples\Multimedia\DirectShow\BaseClasses, under the SDK root directory. There are two versions of the library: a retail version (Strmbase.lib) and a debug version (Strmbasd.lib).

  • Include the header file Streams.h.

  • Use the __stdcall calling convention.

  • Use the multithreaded C run-time library (debug or retail, as appropriate).

  • Include a definition (.def) file that exports the DLL functions. The following is an example of a definition file. It assumes that the output file is named MyFilter.dll.

    LIBRARY MYFILTER.DLL
    EXPORTS
    DllMain             PRIVATE
    DllGetClassObject   PRIVATE
    DllCanUnloadNow     PRIVATE
    DllRegisterServer   PRIVATE
    DllUnregisterServer PRIVATE
    

  • Link to the following lib files.

    Debug Build Strmbasd.lib, Msvcrtd.lib, Winmm.lib
    Retail Build Strmbase.lib, Msvcrt.lib, Winmm.lib
  • Choose the "ignore default libraries" option in the linker settings.

  • Declare the DLL entry point in your source code, as follows:

    extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE, ULONG, LPVOID);
    BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
    {
    return DllEntryPoint((HINSTANCE)(hModule), dwReason, lpReserved);
    }
    

Previous Versions

For versions of the base class library before DirectShow 9.0, you must also do the following:

  • For debug builds, define the preprocessor flag DEBUG.

This step is not required for the version of the base class library that is available in DirectShow 9.0 and later.

See Also