general_devenv - shekh/VirtualDub2 GitHub Wiki

VirtualDub Plugin SDK 1.2

Setting up your development environment

Requirements

The VirtualDub Plugin SDK primarily supports the following compilers:

  • Microsoft Visual C++ 6.0 SP5 + Processor Pack
  • Microsoft Visual Studio 2005 SP1

Project files are not provided for Visual C++ .NET (2002), Visual C++ .NET (2003), or Visual Studio 2008, but the source code and include files should be compatible.

It is possible to create a plugin with other compilers, such as GCC, but doing so requires some modifications to the header files and isn't supported. In particular, the IVDXFilterPreview interfaces uses the Visual C++ __thiscall calling convention, which may require workarounds. Video filters have also been written in the past in other languages, such as Borland's Delphi, but doing so is definitely out of scope for this SDK.

Setting up the project

Create a standard Win32 dynamically linked library (DLL) project. In Visual Studio 2005, this is a suboption inside the Win32 Project template. Do not create a .NET (CLR) based project.

Add the include folder from this SDK to your project's preprocessor include paths. This configuration option exists under C/C++, General in Visual Studio 2005 and C/C++, Preprocess in Visual C++ 6.0.

If you are using Visual Studio .NET (2002) or later, under Code Generation, change the C Runtime Library (CRT) used by your DLL to Debug Multithreaded for a Debug build and Multithreaded for a Release build. This avoids a dependency on the CRT DLLs, which you would otherwise have to redistribute with your application. The CRT DLLs are especially annoying to redistribute in Visual Studio 2005.

If you are using the VDXFrame helper library, you should insert it into your workspace/solution and add it as a dependency to your project. The Plugin SDK does not come with .libs, so you will need to compile the library.

For input driver plugin DLLs, you will probably need to add a module definition (.def) file to your project to get the DLL entry point exported properly. See SampleInputDriver.def from the sample input driver; you can probably copy that file verbatim, and then select it under Linker, Input, Module Definition File in project settings. In Visual C++ 6.0, you will need to add the /def: flag manually to the linker command line.

Under link options, you should change the extension of the output DLL from .dll to .vdf for a video filter DLL or .vdplugin for an input driver DLL. You can also use .vdplugin for video filters if you are targeting recent versions of VirtualDub only.

Debugging your plugin

You can test and debug your plugin easily by having your debugger launch VirtualDub with the plugin automatically loaded. To do so, configure your debugger to use the following command:

VirtualDub /F path-to-filter

In Microsoft Visual Studio 2005, you can do this under project settings, Configuration Properties, Debugging. Set Command to point to VirtualDub.exe, and Command Arguments to /F "$(TargetPath)".

Once this has been set up, you should be able to set breakpoints and trace execution within your video filter under the debugger. You may also want to save a configuration file with your filter already inserted into the video filter chain so that you don't have to do so every time; you can do so by saving a configuration file in VirtualDub and executing it via the /s command line switch.

Note: Recent versions of VirtualDub automatically unload plugin DLLs when they are not in use, so you may have trouble with breakpoints initially not working in your debugger. You can lock your DLL in memory by adding filters to the filter chain or opening files with the input driver, both of which will keep the necessary plugin DLL loaded.


Copyright (C) 2007-2012 Avery Lee.

⚠️ **GitHub.com Fallback** ⚠️