PF_OutData — After Effects SDK Guide 22.0.0 documentation

PF_OutDataを使用して、プラグインによる変更をAfter Effectsに伝達します。これらのフィールドを変更するための有効な時間が記載されています。

PF_OutData メンバー

Name Description
my_version このフラグを(PF_VERSIONマクロを使用して)プラグインコードのバージョンに設定します。After Effectsはこのデータを使って、重複するエフェクトのどれを読み込むかを決定します。
name 未使用です。
global_data 呼び出すたびにPF_InDataに返されるハンドルです。After Effectsのメモリ割り当て機能を利用する。
num_params After Effectsは、このフィールドを、次のような呼び出しの回数と照合します。PF_ADD_PARAM、暗黙の入力層と同様です。
sequence_data PF_Cmd_SEQUENCE_SETUPの受信時に割り当て可能で、このハンドルは、その後のすべての呼び出し時にPF_InDataであなたに戻されることになります。
flat_sdata_size 未使用(After Effectsはサイズを知っている、なぜなら最初にメモリを取得するために割り当て関数を使用する為)。
frame_data PF_Cmd_FRAME_SETUPで割り当てた(かもしれない)ハンドル。これは、PF_Cmd_FRAME_SETUPレスポンスからPF_Cmd_RENDERまたはPF_Cmd_FRAME_SETDOWN(出力バッファのサイズを変更する場合は必ず行う)に情報を渡すために使用したもので、ディスクに書き込まれることはありません。それ以外の場合は、このメモリはほとんど使用しません。
width, height, origin PF_Cmd_FRAME_SETUP時に、出力画像サイズが入力と異なる場合に設定します。widthとheightは出力バッファのサイズ、originは入力が出力にマッピングされるべき点である。上下左右に5ピクセルのドロップシャドウを作成するには、原点を(5, 5)に設定します。
out_flags After Effectsにメッセージを送る。複数の値をOR結合する。
return_msg After Effectsは、ここに入れた任意のC文字列を表示します(コマンドセレクターのたびにチェックとクリアを繰り返します)。
start_sampL, dur_sampL, dest_snd オーディオコマンドにのみ使用します。
out_flags2 After Effectsにメッセージを送る。複数の値をOR結合する。

PF_OutFlags

これらのフラグは、After Effectsに能力およびステータス情報を伝達します。以前のバージョンでは、UIの更新やエラーメッセージの送信など、初歩的なメッセージの送信にも使用されました。

これらのケイパビリティはファンクション・スイートに取って代わられ、新しいメッセージング関数はすべてそのフォーマットで提供されます。しかし、ケイパビリティフラグはまだPiPLに含まれています。

変更を加えた場合は、PiPLとソースコードの両方を更新してください。これらのフラグの多くは、After Effectsのセッション中に変更することができます。

