About this Document

This document has changed much over the years. Part encyclopedia, part how-to guide, with multiple sedimentary layers of accreted information from more than two decades of API development and refinement.

Yes, there does need to be one source of information about every last niggling detail of the After Effects APIs. However, since no human in their right mind would ever want to read such a document, we’ve tried to keep it involving and interesting.

As opportunity allows, we’ll try to include more diagrams, illustrations, and purdy pickshurs explaining API intricacies.

As always, your input is valued and appreciated.


Organization

The Introduction provides an overview of the integration possibilities with After Effects. It explains what plug-ins are, and how they work with After Effects. It describes the sample projects, and how to modify them. It explains where to install plug-ins, and what resources they use.

The basics of effect plug-ins are discussed in Effect Basics. This overview provides information on the function parameters passed to and from an effect plug-in’s entry point. It describes capability flags, effect parameters, and image buffers.

Effect Details dives into the details of developing a complete effect plug-in using the many provided callback functions. It also provides many testing ideas to ensure the plug-in is stabile.

SmartFX is the extension to the effect plug-in API to support 32-bit floating point images.

Effect UI & Events covers events sent to effect plug-ins, how to incorporate custom user interface elements, parameter supervision, and the reliance of custom data parameter types on Custom UI messaging.

Audio effects are covered in… Audio.

AEGPs details the After Effects General Plug-in (AEGP) API. Provided callback functions, hooking into internal messaging, manipulating the current contents of open projects and handling menu commands are all covered at length.

Artisans covers specialized plug-in 3D renderer AEGPs.

AEIOs, specialized AEGPs which handle file input and output.

Premiere Pro & Other Hosts discusses issues related to compatibility with Premiere Pro and other applications that support a subset of After Effects plug-ins.


Documentation Conventions

Functions, structure names and general C/C++ code are in Courier; MyStruct and MyFunction();

Text in blue is hyperlinked.

Command selectors are italicized; PF_Cmd_RENDER.


A Note About Coding Style

Because we use the public APIs for our own plug-ins, our coding guidelines are apparent throughout the SDK. Here’s a description of the pseudo-neo-post-Hungarian notation we use. Of course, you’re welcome to code however you like. If you feel strongly that we should change our internal coding standards, please post your requests at comp.sys.programmer.better.things.to.do.with.your.time, and we’ll carefully consider them before not making any changes.

Coding Conventions

Type

Suffix

Example

Handle

H

fooH

pointer (to)

P

fooP

Boolean

B

visibleB

Float

F

degreesF

Long

L

offsetL

unsigned long

Lu

countLu

short

S

indexS

char

C

digitC

unsigned char

Cu

redCu

function pointer

_func

sample_func

time value

T

durationT

char* (NULL-terminated C string)

Z

nameZ

rectangle

R

boundsR

fixed rectangle

FiR

boundsFiR

float rectangle

FR

boundsFR

ratio

Rt

scale_factorRt

void*

PV

refconPV

optional parameter (must be passed, can be NULL)

0

extra_flags0