カクタスソフトウェア
カクタスソフトウェア
サウンド MIDI マルチメディア アプリケーション

DMOについて

DMO(DirectX Media Object)とはCOMを用いて作成されたストリーミング・オブジェクトです。COM(Component Object Model)はアンマネージ環境でプログラムを部品化し、プログラムの作成や再利用を容易にする技術です。ストリーミング・オブジェクトはパイプのような構造を持ち、データが中を流れる間にデータの編集が行われるプログラムです。

COMで作成されたストリーミング・オブジェクトと言えば、DMOの他にDirectShowで使われるフィルターがあります。

DMO利用の目的

DMOにはオーディオやビデオについて、エンコーダ、デコーダ、エフェクターなど様々な機能を持つものがあります。以下にいくつか関連する項目を紹介します。

本技術文書では主にオーディオ関連のエフェクターを取り上げます。

DMOとDirectShowのフィルター

DMOとDirectShowで使われるフィルターは多くの点で似ています。入力と出力があり、データが中を流れる間にデータが編集されます。しかしフィルターがDirectShowの枠組みの中でしか機能しないのに対し、DMOは単体で動作します。一般的にフィルターが多機能で複雑なインターフェースを持つのに対し、DMOは小型でシンプルなインターフェースを持ちます。

DirectShowはマルチスレッドで動作します。時間の進行を管理したり、スレッド間の同期を取ったりと、複雑な動作を行います。しかしDMOはシングルスレッド環境で用いられ、同期式で動作します。同期式は処理が終わるまで制御が戻りません。そのためマルチスレッドで起こるタイミング合せなどの問題が起こりません。

DMOはフィルター機能をDirectShowの枠組みを使わずに実行できるよう工夫された簡易型フィルターと考えることもできるでしょう。

DMOラッパーフィルター

DMOはDirectShowの中でも使うことができます。DirectShowにDMOラッパーフィルターというDMOを取り込みフィルターとして機能させるラッパーが用意されています。

ラッパーを使ってDMOをDirectShowに組み込んだ場合、DMOの制御はDirectShowが行います。DMOのインターフェースを取得するときは、ラッパーフィルターに問い合わせます。

DMOの使い方

DMOは単体として使う方法と、DirectShowの中に埋め込んで使う方法と、二通りがあります。すでにDirectShowが動作していて、さらにDMOの機能を追加したいときは埋め込み法が良いでしょう。しかしDMOのためだけにDirectShowを使うのはオーバーヘッドが大きいためお勧めではありません。このケースではDMOを単体で用いる方が良いでしょう。

ドキュメントの先頭へ

カクタスソフトウェア 技術協力 資料室 資料室の広場 SourceForge.jp お問い合わせ