Flag Indicates
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_FLATTENING After 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 が NULL 以外の場合、After Effects はその内容をダイアログに表示します。このフラグが設定されている場合は、エラーダイアログとなります。任意のコマンドの後に設定し、デバッグ時に使用することができます。これは、試用版のためのナグメッセージを実装するのにも良い方法です。
PF_OutFlag_I_EXPAND_BUFFER エフェクトは、出力バッファを拡張します。PF_Cmd_GLOBAL_SETUPの時に設定します。PF_Cmd_FRAME_SETUP時に、出力extent_rectと新しいバッファサイズの交点を使用するには、このフラグとPF_OutFlag_USE_OUTPUT_EXTENTを設定してください。他の変換を検出するには、pre_effect_source_originフィールドを使用します。注意:このフラグは必要な場合のみ設定してください。キャッシュの効率が大幅に低下します。注:SmartFXでは廃止されました。
PF_OutFlag_PIX_INDEPENDENT ある画素は、その周りの画素から独立しています。PF_Cmd_GLOBAL_SETUP または PF_Cmd_QUERY_DYNAMIC_FLAGS のときに設定します。例えば、色補正の効果は一般的にピクセルに依存しませんが、歪みの効果はそうではありません。注:1つのピクセルの色値を使用して隣接するピクセルの色値に影響を与えないエフェクトの場合、このアウトフラグを設定してください。これにより、パフォーマンスが劇的に向上することがあります。
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_RENDER PF_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_OUTFLAGS After EffectsはPiPLのアウトフラグを使用し、PF_Cmd_GLOBAL_SETUPで設定されたものは無視します。
PF_OutFlag_I_HAVE_EXTERNAL_DEPENDENCIES 効果は、外部ファイル(または外部フォント)に依存します。設定されている場合、After EffectsはPF_Cmd_GET_EXTERNAL_DEPENDENCIESを送信します。
PF_OutFlag_DEEP_COLOR_AWARE このエフェクトは、16bpcのカラーを扱います。
PF_OutFlag_SEND_UPDATE_PARAMS_UI PF_Cmd_GLOBAL_SETUP時にこのフラグをセットすると、PF_Cmd_UPDATE_PARAMS_UIを受信できます。
PF_OutFlag_AUDIO_FLOAT_ONLY エフェクトには、PF_SIGNED_FLOAT形式のオーディオデータが必要です。必要なフォーマット変換は、After Effectsが行います。また、PF_OutFlag_AUDIO_EFFECT_TOOまたはPF_OutFlag_AUDIO_EFFECT_ONLYのいずれかを設定する必要があります。
PF_OutFlag_AUDIO_IIR オーディオ)エフェクトがInfinite Impulse Responseフィルターである場合、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_TOOまたはPF_OutFlag_AUDIO_EFFECT_ONLYのいずれかを設定する必要があります。
PF_OutFlag_AUDIO_EFFECT_TOO エフェクトで音声が変化する場合、PF_Cmd_GLOBAL_SETUP時に設定します。
PF_OutFlag_AUDIO_EFFECT_ONLY 音声出力のみ変更する場合は、PF_Cmd_GLOBAL_SETUPで設定します。

PF_OutFlags2

将来的に拡張する余地があることと、既存のフラグを再利用する悪い習慣を断ち切るために、After Effects 5.0でアウトフラグの2セット目を追加しました。

PF_OutFlagsと同様に、これらのフラグの多くはAfter Effectsのセッション中に変更することができます。

また、変更を加えた場合は、PiPLとソースコードの両方を更新することを忘れないでください。

