0

コンピューターに現在インストールされている DMO フィルターを列挙する方法を知っている人がここにいるかどうか疑問に思っていましたか? 現在インストールされているすべての DMO フィルターを列挙するアプリケーションを作成したいと考えています。

GraphEditとGraphStudioが次にそれを行うので、これが可能であることを私は知っています。

これが必要な理由は、毎日さまざまな種類の独自の (CCTV) ビデオを受け取る会社で働いているからです。多くの場合、ビデオを送ってくれる人はあまり技術的な人ではないので、現在インストールされているすべてのプログラムと DirectShow フィルター (「InstalledCodec」を使用) をエクスポートするアプリを彼に送り、それらを私たちのプログラムが処理に使用するものと比較します。そのビデオを彼のコンピューターに保存して、自分のコンピューターでコーデックを見つけて映画を処理できるようにします。

時々、DMO フィルターを使用して処理されたビデオ (通常は ASF) を受け取りますが、残念ながらそれらを列挙する方法は (まだ) 見つかりませんでした。

ここに誰かがこれにアプローチする方法の手がかりを持っていますか?

よろしくお願いします、-YS

4

1 に答える 1

1

APIDMOEnum関数はまさにこれを行います。

DMOEnum 関数は、レジストリにリストされている DMO を列挙します。発信者は、カテゴリ、メディア タイプ、またはその両方で検索できます。

これに追加するために、Windows SDK にDMOEnum サンプルがあります。

このサンプル アプリケーションは、ユーザーのシステムに登録されているすべての DirectX メディア オブジェクト (DMO) を列挙し、それらに関する情報を表示します。

このサンプルでは、​​DMOEnum 関数と IEnumDMO インターフェイスを使用して DMO を列挙します。IMediaObject インターフェイスとその他の DMO インターフェイスを使用して、各 DMO に関する情報を取得します。

DirectShow からアクセスできる DMO のみが必要な場合は、System Device Enumeratorを列挙用の DMO カテゴリ GUID と共に使用できます。

// 57f2db8b-e6bb-4513-9d43-dcd2a6593125
DEFINE_GUID(DMOCATEGORY_AUDIO_DECODER, 0x57f2db8b,0xe6bb,0x4513,0x9d,0x43,0xdc,0xd2,0xa6,0x59,0x31,0x25);
// 33D9A761-90C8-11d0-BD43-00A0C911CE86
DEFINE_GUID(DMOCATEGORY_AUDIO_ENCODER, 0x33D9A761,0x90C8,0x11d0,0xBD,0x43,0x00,0xA0,0xC9,0x11,0xCE,0x86);
// 4a69b442-28be-4991-969c-b500adf5d8a8
DEFINE_GUID(DMOCATEGORY_VIDEO_DECODER, 0x4a69b442,0x28be,0x4991,0x96,0x9c,0xb5,0x00,0xad,0xf5,0xd8,0xa8);
// 33D9A760-90C8-11d0-BD43-00A0C911CE86
DEFINE_GUID(DMOCATEGORY_VIDEO_ENCODER, 0x33D9A760,0x90C8,0x11d0,0xBD,0x43,0x00,0xA0,0xC9,0x11,0xCE,0x86);
// f3602b3f-0592-48df-a4cd-674721e7ebeb
DEFINE_GUID(DMOCATEGORY_AUDIO_EFFECT, 0xf3602b3f,0x0592,0x48df,0xa4,0xcd,0x67,0x47,0x21,0xe7,0xeb,0xeb);
// d990ee14-776c-4723-be46-3da2f56f10b9
DEFINE_GUID(DMOCATEGORY_VIDEO_EFFECT, 0xd990ee14,0x776c,0x4723,0xbe,0x46,0x3d,0xa2,0xf5,0x6f,0x10,0xb9);
// f665aaba-3e09-4920-aa5f-219811148f09
DEFINE_GUID(DMOCATEGORY_AUDIO_CAPTURE_EFFECT, 0xf665aaba,0x3e09,0x4920,0xaa,0x5f,0x21,0x98,0x11,0x14,0x8f,0x09);
于 2013-06-26T07:38:53.093 に答える