基本的なホスト差異
Premiere Pro では、After Effects エフェクトプラグインに対して堅牢な互換性を提供するよう努めてきました。
レンダー パイプラインには根本的な違いがあり、それが差異を引き起こしており、API の実装が完璧ではない可能性があることを認識しています。
以下は、Premiere Pro で実行するときにプラグインが遭遇するいくつかの違いの概要です。
Premiere Pro は、PF_InData でわずかに異なる時間値を使用します。たとえば、CS4 では次のようになります。
NTSC でのレンダリング、time_scale は 60000、time_step は 1001、フィールドはフィールド順序を指定します(After Effects では、フィールド レンダリングの場合、スケールは 2997、ステップは 50、プログレッシブ レンダリングの場合、スケールは 2997、ステップは 100)。
PAL でのレンダリング、time_scale は 50、time_step は 1、フィールドはフィールド順序を指定します (After Effects では、フィールド レンダリングの場合、スケールは 3200、ステップは 64、プログレッシブ レンダリングの場合、スケールは 3200、ステップは 128)。
時間値を生成するのは時間関連値の比率であり、特に time_scale 値ではありません。 Premiere Pro は将来、異なる time_scale を使用する可能性があるため、ハードコーディングしないでください。 After Effects とまったく同じ値が使用されるとは限らないことに注意してください。
レンダリングフレーム
Section titled “レンダリングフレーム”Premiere はレスポンシブ編集用に最適化されています。タイムラインでスクラブし、エフェクトパラメータを変更すると、Premiere はすぐに表示するために低品質のレンダリングを要求し、続いて高品質のレンダリングを要求します。したがって、エフェクトは同じ有効時間に対して 2 つのリクエストを受信する可能性があります。1 つは低解像度、低ビット深度で、もう 1 つはフル解像度、フルビット深度で行われます。各レンダリングに要求される解像度には、ソース モニターとプログラム モニターで設定された再生解像度と一時停止解像度が考慮されます。最初のリクエストは再生解像度で、2 番目のリクエストは一時停止解像度になります。
また、Premiere は投機的レンダリングを実行して、タイムライン内で先行する一連のフレームをレンダリングします。これにより、エディターが再生を開始した場合、最初のフレームの準備が整います。これは、タイム ニードルの位置を変更するとき、またはエフェクト パラメータを変更するときに、Premiere は現在の時間よりも前に一連のフレームをレンダリングするようにエフェクトに要求することを意味します。フレームが以前にレンダリングされてキャッシュされている場合、キャッシュされたフレームが使用されるため、エフェクトではこれらのレンダリング リクエストは認識されません。
Premiere ネイティブのピクセル形式でフレームをレンダリングする場合、Premiere はフレームごとではなくフィールドごとに PF_Cmd_RENDER を 1 回送信します。。 PF_InData->field はどのフィールドがレンダリングされているかを示し、PF_LayerDef->height はフレームの高さの半分、PF_LayerDef->rowbytes は通常の値の 2 倍になります。
レンダリング順序
Section titled “レンダリング順序”Premiere Pro は、可能な限りエフェクトを使用して映像をリアルタイムに再生できるように構築されています。レンダリングのスケジュール設定はより積極的であり、マルチスレッド レンダリングが基本要件です。これは、ユーザーがエフェクトのレイヤーを重ねてレイヤーを構築し、RAM プレビューを待つことを好む After Effects とはまったく異なります。
Premiere のマルチスレッド レンダリングは AE エフェクトにも適用されます。 AE エフェクトをレンダリングする場合、Premiere からのリクエストは、任意のデータに関連するコマンドを除くすべてのコマンドに使用されるクリティカル セクションを通過します。クリティカル セクションは、2 つのスレッドがエフェクトの同じインスタンスを同時に呼び出すことを防ぎます。ただし、Premiere はエフェクトの複数のインスタンスを作成し、別のスレッドから同時に呼び出すことができます。
したがって、エフェクトは時間の増加順にレンダリング リクエストを受信することを期待すべきではありません。また、効果は静的な非定数変数に依存すべきではありません。
フレーム寸法
Section titled “フレーム寸法”ソース映像とプロジェクト/構成の間の相違点は、異なる方法で処理されます。
たとえば、CS4 では、NTSC クリップを PAL シーケンスでインポートする場合、PF_InData>width,height は (598,480)、PF_InData->pixel_aspect_ratio は (768,702) になります。
AE では、width,height は (720,480)、pixel_aspect_ratio は (10,11) です。
PF_InData
Section titled “PF_InData”Premiere Pro は、After Effects とは異なるフィールドレンダリングを処理します。フィールドのレンダリング中、PF_InData>field は、PF_OutFlag_PIX_INDEPENDENT フラグが設定されているかどうかを無視して、レンダリングされている現在のフィールドを提供します。
Premiere Pro では、エフェクトは PF_InData>quality のモニター ウィンドウの品質設定を受け取ります。これは、ソース レイヤーの品質設定がここで提供される After Effects とは異なります。
パラメータ UI
Section titled “パラメータ UI”Premiere Pro は PF_ParamFlag_START_COLLAPSED フラグを尊重しません。パラメータは常に折りたたまれた状態で初期化され、パラメータ監視によって自動的に回転して開くことはできません。
Premiere Pro は、指数を定義できるマクロ PF_ADD_FLOAT_EXPONENTIAL_SLIDER() をサポートしています。このマクロは CC 2015 リリース 2 SDK に新たに追加されましたが、Premiere Pro ではしばらくの間、高速カラー コレクターの入力グレー レベル パラメーターでこれを使用してきました。指数は 0.10 ~ 10 の範囲ですが、1.0 がスライダーのほぼ中央になるように使用されます。使用した指数は 2.5 です。一般的な値は 0.01 ~ 100 です。CC 2015 以降、エフェクトが PF_OutFlag_NON_PARAM_VARY に設定されていない限り、タイム針が移動しキーフレームがない場合、エフェクトは PF_Cmd_UPDATE_PARAMS_UI または PF_Event_DRAW に送信されません。エフェクトコントロールパネルでヒストグラムを描画するエフェクトなどは、この最適化を認識する必要があります。
スイートがありません
Section titled “スイートがありません”After Effects でサポートされているスイートの多くは、Premiere Pro ホストには実装されていません。場合によっては、Premiere Pro にスイートがない場合でも、同等のマクロ機能を使用できます。以下にいくつかの例を示します。
| After Effects スイートの呼び出し | Premiere Pro同等機能 |
|---|---|
WorldTransformSuite1()->copy() | PF_COPY() |
WorldTransformSuite1()->convolve() | in_data->utils->convolve() |
FillMatteSuite2()->fill() | PF_FILL() |
PF_PixelDataSuite1->get_pixel_data8() | PF_GET_PIXEL_DATA8() |
サンプル プロジェクトでは、ホスト アプリケーションとバージョンを確認することで、不足しているスイートを処理する別の方法を示します。ポータブル サンプル プロジェクトは、ホスト アプリケーションとバージョン チェックの両方を示します。
Premiere Pro で実行される AE エフェクトのための特別なスイート
Section titled “Premiere Pro で実行される AE エフェクトのための特別なスイート”Premiere Pro では AEGP コールはサポートされていません。ただし、ヘッダー PrSDKAESupport.h には興味深い類似点がいくつかあります。たとえば、そのヘッダーのユーティリティ スイートを使用して、ソース フッテージのフレーム レートやフィールド タイプを取得したり、クリップに適用される速度を取得したりできます。
Premiere Pro SDK の他のスイートは AE エフェクトでは使用できないことに注意してください。