Flag Indicates
PF_OutFlag2_NONE 何もしない。
PF_OutFlag2_SUPPORTS_QUERY_DYNAMIC_FLAGS PF_Cmd_QUERY_DYNAMIC_FLAGSに対応するエフェクトです。PiPLおよびPF_Cmd_GLOBAL_SETUP時に設定する必要があります。
PF_OutFlag2_I_USE_3D_CAMERA 3Dカメラ情報にアクセスするエフェクトです。
PF_OutFlag2_I_USE_3D_LIGHTS 3D照明情報にアクセスするエフェクトです。
PF_OutFlag2_PARAM_GROUP_START_COLLAPSED_FLAG このフラグ自体では、パラムグループのツライチの状態をコントロールすることはできません。PF_ParamFlagsPF_ParamFlag_START_COLLAPSEDフラグを設定することで、個々のパラメータグループの初期崩壊状態をPF_Cmd_PARAM_SETUP中に設定します。しかし、このビットをエフェクトで設定しない限り、これらの個々の設定は尊重されません。そうでない場合は、デフォルトですべてのパラメータグループが折りたたまれます。このフラグは、PF_Cmd_GLOBAL_SETUPの際に、PiPLとここの両方で設定することを忘れないでください。
PF_OutFlag2_I_AM_THREADSAFE 現在、これは何もしません。もしこれが面白いと思われるなら、後述のPF_OutFlag2_PPRO_DO_NOT_CLONE_SEQUENCE_DATA_FOR_RENDERに興味を持つかもしれませんね。
PF_OutFlag2_CAN_COMBINE_WITH_DESTINATION 当初はPremiere用として追加されましたが、現在は使用されていません。
PF_OutFlag2_DOESNT_NEED_EMPTY_PIXELS レンダリングの最適化のために追加されたもので、エフェクトに渡された入力バッファを縮小して、空のピクセルを除外します(ここで、空とは、PF_OutFlag2_REVEALS_ZERO_ALPHAが設定されていない限り「ゼロアルファ」を意味します、この場合、RGBも同様にゼロでなければなりません)。PF_Cmd_GLOBAL_SETUP または PF_Cmd_QUERY_DYNAMIC_FLAGS のときに設定します。トリミングされたバッファの原点は、in_data>pre_effect_source_originで確認することができます。このフラグとPF_OutFlag_I_EXPAND_BUFFERの両方を設定したエフェクトは、入力が完全に空の場合、NULL入力バッファで呼び出されることがあり、クラッシュせずにこのケースを処理できる必要があります。注意:このフラグによって、出力バッファのサイズが変化することがあります。注:SmartFXでは廃止されました。
PF_OutFlag2_REVEALS_ZERO_ALPHA このフラグは、デフォルトの動作を変更するものであるため、実装者が最も注意を払う必要があるものです。アルファがゼロのピクセルを使って、その中のRGBデータを明らかにすることができるエフェクトの場合、このフラグを設定します(Set Channelsエフェクトのように)。これは、エフェクトの入力を決定する際に、そのようなピクセルをトリミングしないようにAfter Effectsに指示します。このフラグは、PF_Cmd_QUERY_DYNAMIC_FLAGSで変更することができます。このフラグは、extent_hintのサイズを変更することができますが、イメージバッファサイズを変更することはできないことに留意してください。6.0以降、マスクのバウンディングボックスの外側のピクセルはゼロにされます。もし、あなたのエフェクトがそのようなピクセルを明らかにできるのであれば、このフラグを設定することで、AEにこれらのRGB値を捨てないように指示してください。エフェクトでそのような画素が常に表示されない場合は、このビットを動的に設定してください。このビットを設定する必要があるかどうかは、レイヤーよりかなり小さいマスクをソリッドに適用し、エフェクトを適用してアルファ変更状態に設定することで確認できます。マスクの矩形バウンディングボックスが見えるようになる場合、このビットを設定する必要があります。
PF_OutFlag2_PRESERVES_FULLY_OPAQUE_PIXELS その画素を守れ
PF_OutFlag2_SUPPORTS_SMART_RENDER このエフェクトは、SmartFX APIを使用しています。
PF_OutFlag2_FLOAT_COLOR_AWARE このエフェクトは、32bpc浮動小数点色表現をサポートしています。注:PF_OutFlag2_SUPPORTS_SMART_RENDERも設定されている必要があります。
PF_OutFlag2_I_USE_COLORSPACE_ENUMERATION Premiere Proの異なる色空間に最適化されたエフェクトに対応します。詳しくは、Premiere Pro SDKをご覧ください。
PF_OutFlag2_I_AM_DEPRECATED PF_Cmd_GLOBAL_SETUPで設定すると、エフェクトパネルのローカライズされた「Obsolete」フォルダーにエフェクトが入ります。PF_OutFlag_I_AM_OBSOLETEと比較してください。
PF_OutFlag2_PPRO_DO_NOT_CLONE_SEQUENCE_DATA_FOR_RENDER Premiere Proで対応、After Effectsでは非対応。Premiere ProがMultithreadingを使用してプラグインを駆動する方法に影響します。
PF_OutFlag2_AUTOMATIC_WIDE_TIME_INPUT PF_Cmd_GLOBAL_SETUPの時に設定します。PF_OutFlag_WIDE_TIME_INPUT (古いホストをサポートすることができる) の設定が必要ですが、実質的にこのフラグを上書きします。設定すると、すべてのパラメータのチェックアウトが追跡されるため、時間経過による依存関係がホストによって把握され、より効率的になります。例えば、旧来のPF_OutFlag_WIDE_TIME_INPUTだけを設定した場合、エフェクトの上流で何か変化があると、いつでも再レンダリングを要求されることになります。このフラグを設定すると、あるフレーム17が時間0~17のものをチェックアウトしていた場合、AEはフレーム18以上の変更はそのキャッシュされたフレームに影響しないことを知ることができます。ただし、時間依存データを使用する前に、PF_ParamUtilSuite3PF_GetCurrentState()/PF_AreStatesIdentical()を使用してキャッシュの検証を行う場合は、この新しいフラグを使用して、シーケンスデータ(またはその他の場所)に時間依存データをキャッシュしてはならないことにご注意ください。SmartFX(PF_OutFlag2_SUPPORTS_SMART_RENDERを設定しているもの)でのみ機能します。設定されていない場合、After EffectsはこれをPF_OutFlag_WIDE_TIME_INPUTとして無言で扱います。
PF_OutFlag2_I_USE_COMP_TIMECODE PF_Cmd_GLOBAL_SETUPの時に設定します。コンポジションの開始時間やドロップフレームの設定が変更された場合に、AEがエフェクトを再レンダリングすることを知らせます。
PF_OutFlag2_DEPENDS_ON_UNREFERENCED_MASKS CS6での新機能です。すべてのマスクにストロークを描く場合など、パスパラメータで直接参照されていないパスを調べる場合に設定します。これは、エフェクトによって参照されていないように見えるマスクが修正されたときに、After Effectsが出力を無効にすることを知るために必要です。PF_Cmd_GLOBAL_SETUP または PF_Cmd_QUERY_DYNAMIC_FLAGS のときに設定します。
PF_OutFlag2_OUTPUT_IS_WATERMARKED CS6での新機能です。PF_Cmd_GLOBAL_SETUPで、出力物に何らかの透かしが入り、最終的な使用に適さない場合(おそらくユーザーがライセンスなしのデモバージョンを使用しているため)に設定します。アプリのセッション中にPF_Cmd_QUERY_DYNAMIC_FLAGSでこの状態を変更することは可能です。この状態を非同期に変化させるプラグイン作成者は、次のレンダリングがPF_Cmd_QUERY_DYNAMIC_FLAGSから返された最後の状態と一致するように注意する必要があります。そうしないと、競合状態によって誤ったフレームがキャッシュされることがあります。(DO_DIALOGに対応して変更するだけであれば問題ありません)。
PF_OutFlag2_SUPPORTS_GPU_RENDER_F32 16.0 の新機能 PF_Cmd_GLOBAL_SETUP 中に設定することで、GPU サポートを示します。エフェクトはGPUセレクタで呼び出され、GUIでGPU対応とバッジされます。PF_Cmd_GPU_DEVICE_SETUP時に、これらのフラグは、特定のデバイスとフレームワークのレンダリング能力を示します。
PF_OutFlag2_SUPPORTS_THREADED_RENDERING 2020年6月からのAfter Effects Betaビルドで利用可能、After Effects 2022.PF_Cmd_GLOBAL_SETUPで設定され、このエフェクトが複数のスレッドで同時にレンダリングすることをサポートすることを示しています。レイヤーのこのエフェクトの単一または複数のアプリケーションを呼び出して、複数のスレッドで同時にレンダリングすることができます。このフラグは、エフェクトが複数のスレッドで同時にレンダリングすることをサポートしていることを示します。レイヤー上のこのエフェクトの単一または複数のアプリケーションを呼び出して、複数のスレッドで同時にレンダリングすることができます。PF_OutFlag_SEQUENCE_DATA_NEEDS_FLATTENINGフラグを使用している場合は、PF_OutFlag2_SUPPORTS_GET_FLATTENED_SEQUENCE_DATAフラグの設定も忘れないでください。詳しくは、「マルチフレームレンダリングのシーケンスデータ」を参照してください。
備考
このフラグは、AEでマルチフレームレンダリングを有効にしてスレッドセーフであることがテストされているプラグインにのみ設定する必要があります。このフラグの使用方法については、「エフェクトの詳細」の「AEでのマルチフレームレンダリング」をご参照ください。
PF_OutFlag2_MUTABLE_RENDER_SEQUENCE_DATA_SLOWER 2021年3月からのAfter Effectsベータビルドで利用可能、After Effects 2022.レンダリングスレッドごとにsequence_dataを複製する必要があることを示し、各レンダーが書き込み可能なsequence_dataを持つことを可能にします。sequence_dataの変更は定期的に破棄されることに注意してください。現在、シングルRAMプレビューやレンダーキューのエクスポートなど、フレームの各スパンがレンダリングされた後に破棄されています。
備考
このフラグは、AEでマルチフレームレンダリングを有効にしてスレッドセーフであることがテストされているプラグインにのみ設定する必要があります。このフラグの使用方法については、「エフェクトの詳細」の「AEでのマルチフレームレンダリング」をご参照ください。