Microsoft DirectX 8.0

DirectShow 編集サービスの基本概念

ここには、以下のトピックが含まれる。

アーキテクチャ

次の図は、Microsoft® DirectShow® 編集サービス (DES) のアーキテクチャを示している。

DirectShow 編集サービスのアーキテクチャ

DES および DirectShow コア API

DirectShow は、フィルタと呼ばれるモジュラー コンポーネントを通してマルチメディア データのストリームを制御する。フィルタは、メディア ストリームを入力とし、それに対して何らかの処理を行い、結果を出力として渡すコンポーネントである。フィルタは、複数のストリームを結合すること、および 1 つのストリームを複数の出力ストリームへ分割することもできる。フィルタ グラフは、チェイニングされたフィルタのコレクションである。ソース フィルタは、ソース ファイルからメディア データを取り込み、それをフィルタ グラフに導入する。レンダリング フィルタは、ストリームを、ビデオやオーディオなどの最終出力のタイプとしてレンダリングする。メディア ストリームは、ソース フィルタから、通常は他のフィルタを経由してレンダリング フィルタに流れる。

DES におけるタイムラインは、ビデオ編集プロジェクトの抽象表現である。これは、プロジェクトで使用されるソース クリップ、その開始タイムと終了タイム、エフェクトとトランジションの配置などを指定する。ただし、タイムライン自体は、表現されるビデオおよびオーディオをレンダリングすることはできない。それは、レンダリング エンジンの機能である。レンダリング エンジンは、タイムラインをフィルタ グラフに変換する。フィルタ グラフを実行すると、プロジェクトがプレビューとして画面に直接レンダリングされるか、ファイルへの出力としてレンダリングされる。アプリケーションでは、扱いにくくエラーの出やすいフィルタ グラフを直接操作するのではなく、タイムラインを操作する。

代表的なアプリケーションの構造

下の表は、一般的なビデオ編集アプリケーションで行われる主要なタスクと、各タスクをサポートする DES インターフェイスの一覧である。以降のセクションで、これらのタスクとインターフェイスについて詳しく説明する。

タスクインターフェイス
タイムラインの構築または変更IAMTimeline および他の IAMTimelineXXXX インターフェイス
プロジェクト ファイルの保存とロードIXml2Dex
プロジェクトのプレビューまたはファイルへの書き込みIRenderEngineISmartRenderEngine

この主要タスクのほかに、アプリケーションでは以下の 2 次的なタスクのいくつかまたは全部を行う場合がある。

タスクインターフェイス
メディア ファイルに関する情報の取得 (ストリームの数、各ストリームのフォーマットと時間幅)IMediaDet
トランジションとエフェクトのプロパティの設定IPropertySetter
レンダリング中にエラーが発生した場合の通知の受信IAMSetErrorLogIAMErrorLog
ポスター フレームの抽出IMediaDetISampleGrabber