ソースリーダー

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

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

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

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

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

ソースリーダーの図

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

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

  • 基になるファイルの構造を気にせずに、メディアファイルからデータを取得します。
  • オーディオまたはビデオキャプチャデバイスからデータを取得します。
  • データ処理タスクが時間に依存しないか、またはプレゼンテーション時計を必要としていません。
  • メディアファンデーションに基づいていないメディアパイプラインが既にあるため、メディアファンデーションメディアソースを独自のパイプラインに組み込む必要があります。

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

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

このセクションの内容

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

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

メディアファンデーションプログラミングガイド

IMFSourceReader