文章目录
-
- 1.AE定义内部结构
- 2.作者答疑
1.AE定义内部结构
??开发AE插件会用到很多AE对内部数据结构的开发有一个大致的了解AE插件仍然很有帮助。源代码如下:
//CC #define PF_AE141_PLUG_IN_VERSION 13 // auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay #define PF_AE141_PLUG_IN_SUBVERS 14 // auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay #define PF_AE140_PLUG_IN_VERSION 13 // auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay #define PF_AE140_PLUG_IN_SUBVERS 13 // auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay #define PF_AE138_PLUG_IN_VERSION 13 // auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay #define PF_AE138_PLUG_IN_SUBVERS 11 // auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay // AE137 is same plugin version as AE136, below #define PF_AE136_PLUG_IN_VERSION 13 // auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay #define PF_AE136_PLUG_IN_SUBVERS 10 // auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay #define PF_AE135_PLUG_IN_VERSION 13 // auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay #define PF_AE135_PLUG_IN_SUBVERS 9 // auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay // AE131 and AE132 are the same plugin version as AE130, below #define PF_AE130_PLUG_IN_VERSION 13 // auto-set by prep_codeline_for_release.py, adjust comment if manually edit okay #define PF_AE130_PLUG_IN_SUBVERS 7 // auto-set by prep_codeline_for_release.py, adjust comment if manually edit okay #define PF_AE122_PLUG_IN_VERSION 13 // auto-set by prep_codeline_for_release.py, adjust comment if manually edit okay #define PF_AE122_PLUG_IN_SUBVERS 6 // auto-set by prep_codeline_for_release.py, adjust comment if manually edit okay #define PF_AE121_PLUG_IN_VERSION 13 // auto-set by prep_codeline_for_release.py, adjust comment if manually edit okay #define PF_AE121_PLUG_IN_SUBVERS 5 // auto-set by prep_codeline_for_release.py, adjust comment if manually edit okay #define PF_AE120_PLUG_IN_VERSION 13 #define PF_AE120_PLUG_IN_SUBVERS 4 //CS6.0.1 //Plugins have to make dummy checkout (hack) to fix W3163764 in CS6. The bug has been fixed in CS6.0.1 so increase SDK minor version //so that plugins can constrain the hack only for CS6. #define PF_AE1101_PLUG_IN_VERSION 13 #define PF_AE1101_PLUG_IN_SUBVERS 3 #define PF_AE110_PLUG_IN_VERSION 13 #define PF_AE110_PLUG_IN_SUBVERS 2 #define PF_AE105_PLUG_IN_VERSION 13 #define PF_AE105_PLUG_IN_SUBVERS 1 #define PF_AE100_PLUG_IN_VERSION 13 #define PF_AE100_PLUG_IN_SUBVERS 0 #define PF_AE90_PLUG_IN_VERSION 12 #define PF_AE90_PLUG_IN_SUBVERS 14 #define PF_AE80_PLUG_IN_VERSION 12 #define PF_AE80_PLUG_IN_SUBVERS 13 #define PF_AE70_PLUG_IN_VERSION 12 #define PF_AE70_PLUG_IN_SUBVERS 12 #define PF_AE65_PLUG_IN_VERSION 12 #define PF_AE65_PLUG_IN_SUBVERS 11 #define PF_AE41_PLUG_IN_VERSION 12 #define PF_AE41_PLUG_IN_SUBVERS 2 #define PF_AE40_PLUG_IN_VERSION 12 #define PF_AE40_PLUG_IN_SUBVERS 1 #define PF_AE31_PLUG_IN_VERSION 11 #define PF_AE31_PLUG_IN_SUBVERS 6 #define PF_AE31_PLUG_IN_SUBVERS_STRICTIFY 8 #define PF_AE_PLUG_IN_VERSION PF_AE141_PLUG_IN_VERSION // auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay #define PF_AE_PLUG_IN_SUBVERS PF_AE141_PLUG_IN_SUBVERS // auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay /* Note: AE3.1 will drive any v11.x plugin AE4.0 will drive any v11.x or v12.x plugin AE4.1 will drive any v11.x or v12.x plugin, changed current version from 12.1 -> 12.2 If you use PF_AE31_PLUG_IN_VERSION, PF_AE31_PLUG_IN_SUBVERS_STRICTIFY or later (e.g. 11.8 or 12.0) AE4.0 will enforce new stricter rules and report more plug-in errors. */
这一部分是版本定义,区别各种不同版本。部分常用参数和枚举变量,代码如下:
#define PF_MAX_EFFECT_NAME_LEN 31
#define PF_MAX_EFFECT_CATEGORY_NAME_LEN 31
#define PF_MAX_EFFECT_PARAM_NAME_LEN 31
#define PF_MAX_PARAM_DESCRIPTION_LEN 31
#define PF_MAX_PARAM_VALUE_LEN 31
#define PF_MAX_EFFECT_MSG_LEN 255
// Through AE6.5, effects could only have this many parameters. Now the number is unlimited.
#define PF_AE65_AND_EARLIER_MAX_NUM_EFFECT_PARAMS 127
#define PF_MAX_WORLD_WIDTH 30000
#define PF_MAX_WORLD_HEIGHT 30000
#define PF_FIRST_ERR 512
/* Standard effect categories for After Effects effects modules. * These need to be set in the PiPL. */
#define PF_Category_BLUR_AND_SHARPEN "Blur & Sharpen"
#define PF_Category_CHANNEL "Channel"
#define PF_Category_DISTORT "Distort"
#define PF_Category_IMAGE_CONTROL "Image Control"
#define PF_Category_KEYING "Keying"
#define PF_Category_PERSPECTIVE "Perspective"
#define PF_Category_STYLIZE "Stylize"
#define PF_Category_TEXT "Text"
#define PF_Category_VIDEO "Video"
#define PF_Category_TRANSITION "Transition"
#define PF_Category_AUDIO "Audio"
#define PF_Category_OTHER "Other"
enum {
PF_Quality_DRAWING_AUDIO = -1, // only used to inform audio plugins that the output
// will be used to draw the waveform; the plugin should
// not perform any filtering operations that may weaken
// the amplitude when rendering at low sampling rates
PF_Quality_LO = 0, // LO & HI are sent to both audio & visual effects
PF_Quality_HI
};
typedef A_long PF_Quality;
enum {
PF_MF_Alpha_PREMUL = 0,
PF_MF_Alpha_STRAIGHT = (1L << 0)
};
typedef A_long PF_ModeFlags;
#define PF_ALPHA_PREMUL(F) (((F) & 0x00000001) == 0)
#define PF_ALPHA_STRAIGHT(F) (((F) & 0x00000001))
enum {
PF_Field_FRAME = 0L,
PF_Field_UPPER = 1L,
PF_Field_LOWER = 2L
};
typedef A_long PF_Field;
/* PF_ParamType */
enum {
PF_Param_RESERVED = -1,
PF_Param_LAYER = 0,
PF_Param_SLIDER, /* obsolete, use PF_Param_FLOAT_SLIDER */
PF_Param_FIX_SLIDER,/* obsolete, use PF_Param_FLOAT_SLIDER */
PF_Param_ANGLE,
PF_Param_CHECKBOX,
PF_Param_COLOR,
PF_Param_POINT,
PF_Param_POPUP,
PF_Param_CUSTOM, /* obsolete */
PF_Param_NO_DATA, /* used for CustomUI in Effect window controls, with NO data stream */
PF_Param_FLOAT_SLIDER,
PF_Param_ARBITRARY_DATA, // in AE: must combine with either PF_PUI_TOPIC/PF_PUI_CONTROL or PF_PUI_NO_ECW
// in PPro starting with 8.0: it's OK to set none of those flags, which allows you to
// see the parameter's keyframe track on the right side of Effect Controls
// without creating a custom control
PF_Param_PATH,
PF_Param_GROUP_START,
PF_Param_GROUP_END,
PF_Param_BUTTON, // must combine with PF_ParamFlag_SUPERVISE
PF_Param_RESERVED2,
PF_Param_RESERVED3,
PF_Param_POINT_3D // only supported by AE, not PPro
};
typedef A_long PF_ParamType;
有些参数阈值,有些是分哪些模块,它们都是可以转换成整形的有特定意义的标志。
2.作者答疑
如有疑问,请留言。