コーデック DLO の構成
このトピックでは、コーデック DLO を構成するプロセスについて説明します。 各コーデックには特定の手順がありますが、すべてに共通する情報については、ここで説明します。
DMO 入力と出力の構成
すべての DMO では、特定の入力と出力の種類がサポートされます。 入力に対して IMediaObject::GetInputType を呼び出し、出力に IMediaObject::GetOutputType を呼び出すことで、入力と出力でサポートされている型 を 取得できます。 サポートされている形式を列挙するには、いずれかのメソッドを繰り返し呼び出し、各呼び出しで型インデックスをインクリメントします。 インデックスが最終的にサポートされている型のインデックスを超えると、呼び出しはDMO_E_NO_MORE_ITEMSを返します。
ビデオ コーデックの場合、特定のメディア サブタイプに対して列挙される出力の種類または入力の種類は 1 つだけです。 オーディオ コーデックの場合、サポートされている各種類が列挙されます。 個々のコーデックでサポートされている種類の詳細については、「 オーディオの操作 」と「 ビデオの操作」を参照してください。
入力ストリームと出力ストリームのメディアの種類を構成した後、 それぞれ IMediaObject::SetInputType と IMediaObject::SetOutputType を呼び出して設定します。 指定した型が無効な場合、これらのメソッドはどちらも DMO_E_TYPE_NOT_ACCEPTED を返します。
エンコード用のコーデック DNO の構成
Windows Media Audio および Video コーデックはすべて、さまざまなエンコード機能をサポートしています。 これらの機能は、通常、 IPropertyBag インターフェイスの メソッドを使用して DMO のプロパティを設定することによって構成されます。 一部のプロパティは、特殊化されたコーデック インターフェイスを使用して構成されます。 これらのインターフェイスは、コーデック オブジェクトに関するセクションでコーデックごとに一覧表示されます。
エンコード DMO を構成するための操作の一般的な順序は次のとおりです。
- IPropertyBag のメソッドを使用して、必要に応じてコーデック機能を構成します。
- 必要に応じて、コーデック DMO インターフェイスを使用して追加機能を構成します。
- 入力と出力の種類を構成します。 種類を構成する順序は、個々のコーデックによって異なります。 詳細については、「 オーディオの操作 」と「 ビデオの操作」を参照してください。
デコード用のコーデック DNO の構成
デコードは、サポートされているデコーダー機能が少ないため、エンコードよりも簡単です。
デコード DMO を構成するための操作の一般的な順序は次のとおりです。
- IPropertyBag のメソッドを使用して、必要に応じてデコーダー機能を構成します。
- 入力の種類をエンコーダー出力に使用する型に設定します。
- 出力の種類を構成します。 サポートされている出力の種類は、入力ごとに異なります。
注意
デコーダー入力には、エンコーダー出力に使用されたものと同じメディアの種類を使用することが重要です。 これは、Windows Media Audio コーデックと Video コーデックでは、追加のデータと共にメディア形式が使用されるためです。 このデータは、DMO_MEDIA_TYPE構造体の pbFormat メンバーが指す構造体 (通常は VIDEOINFOHEADER または WAVEFORMATEX) に追加されます。 一部の種類では、追加のデータは列挙エンコーダー出力の種類の一部です。 その他の型では、このデータを手動で追加する必要があります。 拡張形式データがないと、圧縮されたコンテンツをデコードできません。
関連トピック