Getting Started¶
Begin with one of the two video filter sample projects, progressively replacing its functionality with your own.
Resources¶
Filter plugins can use PiPL resources to define their behaviors and supported properties.
To provide any parameters in the Effect Controls panel, they must be defined in the PiPL in ANIM_ParamAtom sections, as demonstrated in the example below.
The 'no UI' UI type is for non-keyframeable parameters. After making changes to the PiPL, rebuild the plugin each time, so that the PiPL will be recompiled.
A Filter PiPL Example¶
#include "PrSDKPiPLVer.h"
#ifndef PRWIN_ENV
#include "PrSDKPiPL.r"
#endif
// The following two strings should be localized
#define plugInName "Cool Video Filter"
#define plugInCategory "SDK Filters"
// This name should not be localized or updated
#define plugInMatchName "SDK Cool Filter"
resource 'PiPL' (16000) {
{
// The plugin type
Kind {PrEffect},
// The plugin name as it will appear to the user
Name {plugInName},
// The internal name of this plugin
AE_Effect_Match_Name {plugInMatchName},
// The folder containing the plugin in the Effects Panel
Category {plugInCategory},
// The version of the PiPL resource definition
AE_PiPL_Version {PiPLVerMajor, PiPLVerMinor},
// The ANIM properties describe the filter parameters, and also how the data is stored in the project file. There is one ANIM_FilterInfo property followed by n ANIM_ParamAtoms
ANIM_FilterInfo {
0,
#ifdef PiPLVer2p3
// Non-square pixel aspect ratio supported
notUnityPixelAspectRatio,
anyPixelAspectRatio,
reserved4False,
reserved3False,
reserved2False,
#endif
},
reserved1False, // These flags are for use by After Effects
reserved0False, // Not used by Premiere
driveMe, // Not used by Premiere
needsDialog, // Not used by Premiere
paramsNotPointer, // Not used by Premiere
paramsNotHandle, // Not used by Premiere
paramsNotMacHandle, // Not used by Premiere
dialogNotInRender, // Not used by Premiere
paramsNotInGlobals, // Not used by Premiere
bgAnimatable, // Not used by Premiere
fgAnimatable, // Not used by Premiere
geometric, // Not used by Premiere
noRandomness, // Not used by Premiere
// Put the number of parameters here
2,
plugInMatchName
// There is one ANIM_ParamAtom for each parameter
ANIM_ParamAtom {
// This is the first property - Zero based count
0,
// The name to appear for the control
"Level",
// Parameter number goes here - One based count
1,
// Put the data type here
ANIM_DT_SHORT,
// UI control type
ANIM_UI_SLIDER,
0x0,
0x0, // valid_min (0.0)
0x405fc000,
0x0, // valid_max (127.0)
0x0,
0x0, // ui_min (0.0)
0x40590000,
0x0, // ui_max (100.0)
#if PiPLVer2p3
// New - Scale/dontScale UI Range if user modifies
dontScaleUIRange,
#endif
},
// Set/don't set this if the param should be animated
animateParam,
dontRestrictBounds, // Not used by Premiere
spaceIsAbsolute, // Not used by Premiere
resIndependent, // Not used by Premiere
// Bytes size of the param data
2
ANIM_ParamAtom {
1,
"Target Color", 2,
// Put the data type here
ANIM_DT_COLOR_RGB,
// UI control type
ANIM_UI_COLOR_RGB,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
#ifdef PiPLVer2p3
dontScaleUIRange,
#endif
// Set/don't set this if the param should be animated
animateParam,
dontRestrictBounds,
spaceIsAbsolute,
resIndependent,
// Bytes size of the param data
4
},
}
};
Entry Point¶
short xFilter (
short selector,
VideoHandle theData)
selector
is the action Premiere wants the video filter to perform.EffectHandle
provides source and destination buffers, and other useful information.
Return fsNoErr
if successful, or an appropriate return code.