ソース リーダー
ソース リーダーは、メディア セッション と Microsoft Media Foundation パイプラインを使用してメディア データを処理する代わりに使用できます。
ソース リーダーを使用する理由
Media Foundation には、再生用に最適化されたパイプラインが用意されています。 パイプラインはエンドツーエンドです。つまり、ソース (ビデオ ファイルなど) から宛先 (グラフィックス表示など) へのデータ フローを処理します。 ただし、パイプラインを通過する際にデータを読み取ったり変更したりする場合は、カスタム プラグインを記述する必要があります。 これには、Media Foundation パイプラインに関するかなり深い知識が必要です。 特定のタスクでは、新しいプラグインを作成するとオーバーヘッドが大きすぎます。 ソース リーダーは、パイプライン全体のオーバーヘッドなしでソースから生データを取得する場合に、この種の状況に合わせて設計されています。
内部的には、ソース リーダーはメディア ソースへのポインターを保持します。 メディア ソース は、メディア ファイルやビデオ キャプチャ デバイスなどの外部ソースからメディア データを生成する Media Foundation オブジェクトです。 ソース リーダーは、メディア ソースに対するすべてのメソッド呼び出しを管理します。 (メディア ソースの詳細については、「メディア ソース 」を参照してください)。
メディア ソースが圧縮データを配信する場合は、ソース リーダーを使用してデータをデコードできます。 その場合、ソース リーダーは正しいデコーダーを読み込み、メディア ソースとデコーダーの間のデータ フローを管理します。 ソース リーダーは、いくつかの制限付きビデオ処理 (YUV から RGB-32 へのカラー変換、ソフトウェアのインターレース解除) を実行することもできますが、これらの操作はリアルタイムのビデオ レンダリングには推奨されません。 次の図は、このプロセスを示しています。
ソース リーダー図
ソース リーダーは、データを宛先に送信しません。データを使用するのはアプリケーション次第です。 たとえば、ソース リーダーはビデオ ファイルを読み取ることができますが、ビデオは画面にレンダリングされません。 また、ソース リーダーは、プレゼンテーション クロックの管理、タイミングの問題の処理、ビデオとオーディオの同期を行いません。
次の場合は、ソース リーダーの使用を検討してください。
- 基になるファイル構造を気にせずに、メディア ファイルからデータを取得する必要があります。
- オーディオまたはビデオ キャプチャ デバイスからデータを取得する場合。
- データ処理タスクは時間の影響を受けず、プレゼンテーション クロックは必要ありません。
- Media Foundation に基づいていないメディア パイプラインが既にあり、Media Foundation メディア ソースを独自のパイプラインに組み込みたいと考えています。
次の状況では、ソース リーダーは推奨されません。
- 保護されたコンテンツの場合。 ソース リーダーは、デジタル著作権管理 (DRM) をサポートしていません。
- 基になるファイル構造の詳細を気にする場合。 ソース リーダーは、その種類の詳細を非表示にします。
このセクションでは、次の操作を行います。
話題 | 形容 |
---|---|
ソース リーダーを使用したメディア データの処理 の |
このトピックでは、ソース リーダーを使用してメディア データを処理する方法について説明します。 |
非同期モードでのソース リーダーの使用 の |
このトピックでは、非同期モードでソース リーダーを使用する方法について説明します。 |
チュートリアル: オーディオ のデコード |
このチュートリアルでは、ソース リーダーを使用してメディア ファイルからオーディオをデコードし、WAVE ファイルにオーディオを書き込む方法について説明します。 |
関連トピック
-
IMFSourceReaderの