20年以上前にAdobe Photoshopで生まれたプラグインプロパティリスト(PiPL)は、プラグインの動作に関する基本情報を提供するリソースで、プラグインを実行することなく利用することができます。PiPLは、After Effectsでは、PF_Cmd_GLOBAL_SETUP(グローバルセレクタ参照)とダイナミックアウトフラグにほぼ取って代わられています。しかし、考古学的な理由から、PF_Cmd_GLOBAL_SETUPで示される動作は、PiPLの動作と一致する必要があります。

PiPLは、プラグインのエントリポイント、ディスプレイ名、およびプラグインのマッチ名を指定します。マッチ名は、動的に変更される可能性のあるプラグインのディスプレイ名とは異なり、ユニークで一定の識別子です。CCから、表示名は最大47文字まで使用できるようになりました。以前は31文字まででした。

クロスプラットフォームの互換性のために、サンプルのように、macOSとWindowsの両方のバージョンのプラグインに1つの.rファイルを使用してください。PiPL プロパティは常に macOS 固有のバイトオーダーである必要があります。Windows では、PiPL は .r ファイルをバイナリの .rc ファイルに変換する pipltool.exe を通して処理することによってコンパイルされます。Windowsのサンプルプロジェクトは、クロスプラットフォームの.rファイルと私たちのcnvtpipl.exeコマンドライン ユーティリティを使用して、.rcファイルを生成するカスタムビルドステップを含んでいます。既存のサンプルプラグインをベースに開発すれば、ビルドステップは正しく実装されます。

Entry Point

プラグインのエントリーポイントは、WindowsとmacOSのPiPLを通してエクスポートされます。プラグインが複数のプラットフォームに対応している場合は、複数のエントリーポイントをPiPLで定義する必要があります。他のOS固有のエントリポイントを指定しない限り、Windowsの.defファイルや手動でのエクスポートは必要ありません。

各サンプルのエントリポイント関数のエクスポートは、entry.h (the \SDKExamplesHeaders directory)に定義されているマクロが行います。サンプルプロジェクトのエントリーポイント関数は、エフェクトの場合はEffectMain()、AEGPの場合はEntryPointFunc()が使用されます。

PiPL Resources と Microsoft Visual Studio

Microsoft Visual Studio .NETのリソースをpipltoolで生成されたリソースで使用する場合。

#カスタムビルドステップの出力を、Microsoftが生成した.rcファイルにインクルードする。

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

サンプルプラグインを改造する場合は、pipltool.exeが生成するファイル名をWhizBang_PiPL_temp.rcのように変更しないと、ビルドするたびにMicrosoftのリソースを上書きしてしまい、よくありません。

複数のPiPL

複数のプラグイン (AEGP とエフェクトの両方) を、複数の PiPL を使用して同じファイルに含めることは可能ですが、推奨されません。同じファイルにAEGPとエフェクトの両方のPiPLがある場合、AEGPが最初に来なければなりません!

他のホストでは(Premiere Proでさえ)、同じ.dllまたはコードフラグメント内で複数のエフェクトを指す複数のPiPLをサポートしません。また、1つのプラグインをアップデートする必要がある場合、本当にすべてのプラグインの新しいビルドを出荷したいのでしょうか?私たちは、1つのコードフラグメントにつき、1つのPiPL、1つのプラグインを推奨しています。

超秘密のPiPLビット

C++を使用していて、プラグインを常にロードしておく必要がある場合(vテーブルがゴミになるのを避けるため、その他の危険のため)、PiPLのAE_Reserved_Infoメンバーを8にセットしてください。長年にわたり、私たちは、プラグインが良いメモリ市民であり、アンロードされたときに優雅に反応することを強く求めてきました。警告なしにアンロードされると、プラグイン(と v-tables)の一日が台無しになるケースがあるため、この回避策を提供します。親切に、細心の注意を払ってメモリ管理を行い、その力を善用するのみです。

なぜ、このようなことを知る必要があるのでしょうか?

あなたではなく、After Effectsが知っているのです。私たちのアドバイスに従い、SDKサンプルをベースにプロジェクトを作成すれば、PiPL定義を含む.rファイルを変更するだけで、次回ビルド時にプラグインのリソースは自動的に更新されます。愛を感じてください。あるいは、カスタムビルドの手順をいじくりまわすと、苦痛を感じるかもしれません。