跳转到内容

PF_OutData

PF_OutData

使用 PF_OutData 与 After Effects 沟通插件所做的更改。修改这些字段的有效时间已注明。


PF_OutData 成员

字段描述
my_version使用 PF_VERSION 宏将此标志设置为插件代码的版本。
After Effects 使用此数据来决定加载哪个重复的效果。
name未使用。
global_data每次调用时将在 PF_InData 中返回给您的句柄。
使用 After Effects 的内存分配函数。
num_paramsAfter Effects 将此字段与 PF_ADD_PARAM 的调用次数以及隐式输入层进行比较。
sequence_data在收到 PF_Cmd_SEQUENCE_SETUP 时可分配,此句柄将在所有后续调用中通过 PF_InData 传递回您。
flat_sdata_size未使用(After Effects 知道大小,因为您首先使用其分配函数获取内存)。
frame_dataPF_Cmd_FRAME_SETUP 期间您(可能)分配的句柄。
此数据永远不会写入磁盘;它用于将信息从您的 PF_Cmd_FRAME_SETUP 响应传递到 PF_Cmd_RENDERPF_Cmd_FRAME_SETDOWN(如果您调整输出缓冲区大小,则必须这样做)。
否则,此内存很少使用。
width, height, origin如果输出图像大小与输入不同,则在 PF_Cmd_FRAME_SETUP 期间设置。
widthheight 是输出缓冲区的大小,origin 是输入应映射到输出的点。
要创建向上和向左的 5 像素阴影,请将原点设置为 (5, 5)。
out_flags向 After Effects 发送消息。可以组合多个值。
return_msgAfter Effects 显示您在此处放置的任何 C 字符串(每次命令选择器后检查并清除)。
start_sampL, dur_sampL, dest_snd仅用于 Audio 命令
out_flags2向 After Effects 发送消息。可以组合多个值。

PF_OutFlags

这些标志向 After Effects 传达功能和状态信息。在以前的版本中,它们还用于发送基本消息,例如刷新 UI、发送错误消息。

这些功能已被函数套件取代,所有新的消息功能都将以该格式提供。然而,功能标志仍包含在 PiPL 中。

当您进行更改时,请同时更新 PiPL 和源代码。许多这些标志可以在 After Effects 会话期间更改。

