SDKNecessaries

You must have some compatible development tool

Notes

You also need in Microsoft Platform SDK (if it is not included with compiler)

When using VC6.0, you will need the February 2003 Edition [4], or the Windows Server 2003 SP1 Platform SDK edition [5] [6].

For MS VC++ 2005 you can use the latest Platform SDK: [7].

For MS VC++ 2008 or more recent it is included in the compiler (?) (and it is called Windows PSK).

For some very special plugins (GPU) you might need the DirectX SDK t00 (when compiling AviSynth itself you will need it).

 Finally, you must include small header file 'avisynth.h'

You can get it with this FilterSDK, download with AviSynth source code, or take from some plugin source package. There are several versions of this header file from various AviSynth versions.

Header file avisynth.h from v1.0.x to v2.0.x have AVISYNTH_INTERFACE_VERSION = 1. Plugins compiled with them will be not (natively) compatible with AviSynth 2.5.x.

Header file avisynth.h from v2.5.0 to v2.5.5 have AVISYNTH_INTERFACE_VERSION = 2. Plugins compiled with them will (generally) work in AviSynth v2.5.0 to v2.5.7 (and above). But avisynth.h files from versions v2.5.0 - v2.5.5 (and betas) are not identical. We recommend to use avisynth.h from versions 2.5.5 or later. Previous versions of avisynth.h are obsolete and have some bugs.

Header file avisynth.h from v2.5.6 to v2.5.8 are almost identical and have AVISYNTH_INTERFACE_VERSION = 3. Plugins compiled with them will work in v2.5.6 and up, and v2.5.5 and below if you do not use new interface features and do not call env->CheckVersion function.

Now being developed, AviSynth version 2.6.x will use new header avisynth.h, currently with AVISYNTH_INTERFACE_VERSION = 6. Plugins compiled with AviSynth v2.5.x header will work in AviSynth 2.6.x too, but plugins compiled with new AviSynth v2.6.x header will probably not work in AviSynth v2.5.x.

Generally good start is to take some similar plugin source code as a draft for improving or own development. Attention: there are many old plugins source code packages with older avisynth.h included. Simply replace it by new one.

 Compiling options

Plugin CPP source code must be compiled as Win32 DLL (multi-threaded or multi-threaded DLL) without MFC.

Notes. If you use Visual C++ Toolkit 2003 itself (without VC++ 7), you can not build plugin as multi-treaded DLL: the toolkit missed some libraries, in particular msvcrt.lib. You can get additional libs with MS .NET 1.1 SDK (free download) or simply use multi-treaded option (IMHO it is better - no need in MSVCRT71.DLL).

Of course, use Release build with optimization. Typical compiler switches are /MT /O2 and /dll /nologo for linker

See step by step compiling instructions.

 Other compilers

Since v2.5.7, AviSynth includes an updated version of Kevin Atkinson's AviSynth C API you can use to create "C-Plugins" with compilers such as GNU C++, Visual Basic and Delphi.

You can NOT use the C++ API with compilers like GNU C++ to create plugins, because of binary incompatibilities.


There is also Pascal conversion of avisynth_c.h by Myrsloik

Some info about Using in Visual Basic

PureBasic port of the Avisynth C Interface by Inc

There is also AvsFilterNet wrapper for Avisynth in .NET (any .NET language) by SAPikachu, see discussion


Back to FilterSDK

$Date: 2015/03/30 06:08:10 $