Skip to content

PiPL Resources

Originating in Adobe Photoshop over two decades ago, Plug-In Property Lists, or PiPLs, are resources which provide basic information about a plug-in's behavior, without executing the plug-in. PiPLs have been largely supplanted within After Effects by PF_Cmd_GLOBAL_SETUP (see Global Selectors) and dynamic outflags. However, for archaeological reasons, the behaviors indicated during PF_Cmd_GLOBAL_SETUP must agree with those in the PiPL.

In the interest of cross-platform compatibility, use a single .r file for both macOS and Windows versions of your plug-in, like the samples do. PiPL properties must always be in macOS-specific byte order. On Windows, PiPLs are compiled by processing a .r file through pipltool.exe, which converts the .r file into a binary .rc file. The Windows sample projects all contain custom build steps which generate a .rc file, using a cross-platform .r file and our cnvtpipl.exe command line utility. Base your development on an existing sample plug-in and the build step will be correctly implemented.

PiPL Property Purpose
Kind Plug-in type. AEEffect for an Effect.
Name Display name which can be up to 47 characters long.
Category Effect category for menus and the Effects and Presets panel
Entry Point (one for each platform) Your plug-in's entry point is exported through the PiPL on Windows and macOS. If the plug-in supports multiple platforms, then
multiple entry points must be defined in the PiPL. There is no need for a Windows .def file or manual exports, unless you're
also designating some other OS-specific entry point.

The macros defined in entry.h (in the \SDKExamplesHeaders directory) take care of exporting each sample's entry point
function. All the sample project entry point functions are EffectMain() for effects, or EntryPointFunc()for AEGPs.
AE_PiPL_Version Unused
AE_Effect_Spec_Version SDK version the effect was built with
AE_Effect_Version The version of the effect
AE_Effect_Info_Flags Unused
AE_Effect_Global_OutFlags Must match the out_flags set in GlobalSetup
AE_Effect_Global_OutFlags_2 Must match the out_flags2 set in GlobalSetup
AE_Effect_Match_Name A unique, constant identifier, unlike a plug-in's display name, which may be changed dynamically.
AE_Reserved_Info Unused.
AE_Effect_Support_URL New in AE 23.5! URL for the effect. Shown in the Effects Manager. A user might click the link for more information about
the effect or to find a newer version.

PiPL Resources And Microsoft Visual Studio

To use resources from Microsoft Visual Studio .NET with pipltool-generated resources,

include the output of the custom build steps into the Microsoft-generated .rc file.

// in file WhizBang.rc, generated by .NET.
#include "WhizBang_PiPL_temp.rc" // pipltool.exe's output

If modifying a sample plug-in, change the name of the file generated by pipltool.exe to something like WhizBang_PiPL_temp.rc, or it will overwrite the Microsoft resources each time you build; not good.


Multiple PiPLs

It is possible, but not recommended, to include multiple plug-ins (both AEGPs and effects) in the same file, using multiple PiPLs. If there are PiPLs for both AEGPs and effects in the same file, the AEGPs must come first!

No other hosts (not even Premiere Pro) support multiple PiPLs pointing to multiple effects within the same .dll or code fragment. Also, if you need to update one plug-in, do you really want to ship a new build of all your plug-ins? We recommend one PiPL, and one plug-in, per code fragment.


Why Do I Need To Know All This?

You don't; After Effects does. If you follow our advice and base your projects on the SDK samples, you can simply change the .r file containing your PiPL definition(s), and your plug-in's resources will be automagically updated the next time you build. Feel the love. Or, if you ever tinker with the custom build steps, feel the pain.