Microsoft DirectX 8.0 |
このサンプルは Microsoft® DirectShow® ガーグル フィルタ サンプルと同じガーグル エフェクトを生成する Microsoft® DirectX® Media Object (DMO) のサンプルである。
このサンプルは次のインターフェイスの実装方法をデモンストレーションする :
ソース: (SDK ルート)\Samples\Multimedia\DirectShow\DMO\GargleDMO
この DMO を使うには、Gargle.dll をビルドし登録すること。サンプル プロジェクトはいくつかの内部ライブラリをビルドする。Microsoft® Visual Studio® で DLL をビルドするには、[ビルド] メニューから [バッチ ビルド] を選択すること。
DMO デモ サンプルアプリケーションの DMO を使うことができる、あるいは DirectShow GraphEdit ユーティリティを使って DMO を使うこともできる。GraphEdit は自動的に DMO を DMO ラッパー フィルタでラップする。
SDK に入っている Microsoft® DirectMusic® Producer アプリケーションを含む Microsoft® DirectMusic® アプリケーションで DMO を使うこともできる。DirectMusic Producer では、Audiopath デザイナを使って DMO をオーディオパスに挿入する。メディア パラメータをコントロールするには、Parameter Control トラックを使う。トラックにカーブを挿入し、それをアサインして DMO の任意のパラメータをコントロールする。詳細は、DirectMusic Producer アプリケーション ヘルプの Audiopath Designer と Parameter Control Track を参照すること。
ガーグル DMO は操作している波形の形状 (矩形波あるいは三角波) と周波数をユーザーが設定する。それらのプロパティを設定するカスタム インターフェイス IGargleDMOSample をもサポートする。
ガーグル DMO サンプルは Active Template Library (ATL) でビルドされる。ソース コードは 3 つのライブラリに整理されている :
ControlBase ライブラリ
- Controlhelp.h, Controlhelp.cpp: ユーザー インターフェイス コントロール用のヘルパー ライブラリ、プロパティページによって使用される。
GargleDMO ライブラリ
- Gargle.h, Gargle.cpp: ガーグル DMO の実装、IMediaObjectInPlace インターフェイスとカスタム IGargleDMOSample インターフェイスを含む。
- GargleDMO.cpp: DllGetClassObject のような COM ライブラリに必要な DLL エントリ ポイント関数と DLL 関数。
- GargleDMO.def: COM ライブラリに必要な DLL 関数を公開。
- GargleDMOProp.h, GargleDMOProp.cpp: プロパティ ページの実装。プロパティ ページは ATL の IPropertyPageImpl クラス テンプレートを使用する。
- IGargle.h: IGargleDMOSample インターフェイスを宣言する。
- Resource.h: リソース定数。
- Stdafx.h, Stdafx.cpp: ATL が要求する基本関数。
MedParamBase ライブラリ
- Alist.h, Alist.cpp: 単純なリンク リスト クラス。
- Param.h, Param.cpp: CParamsManager クラスが入る、これはメディア パラメータの IMediaParams インターフェイスと IMediaParamInfo インターフェイスを実装する。
ガーグル DMO は IMediaObjectImpl 基底クラスを使わない。IMediaObjectImpl が置き換わった古い DMO 基底クラスを使う。
IMediaObjectImpl クラスでは次の改善がされている :
将来のリリースでは、ガーグル DMO は IMediaObjectImpl を使って書き直される。