Media Foundation アーキテクチャの概要
このトピックでは、Microsoft Media Foundation の一般的な設計について説明します。 特定のプログラミング タスクに Media Foundation を使用する方法については、「 Media Foundation プログラミング ガイド」を参照してください。
次の図は、Media Foundation アーキテクチャの概要を示しています。
Media Foundation には、2 つの異なるプログラミング モデルが用意されています。 図の左側に表示される最初のモデルでは、メディア データにエンドツーエンドのパイプラインが使用されます。 アプリケーションは、たとえば再生するファイルの URL を指定してパイプラインを初期化し、メソッドを呼び出してストリーミングを制御します。 図の右側に示されている 2 番目のモデルでは、アプリケーションはソースからデータをプルするか、コピー先 (またはその両方) にプッシュします。 このモデルは、アプリケーションがデータ ストリームに直接アクセスできるため、データを処理する必要がある場合に特に便利です。
プリミティブとプラットフォーム
図の下部から、 プリミティブ は Media Foundation API 全体で使用されるヘルパー オブジェクトです。
- 属性 は、キーと値のペアのリストとして、オブジェクト内に情報を格納する一般的な方法です。
- メディアの種類 は、メディア データ ストリームの形式を表します。
- メディア バッファー は、ビデオ フレームやオーディオ サンプルなどのメディア データのチャンクを保持し、オブジェクト間でデータを転送するために使用されます。
- メディア サンプル は、メディア バッファー用のコンテナーです。 また、タイム スタンプなどのバッファーに関するメタデータも含まれます。
Media Foundation Platform API には、非同期コールバックや作業キューなど、Media Foundation パイプラインで使用されるコア機能がいくつか用意されています。 特定のアプリケーションでは、これらの API を直接呼び出す必要がある場合があります。また、Media Foundation 用のカスタム ソース、変換、またはシンクを実装する場合は、それらを必要とします。
メディア パイプライン
メディア パイプラインには、メディア データを生成または処理する 3 種類のオブジェクトが含まれています。
- メディア ソースは、 パイプラインにデータを導入します。 メディア ソースは、ビデオ ファイルなどのローカル ファイルからデータを取得する場合があります。ネットワーク ストリームから。またはハードウェア キャプチャ デバイスから。
- Media Foundation Transforms (MFT) は、ストリームからのデータを処理します。 エンコーダーとデコーダーは、MFT として実装されます。
- メディア シンクは データを使用します。たとえば、ディスプレイにビデオを表示したり、オーディオを再生したり、メディア ファイルにデータを書き込んだりします。
サード パーティは、独自のカスタム ソース、シンク、および MFT を実装できます。たとえば、新しいメディア ファイル形式をサポートするためです。
メディア セッションは、パイプラインを介したデータフローを制御し、品質管理、オーディオ/ビデオ同期、フォーマット変更への応答などのタスクを処理します。
ソース リーダーとシンク ライター
ソース リーダーとシンク ライターは、基本的な Media Foundation コンポーネント (メディア ソース、変換、メディア シンク) を使用する別の方法を提供します。 ソース リーダーはメディア ソースと 0 個以上のデコーダーをホストし、シンク ライターはメディア シンクと 0 個以上のエンコーダーをホストします。 ソース リーダーを使用して、メディア ソースから圧縮または圧縮されていないデータを取得し、シンク ライターを使用してデータをエンコードし、データをメディア シンクに送信できます。
注意
ソース リーダーとシンク ライターは、Windows 7 で使用できます。
このプログラミング モデルにより、アプリケーションはデータフローをより詳細に制御でき、アプリケーションはソースからデータに直接アクセスできます。
関連トピック