次の方法で共有


コーデック実装

Windows Media Audio および Video コーデックは、COM オブジェクトとして実装されます。 通常、コーデックは COM オブジェクトのペアとして実装されます。1 つはエンコーダー用、1 つはデコーダー用です。 エンコーダーにはクラス識別子 (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 を持っています。

Note

DMO と MFT の両方に対して単一の CLSID を使用することに関して、前のステートメントにはいくつかの例外があります。 たとえば、MPEG-4 Part 2 デコーダーは、DMO として機能する場合は CLSID を 1 つ、MFT として機能する場合は別の CLSID を持っています。

 

コア インターフェイスに加えて、各エンコーダーまたはデコーダー オブジェクトは、コーデック プロパティ (IPropertyBag と IPropertyStore ) を操作するための 2 つの同様のインターフェイス を実装します。 以前のバージョンのエンコーダー オブジェクトとデコーダー オブジェクトでは、プロパティ名を含む文字列値で各プロパティを識別する IPropertyBag を使用しました。 IPropertyStore は、一意のプロパティ キー値を使用してプロパティを識別する新しいインターフェイスです。 MFT のサポートを提供するために 、IPropertyStore のサポートが追加されました。 ほとんどの IPropertyBag プロパティ名文字列には、対応する IPropertyStore プロパティ キー GUID があり、ほとんどの GUID には対応する IPropertyBag 名文字列が含まれますが、いくつかの例外があります。

このドキュメントでは、プロパティ キー定数ごとにプロパティを一覧表示しますが、各エントリには、必要に応じて IPropertyBag で使用するプロパティ名の文字列定数が含まれています。

Windows Media コーデック