Microsoft DirectX 8.0

DirectX Media Object の概要

Microsoft® DirectX® Media Object (DMO) は、データ ストリーミング コンポーネントを作成するための新しい手段である。DMO と Microsoft® DirectShow® フィルタにはいくつかの共通点がある。DirectShow フィルタと同様に、DMO も入力データを受け取り、それを使って出力データを生成する。ただし、DMO のアプリケーション プログラミング インターフェイス (API) は、DirectShow の同等の API よりずっと単純である。したがって、DMO は、より簡単に作成でき、テストでき、使用できる。

DMO は DirectShow と完全な互換性を持っているが、アプリケーションは DirectShow を使わずに DMO を使用できる。 DMO は、DirectShow アプリケーションの内部で DMO ラッパー フィルタという DirectShow フィルタによってラップされる。フィルタと DMO の区別はアプリケーションに対しては透過的であり、アプリケーションが DMO API を使う必要はない。一方、DirectShow に基づいていないアプリケーションは、DMO を直接使用できる。したがって、DMO を作成すれば、広範囲のアプリケーションで使用できるコンポーネントを作成できる。

DMO と DirectShow フィルタの違い

DirectShow フィルタは DirectShow フィルタ グラフ内でのみ機能する。フィルタ グラフ マネージャがアプリケーションとグラフ内のフィルタを仲介する。DMO ではその必要がない。アプリケーションは単独で DMO を使用できる。

DirectShow では、フィルタが、データのストリーミングに必要な大半の作業を実行する。その作業は以下のとおりである。

これと対照的に、DMO はこれらの作業をまったく行わない。この種の作業を実行する役割は、DMO を使用するクライアントが担う。クライアントは、バッファを割り当て、割り当てたバッファにデータを格納する。その後、クライアントはバッファを DMO に配布し、DMO はそれを処理する。クライアントは出力バッファを取り出す。

DirectShow の内部では DMO ラッパー フィルタが DMO のクライアントであるため、DMO ラッパー フィルタがこれらすべての作業を処理する。ほかのアプリケーションは、独自の実装を提供できる。

DMO を使う理由

DMO の利点

これらの理由により、できる限り、DirectShow フィルタより DMO を実装した方がよい。ただし、たとえば以下のように DMO が適していない状況もある。

DMO テスト アプリケーション

DirectX 8.0 SDK には、DMOTest という名前の DMO テスト アプリケーションが含まれている。このテスト アプリケーションは、DMO が DMO 仕様に一致しているかどうかを検証する手助けになる。このアプリケーションは、SDK ルート ディレクトリ以下の Bin\DXUtils ディレクトリにインストールされている。DMO を開発する場合は、テストの一部として DMO テスト アプリケーションを含める必要がある。

DMOTest を使うためには、DMO 用のテスト データを生成しなければならない。SDK には、そのために DirectShow フィルタが含まれている。このフィルタは、DLL ファイル DMODump.dll に存在する。また、Regsvr32 ユーティリティを使って登録する必要がある。

テスト アプリケーションの詳細は、DMOTest アプリケーションのヘルプに説明されている。アプリケーションで、[Help] メニューの [Contents] をクリックする。このヘルプには、テスト データの生成とテスト アプリケーションの実行に関する詳細な指示が含まれている。