AviSynth C Interface Version 0.15 Copyright 2004 Kevin Atkinson under the GPL 2.0 This is the version 0.15 of a compiler neutral C API for AviSynth 2.5. The latest version can be found at http://kevin.atkinson.dhs.org/avisynth_c/. AviSynth 2.5.3 includes an older version of my C API. To install the newer version simply overwrite avisynth_c.dll with the one from the never version. avisynth_c.dll can usually be found in the windows system directory. To install the C ABI with older versions simply copy avisynth_c.dll into the plugin directory or load with with LoadPlugin like you would any normal AviSynth plugin. If you are using AviSynth 2.5.3 or better filters written with this interface can be loaded like any other filter. With early versions of AviSynth use: LoadCPlugin(filename) The API is defined in the C header "avisynth_c.h". This header uses two common extensions to C which are also part of the C99 and C++ standard: "//" comments, and inline functions. Gcc and Visual C fully supports these extensions. Since "extern C" linkage is used the C API can be used by any C++ compiler, even ones that are not API compatible with VC++. Please see "example.html" for an illustrative example of how to use the C ABI and "abi.html" for a complete reference to the ABI. The file "examples.c" contians some additional examples. The examples dll was created using gcc 3.2.3. The example file defines the following filters: DoNothing(clip): does absolutely nothing DuplicateN(clip, num): replaces all frames in the clip with frame with frame number num. InvertLuma(clip): Inverts the luma channel. Requires YUY2 or YV12 InvertLumaInPlace(clip): Same as InvertLuma but does not make a copy of the clip. To use it use LoadCPlugin("PATH TO EXAMPLES DLL\examples.dll") Please note that it is VERY important to free all AVI_Clip when you are done with it. This is because if you don't AviSynth may crash on exit. Also note that a future version of the C ABI is very likely to use the stdcall calling convention for better compatibility with languages like Visual Basic. Naturally this will break binary compatibility. To maintain source code compatibility always use AVSC_CC when defining callback functions. Changes from 0.14 to 0.15 (January 1, 2004) * Bug Fixes * Wrote example.html and abi.html Changes From 0.13 to 0.14 (September 10, 2003) * Implemented avs_create_script_environment * Added avs_copy_video_frame * Minor API Changes Changes From 0.12 to 0.13 (September 7, 2003) * Bug Fixes * Added constants for use with avs_get_cpu_flags * Clarified copyright notice Changes From 0.11 to 0.12 * Bug Fixes Changes From 0.10 to 0.11 (August 12, 2003) * Bug Fixes * Minor API Changes * Added YV12 support to the examples. Everything in the distribution is Copyright 2003 Kevin Atkinson. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA, or visit http://www.gnu.org/copyleft/gpl.html. As a special exception, I give you permission to link to the Avisynth C interface with independent modules that communicate with the Avisynth C interface solely through the interfaces defined in avisynth_c.h, regardless of the license terms of these independent modules, and to copy and distribute the resulting combined work under terms of your choice, provided that every copy of the combined work is accompanied by a complete copy of the source code of the Avisynth C interface and Avisynth itself (with the version used to produce the combined work), being distributed under the terms of the GNU General Public License plus this exception. An independent module is a module which is not derived from or based on Avisynth C Interface, such as 3rd-party filters, import and export plugins, or graphical user interfaces.