Windows Media Audio および Video コーデックは COM オブジェクトとして実装されます。 通常、コーデックは、エンコーダー用とデコーダー用の 1 つの COM オブジェクトのペアとして実装されます。 エンコーダーにはクラス識別子 (CLSID) があり、デコーダーには別の CLSID があります。 たとえば、Windows Media Audio 9 コーデックのエンコーダー部分は定数 CLSID_CWMAEncMediaObjectで表される CLSID を持ち、同じコーデックのデコーダー部分は定数 CLSID_CWMADecMediaObjectで表される CLSID を持ちます。
場合によっては、1 つの COM オブジェクトに複数のエンコーダーが含まれます。 たとえば、Windows Media Video 9 エンコーダーと Windows Media Video 9.1 エンコーダーはどちらも同じ COM オブジェクトの一部です。 したがって、両方とも同じ CLSID を持ち、定数 CLSID_CWMV9EncMediaObjectで表されます。 同様に、一部の COM オブジェクトには複数のデコーダーが含まれています。
各エンコーダーまたはデコーダー オブジェクトは、IMediaObject インターフェイスを公開して、オブジェクトを DirectX Media Object (DMO) および IMFTransform インターフェイスとして使用して、オブジェクトを Media Foundation Transform (MFT) として使用できるようにします。
ほとんどのエンコーダーでは、エンコーダーを DMO として使用するか MFT として使用するかに関係なく、同じ CLSID を使用してエンコーダーのインスタンスを作成します。 たとえば、Windows Media Video 9 エンコーダーのインスタンスを作成するには、エンコーダーを DMO として使用するか MFT として使用するかに関係なく、CLSID_CWMV9EncMediaObjectを使用します。 同様に、ほとんどのデコーダーでは、デコーダーを DMO または MFT のいずれとして使用するかに関係なく、各デコーダーには 1 つの CLSID があります。
手記
DMO と MFT の両方に 1 つの CLSID を使用する場合、上記のステートメントにはいくつかの例外があります。 たとえば、MPEG-4 Part 2 デコーダーは、DMO として機能する場合は 1 つの CLSID を持ち、MFT として機能する場合は別の CLSID を持っています。
コア インターフェイスに加えて、各エンコーダーまたはデコーダー オブジェクトは、IPropertyBag と IPropertyStore コーデック プロパティを操作するための 2 つの同様のインターフェイスを実装します。 IPropertyBag 使用されていた古いバージョンのエンコーダーおよびデコーダー オブジェクト。このオブジェクトは、プロパティ名を含む文字列値によって各プロパティを識別します。 IPropertyStore は、一意のプロパティ キー値を持つプロパティを識別する新しいインターフェイスです。 IPropertyStore のサポートが追加され、MFT のサポートが提供されました。 IPropertyBag プロパティ名文字列 の多くは、対応する IPropertyStore プロパティ キー GUID を持ち、ほとんどの GUID には対応する IPropertyBag 名文字列があります。ただし、いくつかの例外があります。
このドキュメントでは、プロパティ キー定数ごとにプロパティを一覧表示しますが、各エントリには、必要に応じて IPropertyBag で使用するプロパティ名文字列定数が含まれています。
関連トピック
Windows メディア コーデック の