既存の DSP プラグインの更新

Windows Media Player 11 SDK のリリース前に作成された DSP プラグインは、Windows Vista で実行されている Windows Media Player 11 では期待した通り動作しない可能性があります。 Windows Vista で Windows Media Player 11 を実行しているお客様がプラグインを使用するには、DSP プラグイン コードにいくつかの変更を加え、プロジェクトを再コンパイルし、更新されたプラグインを顧客に配布する必要があります。

プラグイン ウィザードの最新バージョンを使用Windows Media Playerプロジェクトには、必要な更新プログラムが含まれています。 11 の詳細については、「DSP プラグイン ウィザードの更新Windows Media Player参照してください。 (ウィザードを実行して新しいサンプル プロジェクトを作成した後、Visual Studio に付属する Windiff.exe のようなツールを使用して、サンプル コードと実稼働コードの違いを確認する方法をお考えください)。

既存の DSP プラグインには、主に 3 つの変更を加える必要があります。

  • プラグインの登録方法を変更します。 既存のプラグインでは、スレッド モデルが "アパートメント" として登録されている可能性があります。 Windows Media Player Vista で実行Windows 11 では、DSP プラグインがスレッド モデルを "Both" として登録する必要があります。 これを修正するには、プロジェクト名 .rgs ファイルのスレッド モデルの値を次のように変更します。

    val ThreadingModel = s 'Both'
    
    

    注意

    スレッド モデルを "Both" に指定すると、COM がカスタム インターフェイスの呼び出しに提供するシリアル化が削除されます。 複数のスレッドからカスタム インターフェイスを呼び出す場合は、このシリアル化を自分で指定する必要があります。

    Windows Media Player 11 では、インターフェイスへの呼び出しDMO適切にシリアル化されます。

    1. 新しいプラグインの種類を使用して 、IWMPMediaPluginRegistair::WMPRegisterPlayerPlugin と IWMPMediaPluginRegisterPlugin::WMPUnRegisterPlayerPlugin への呼び出しを追加します _ 。DllRegisterServer の WMP PLUGINTYPE DSP _ _ OUTOFPROC、プロジェクト名 dll.cpp ファイル内の DllUnregisterServer。 詳細については、これらのメソッドのリファレンス ページを参照してください。
    2. プロキシ/スタブ DLL を作成して配布し、プラグイン クラスで実装または作成されたカスタム インターフェイスの COM マーシャリングを有効にします。 カスタム インターフェイスは、プラグイン オブジェクトで使用するために定義および実装する独自のインターフェイスです。 これには、プロパティ ページで使用されるカスタム インターフェイス (指定した場合) が含まれますが、たとえば UI プラグインに接続するインターフェイスも含まれる場合があります。 プラグイン ウィザードによって作成されるカスタム インターフェイスの例として 、Iprojectname があります。 カスタム インターフェイスではないインターフェイスの例としては 、IMediaObjectIWMPPluginEnable があります。

DSP プラグインがオーディオを処理する場合は、次の新しいオーディオ形式のサポートも追加する必要があります。

  • WAVE _ 形式 _ IEEE _ FLOAT
  • WAVE _ FORMAT _ EXTENSIBLE とサブフォーマット KSDATAFORMAT _ サブタイプ _ IEEE _ FLOAT。

DSP プラグインがビデオを処理する場合は、NV12 ビデオ形式のサポートを追加する必要があります。

これらの形式の種類を処理する方法の例については、ウィザードによって作成されるオーディオまたはビデオの DSP プラグインのサンプルを参照してください。

プロキシ/スタブ のProject

おそらく、DSP プラグイン用のプロキシ/スタブ DLL プロジェクトを作成する最も簡単な方法は、DSP プラグイン ウィザードを実行する方法です。 これにより、既存のコードを使用するために変更できるサンプル プロキシ/スタブ プロジェクトが作成されます。 次の変更を行う必要があります。

  1. カスタム インターフェイスの既存の定義をコードから削除します。 たとえば、Windows Media Player 10 SDK の DSP プラグイン ウィザードでは、interface キーワードを使用して 、projectname.h ファイルに Iprojectname インターフェイス定義 を作成 しました。
  2. プロキシ/スタブ プロジェクトの IDL ファイルでカスタム インターフェイスを定義します。
  3. メイン プロジェクトの前にプロキシ/スタブ プロジェクトをビルドします。 両方のプロジェクトVisual Studio同じソリューションに含まれる場合は、この操作を自動的に行う構成を構成できます。
  4. MIDL コンパイラは 、projectname h.h という形式の名前を持つ新しいヘッダー ファイル _ を作成します。 このヘッダーは、メイン プロジェクト (projectname .h) に 含める必要 があります。 カスタム インターフェイスの定義が含まれている。

更新されたプラグインの配布

更新されたプラグインは、過去とまったく同じ方法でユーザーのコンピューターにインストールできます。 ただし、プロキシ/スタブ DLL も配布して登録する必要があります。

DSP プラグイン開発者の概要