Apple Silicon対応
アドビは、Apple Silicon 上でネイティブに実行される一部の製品で Apple Silicon エフェクトプラグインをサポートするようになりました。たとえば、After Effects エフェクトプラグインは、Adobe Premiere Pro や Adobe Media Encoder でも利用できます。
すべての Adobe 製品にネイティブ Apple Silicon バージョンがまだあるわけではありませんが、ネイティブ Apple Silicon バージョンがある製品では、Apple Silicon 実装を備えたエフェクトプラグインのみが利用可能になります。これらの新しい M1 マシンの急速な普及を見越して、Apple Silicon ターゲットをすぐに追加することをお勧めします。
ユニバーサル バイナリの詳細については、https://developer.apple.com/documentation/apple-silicon/building-a-universal-macos-binary をご覧ください。
デバッグのために macOS 15 以降にプラグインをロードするには、追加の署名手順も必要です。詳細については、here を参照してください。
プラグインにユニバーサル バイナリ サポートを追加する方法
Section titled “プラグインにユニバーサル バイナリ サポートを追加する方法”-
12.2 以降でプラグイン Xcode プロジェクトを開くと、Xcode が自動的に Apple Silicon ターゲットを追加します。
Mac ユニバーサル ビルド -
After Effects に Apple Silicon ビルドの主なエントリ ポイントを伝えます。
- プラグインの .r リソース ファイルを見つけます。
- 既存の Intel Mac エントリ ポイント定義の横に
CodeMacARM64 {"EffectMain"}を追加します。 「cpp」 #定義されている場合(AE_OS_MAC) CodeMacARM64 {“EffectMain”}, CodeMacIntel64 {“EffectMain”}, #endif 「」 - 何らかの理由で、x64 と ARM で異なるエントリ ポイントが必要な場合は、異なるエントリ ポイント名と文字列を指定するだけです。
-
Any Mac (Apple Silicon、Intel) ターゲット用にビルドするか、[製品] -> [アーカイブ] を使用して、ユニバーサル バイナリをコンパイルします。
Apple Silicon ビルドにコンパイル時間の問題がないと仮定すると、Intel アプリケーションと Apple Silicon アプリケーションの両方に単一のユニバーサル バイナリを使用できるようになります。
「C」関数全体での Apple Silicon の例外動作
Section titled “「C」関数全体での Apple Silicon の例外動作”Apple Silicon で例外を使用する場合は、特に注意する必要があります。多くの環境では、従来の「C」関数を介して伝播する例外のスローは正常に機能しました。これは未定義の動作を伴う悪い習慣でしたが、一般的には「機能しました」。
Apple Silicon では、未定義の動作ではなく ABI が変更されているため、これが発生すると terminate() が呼び出されます。
プラグインのメイン エントリ ポイントは常に extern “C” 呼び出し規約であるため、プログラムの終了を防ぐために、このコードを try/catch ブロックでラップする必要があります。例えば:
PF_Err EffectMain ( PF_Cmd cmd, PF_InData *in_data, PF_OutData *out_data, PF_ParamDef *params[], PF_LayerDef *output ){ try { /* Your code here */ } catch { /* return most appropriate PF_Err */ }}