データの入力と出力

[このページWindows メディア プレーヤー SDK に関連付けられている機能は、レガシ機能です。 MediaPlayer に置き換わりました。 MediaPlayer は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能な場合は SDK ではなく MediaPlayerWindows メディア プレーヤー使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

Windows メディア プレーヤーは、Windows メディア プレーヤーによって割り当てられた入力バッファーを介して DSP プラグインにオーディオまたはビデオ データを提供します。 DSP プラグインは、Windows メディア プレーヤーによっても割り当てられる出力バッファーを介して処理されたデータをWindows メディア プレーヤーに戻します。 Windows メディア プレーヤーは、プラグインによって実装されたメソッドを呼び出すことによって、それ自体と DSP プラグインの間でデータを渡すプロセスを管理します。 DirectX Media Object (DMO) として機能するプラグインの場合、このプロセスは次のように機能します。

  1. Windows メディア プレーヤーは IMediaObject::P rocessInput を呼び出し、IMediaBuffer オブジェクトへのポインターを DSP プラグインに渡します。
  2. DSP プラグインは、入力バッファー・オブジェクトの参照カウントを保持します。 DSP プラグインは、適切な成功または失敗 HRESULT を返します。
  3. Windows メディア プレーヤーは IMediaObject::P rocessOutput を呼び出し、(出力バッファーを含む) DMO_OUTPUT_DATA_BUFFER構造体の配列へのポインターを DSP プラグインに渡します。
  4. DSP プラグインは、入力バッファー内のデータを処理し、そのデータを適切な出力バッファーにコピーします。 DSP プラグインは、バッファー内のすべてのデータが処理されると、入力バッファー・オブジェクトの参照カウントを解放します。 その後、DSP プラグインは適切な成功または失敗 HRESULT を返します。
  5. Windows メディア プレーヤーは、出力バッファー内のコンテンツをレンダリングします。

Media Foundation Transform (MFT) として機能するプラグインの場合、このプロセスは次のように機能します。

  • Windows メディア プレーヤーは IMFTransform::P rocessInput を呼び出し、IMFSample インターフェイス オブジェクトへのポインターを DSP プラグインに渡します。
    1. DSP プラグインは、 IMFSample インターフェイスの参照カウントを保持します。 DSP プラグインは、適切な成功または失敗 HRESULT を返します。
    2. Windows メディア プレーヤーは IMFTransform::P rocessOutput を呼び出し、(出力バッファーを含む) MFT_OUTPUT_DATA_BUFFER構造体の配列へのポインターを DSP プラグインに渡します。
    3. DSP プラグインは、入力バッファー内のデータを処理し、そのデータを適切な出力バッファーにコピーします。 DSP プラグインは、バッファー内のすべてのデータが処理されると、入力バッファー・オブジェクトの参照カウントを解放します。 その後、DSP プラグインは適切な成功または失敗 HRESULT を返します。
    4. Windows メディア プレーヤーは、出力バッファー内のコンテンツをレンダリングします。

このプロセスは、プラグインが有効になっており、Windows メディア プレーヤーにレンダリングするコンテンツがある間、継続的に繰り返されます。

注意

入力バッファーにデータを書き込むコードや、出力バッファーからデータを読み取るコードは記述しないでください。 データ バッファーに誤ってアクセスすると、予期しない結果が発生する可能性があります。

 

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