-
Notifications
You must be signed in to change notification settings - Fork 18
general_conventions
VirtualDub Plugin SDK 1.2
Naming conventions
By convention, most symbols in VirtualDub contain the prefix VD in
order to avoid conflicts with other symbols. To distinguish between
VirtualDub internal symbols and symbols meant for external usage,
symbols in the plugin API and in the Plugin SDK headers are prefixed
with VDX instead to denote them for external usage. In some cases
structures are declared identically between VirtualDub itself and the
Plugin SDK headers, but the SDK versions with the VDX prefix are the
ones intended for use by plugins.
Interfaces, represented in C++ by classes with only pure virtual
methods, use an additional I prefix, and therefore include the tag
IVDX.
VirtualDub itself is compiled with the Microsoft Visual C++ Compiler, versions 12.00 (VC6) to 14.00 (VC8). The calling convention used by the plugin API are thus based on the binary ABI used by the VC++ compiler and the Microsoft Windows platform. However, the SDK interfaces are designed to be amenable to other compilers when possible.
By default, calls in the 32-bit plugin API use the stdcall calling
convention whenever possible, except for calls taking variable
arguments, which use cdecl. However, the video filter interface
predates this Plugin SDK and therefore uses slightly different calling
conventions. In particular, most function calls use cdecl and method
calls on interfaces use thiscall. The thiscall convention in
particular may cause some issues if you are attempting to use a compiler
other than Visual C++, because it specifies a caller-pops convention
with the this pointer in ECX. If this is the case, you may have luck
modifying the headers to use fastcall instead with an extra dummy
first int parameter.
Copyright (C) 2007-2012 Avery Lee.
Setting up your development environment
Conventions
Plugin initialization
Dynamic loading
Reference counting
Using CPU extensions
Introduction
What's new
Breaking changes
Gotchas
Deprecated features
Migrating from the old Filter SDK
Programming model
Handling bitmaps
Creating a video filter
Setting filter parameters
Processing video frames
Managing filter data
Creating time-varying filters
Handling aspect ratio
Prefetching multiple source frames
Handling multiple sources
Making a filter configurable
Scripting support
CPU dependent optimization
VDXA index omitted
Getting started
Writing the module entry point
Creating a video filter
Adding configurability
Adding script support
Introduction
What's new
Autodetect
Direct mode
Video frames vs. samples
Video decodint model
Video decoder