ソース リーダー

ソース リーダーは、 メディア セッション と Microsoft Media Foundation パイプラインを使用してメディア データを処理する代替手段です。

ソース リーダーを使用する理由

Media Foundation は、再生用に最適化されたパイプラインを提供します。 パイプラインはエンド ツー エンドです。つまり、ソース (ビデオ ファイルなど) から宛先 (グラフィックス表示など) までのデータ フローを処理します。 ただし、パイプラインを通過する際にデータの読み取りまたは変更を行う場合は、カスタム プラグインを記述する必要があります。 これには、Media Foundation パイプラインに関するかなり深い知識が必要です。 特定のタスクでは、新しいプラグインを作成するとオーバーヘッドが大きすぎます。 ソース リーダーは、パイプライン全体のオーバーヘッドなしでソースから生データを取得する場合に、この種の状況に合わせて設計されています。

内部的には、ソース リーダーはメディア ソースへのポインターを保持します。 メディア ソースは、メディア ファイルやビデオ キャプチャ デバイスなどの外部ソースからメディア データを生成する Media Foundation オブジェクトです。 ソース リーダーは、メディア ソースに対するすべてのメソッド呼び出しを管理します。 (メディア ソースの詳細については、「 メディア ソース」を参照してください)。

メディア ソースが圧縮データを配信する場合は、ソース リーダーを使用してデータをデコードできます。 その場合、ソース リーダーは正しいデコーダーを読み込み、メディア ソースとデコーダーの間のデータ フローを管理します。 ソース リーダーは、YUV から RGB-32 へのカラー変換、ソフトウェアのインターレース解除など、いくつかの制限付きビデオ処理を実行することもできますが、これらの操作はリアルタイムビデオレンダリングには推奨されません。 次の図は、このプロセスを示しています。

diagram of the source reader

ソース リーダーは、データを宛先に送信しません。データを使用するのはアプリケーションによって行われます。 たとえば、ソース リーダーはビデオ ファイルを読み取ることができますが、ビデオは画面にレンダリングされません。 また、ソース リーダーは、プレゼンテーション クロックの管理、タイミングの問題の処理、ビデオとオーディオの同期を行いません。

次の場合は、ソース リーダーの使用を検討してください。

  • 基になるファイル構造を気にせずに、メディア ファイルからデータを取得する必要があります。
  • オーディオまたはビデオ キャプチャ デバイスからデータを取得する場合。
  • データ処理タスクは時間の影響を受けず、プレゼンテーション クロックは必要ありません。
  • Media Foundation に基づいていないメディア パイプラインが既にあり、Media Foundation メディア ソースを独自のパイプラインに組み込みたいと考えています。

ソース リーダーは、次の状況では推奨されません。

  • 保護されたコンテンツの場合。 ソース リーダーは、デジタル著作権管理 (DRM) をサポートしていません。
  • 基になるファイル構造の詳細を気にする場合。 ソース リーダーは、その種類の詳細を非表示にします。

このセクションの内容

トピック 説明
ソース リーダーを使用したメディア データの処理
このトピックでは、ソース リーダーを使用してメディア データを処理する方法について説明します。
非同期モードでのソース リーダーの使用
このトピックでは、非同期モードでソース リーダーを使用する方法について説明します。
チュートリアル: オーディオのデコード
このチュートリアルでは、ソース リーダーを使用してメディア ファイルからオーディオをデコードし、WAVE ファイルにオーディオを書き込む方法について説明します。

 

メディア ファンデーションのアーキテクチャ

Media Foundation プログラミング ガイド

IMFSourceReader