标志表示
PF_OutFlag_KEEP_RESOURCE_OPEN插件的资源必须在所有命令期间可用。
PF_Cmd_GLOBAL_SETUP 期间,插件的资源始终打开,但在所有其他时间不可用(除了在 PF_Cmd_ABOUTPF_Cmd_DO_DIALOG 期间),除非设置了此标志。
如果您需要在 PF_Cmd_GLOBAL_SETUP 之外的任何时间访问资源,请设置此标志。
!!! 注意
我们建议插件加载并将必要的资源存储在全局数据中,而不是保持文件的资源打开。
PF_OutFlag_WIDE_TIME_INPUT效果在 current_time 之外的时间检查参数。
如果您使用来自其他时间的参数(包括图层参数),请设置此标志。
否则,After Effects 不会正确使您的效果使用的缓存帧失效。
PF_Cmd_GLOBAL_SETUP 期间设置。
如果您设置此标志,我们强烈建议您也设置 PF_OutFlag2_AUTOMATIC_WIDE_TIME_INPUT 以获得更好的性能。
PF_OutFlag_NON_PARAM_VARY设置此标志后,当效果应用于静止图像时,After Effects 不会缓存输出。
否则,After Effects 将缓存您的输出以用于渲染其他帧(如果可能)。
如果输出基于参数值以外的内容而变化,请设置此标志。
如果效果应用于静止图像时生成变化的帧且所有参数都保持不变,那么这是一个明确的信号,表明应设置此位(例如 Wave Warp)。
例如,粒子效果将需要此标志。
PF_Cmd_GLOBAL_SETUP 期间设置。
如果需要,可以在 PF_Cmd_QUERY_DYNAMIC_FLAGS 期间动态覆盖。
尽可能关闭此标志以提高性能。
PF_OutFlag_RESERVED6未使用。以前是 PF_OutFlag_SEND_PARAMS_UPDATE。已被 PF_OutFlag_REFRESH_UI 取代。
PF_OutFlag_SEQUENCE_DATA_NEEDS_FLATTENINGAfter Effects 和 Premiere Pro 都假定设置了此标志。
当序列数据包含引用项(指针、句柄)时,必须进行扁平化以进行存储,并在使用时进行反扁平化。
请参阅 PF_Cmd_SEQUENCE_RESETUP
PF_OutFlag_I_DO_DIALOG效果在响应 PF_Cmd_DO_DIALOG 时显示对话框。
PF_Cmd_GLOBAL_SETUP 期间设置,在 PF_Cmd_SEQUENCE_SETUP 期间检查。
!!! 注意
效果对 PF_OutFlag_I_DO_DIALOG 的响应不可撤销。您可以使用自定义 UI 的任意数据,如果此类更改变得必要。
PF_OutFlag_USE_OUTPUT_EXTENT效果遵守输出 extent_rect。在 PF_Cmd_GLOBAL_SETUP 期间设置。
有关正确用法,请参阅本章末尾的详细信息。
!!! 注意
对于 SmartFX 已过时。
PF_OutFlag_SEND_DO_DIALOG效果必须显示对话框才能正常工作(为与 Photoshop 插件兼容而添加)。
After Effects 在 PF_Cmd_SEQUENCE_SETUP 之后发送 PF_Cmd_DO_DIALOG
PF_Cmd_SEQUENCE_RESETUP 期间设置,而不是在 PF_Cmd_GLOBAL_SETUP 期间设置。
PF_OutFlag_DISPLAY_ERROR_MESSAGE在错误对话框中显示 return_msg 的内容。
每当 return_msg 非空时,After Effects 会在对话框中显示内容,如果设置了此标志,则显示为错误对话框。
在任何命令后设置,并可在调试期间使用。
这也是实现试用版提醒消息的好方法。
PF_OutFlag_I_EXPAND_BUFFER效果扩展输出缓冲区。
PF_Cmd_GLOBAL_SETUP 期间设置。
设置此标志和 PF_OutFlag_USE_OUTPUT_EXTENT 以在 PF_Cmd_FRAME_SETUP 期间使用输出 extent_rect 与您的新缓冲区大小的交集。
使用 pre_effect_source_origin 字段检测其他变换。
!!! 注意
仅在需要时设置此标志;它会大大降低缓存效率。
!!! 注意
对于 SmartFX 已过时。
PF_OutFlag_PIX_INDEPENDENT给定像素独立于其周围的像素。
PF_Cmd_GLOBAL_SETUPPF_Cmd_QUERY_DYNAMIC_FLAGS 期间设置。
例如,颜色校正效果通常是像素独立的,而扭曲效果则不是。
!!! 注意
如果您的效果不使用一个像素的颜色值来影响相邻像素的颜色值,请设置此 outflag!
它可以显著提高性能。
PF_OutFlag_I_WRITE_INPUT_BUFFER效果写入输入缓冲区。
此功能有限;虽然节省了分配,但它会使某些管道缓存失效。在 PF_Cmd_GLOBAL_SETUP 期间设置。
PF_OutFlag_I_SHRINK_BUFFER效果根据 extent_rect 缩小其缓冲区以提高内存效率。
PF_Cmd_GLOBAL_SETUP 期间尽可能设置。
!!! 注意
对于 SmartFX 已过时。
PF_OutFlag_WORKS_IN_PLACE未使用。
PF_OutFlag_SQUARE_PIX_ONLY未使用。
PF_OutFlag_CUSTOM_UI效果具有自定义用户界面,并需要 PF_Cmd_EVENT 消息。
PF_Cmd_GLOBAL_SETUP 期间设置。
PF_OutFlag_RESERVED5未使用。
PF_OutFlag_REFRESH_UI刷新整个效果控件、合成和图层窗口。
PF_Cmd_EVENTPF_Cmd_RENDERPF_Cmd_DO_DIALOG 期间设置。
如果在 PF_Cmd_EVENT 期间刷新自定义 UI,我们建议使用 新的重绘机制 以获得更细粒度的控制。
PF_OutFlag_NOP_RENDERPF_Cmd_FRAME_SETUP 期间设置此标志以使当前渲染失效。
PF_OutFlag_I_USE_SHUTTER_ANGLE表示渲染的图像依赖于 shutter_angle 的值。
PF_OutFlag_I_USE_AUDIO效果的参数依赖于音频数据,使用 PF_CHECKOUT_LAYER_AUDIO 获取。
PF_OutFlag_I_AM_OBSOLETE效果在最初应用它的旧项目中可用,但不会出现在效果菜单中。
PF_OutFlag_FORCE_RERENDER效果进行了需要重新渲染的更改。PF_ChangeFlag_CHANGED_VALUE 也会强制重新渲染。
PF_OutFlag_PiPL_OVERRIDES_OUTDATA_OUTFLAGSAfter Effects 将使用 PiPL outflags,并忽略在 PF_Cmd_GLOBAL_SETUP 期间设置的标志。
PF_OutFlag_I_HAVE_EXTERNAL_DEPENDENCIES效果依赖于外部文件(或外部字体)。
如果设置,After Effects 会发送 PF_Cmd_GET_EXTERNAL_DEPENDENCIES
PF_OutFlag_DEEP_COLOR_AWARE效果处理 16-bpc 颜色。
PF_OutFlag_SEND_UPDATE_PARAMS_UIPF_Cmd_GLOBAL_SETUP 期间设置此标志以接收 PF_Cmd_UPDATE_PARAMS_UI
PF_OutFlag_AUDIO_FLOAT_ONLY效果需要 PF_SIGNED_FLOAT 格式的音频数据。
After Effects 将执行任何所需的格式转换。
您还必须设置 PF_OutFlag_AUDIO_EFFECT_TOOPF_OutFlag_AUDIO_EFFECT_ONLY
PF_OutFlag_AUDIO_IIR如果(音频)效果是无限脉冲响应滤波器,则在 PF_Cmd_GLOBAL_SETUP 期间设置。
如果给定时间的输出依赖于之前时间的输出,则为真。
当 IIR 滤波器收到 PF_Cmd_AUDIO_RENDER 时,输入音频时间跨度与输出音频时间跨度相同(当它们与 PF_Cmd_AUDIO_SETUP 中请求的输出时间跨度相交时)。
在响应 PF_Cmd_AUDIO_SETUP 时,滤波器可以请求更早时间的音频(如延迟效果)。
滤波器可以访问该更早时间的参数,并应将其(以及临时音频)缓存在序列数据中。
如果生成的音频与请求的输出音频时间不对应,则应将输出音频持续时间设置为零。
滤波器可以使用参数和输入音频更新其延迟线。
缓存其延迟线后,在 PF_Cmd_AUDIO_SETUP 期间根据最后缓存的延迟线请求更多输入音频。使用 PF_HasParamChanged 确定您的缓存是否有效。
PF_OutFlag_I_SYNTHESIZE_AUDIO如果效果生成音频,即使在传递静音时,则在 PF_Cmd_GLOBAL_SETUP 期间设置。
您还必须设置 PF_OutFlag_AUDIO_EFFECT_TOOPF_OutFlag_AUDIO_EFFECT_ONLY