Codecimplementierung

Die Audio- und Videocodecs von Windows Media werden als COM-Objekte implementiert. In der Regel wird ein Codec als Paar von COM-Objekten implementiert: eines für den Encoder und eines für den Decoder. Der Encoder verfügt über einen Klassenbezeichner (CLSID) und der Decoder über eine andere CLSID. Beispielsweise verfügt der Encoderteil des Windows Media Audio 9-Codecs über eine CLSID, die durch die Konstante CLSID_CWMAEncMediaObject dargestellt wird, und der Decoderteil desselben Codecs verfügt über eine CLSID, die durch die Konstante CLSID_CWMADecMediaObject dargestellt wird.

In einigen Fällen ist mehr als ein Encoder in einem einzelnen COM-Objekt enthalten. Beispielsweise sind der Windows Media Video 9-Encoder und der Windows Media Video 9.1-Encoder Teil desselben COM-Objekts. Folglich haben beide die gleiche CLSID, die durch die Konstante CLSID_CWMV9EncMediaObject dargestellt wird. Ebenso enthalten einige COM-Objekte mehr als einen Decoder.

Jedes Encoder- oder Decoderobjekt macht die IMediaObject-Schnittstelle verfügbar, sodass das Objekt als DirectX Media Object (DMO) und die IMFTransform-Schnittstelle verwendet werden kann, sodass das Objekt als Media Foundation Transform (MFT) verwendet werden kann.

Unabhängig davon, ob Sie den Encoder als DMO oder MFT verwenden, verwenden Sie für die meisten Encoder dieselbe CLSID, um eine instance des Encoders zu erstellen. Um beispielsweise einen instance des Windows Media Video 9-Encoders zu erstellen, verwenden Sie CLSID_CWMV9EncMediaObject, unabhängig davon, ob Sie den Encoder als DMO oder MFT verwenden möchten. In ähnlicher Weise verfügt jeder Decoder für die meisten Decoder über eine einzelne CLSID, unabhängig davon, ob Sie den Decoder als DMO oder als MFT verwenden.

Hinweis

Es gibt einige Ausnahmen von der vorherigen Anweisung über die Verwendung einer einzelnen CLSID sowohl für den DMO als auch für den MFT. Beispielsweise verfügt der MPEG-4 Part 2-Decoder über eine CLSID, wenn er als DMO fungiert, und eine andere CLSID, wenn er als MFT fungiert.

 

Zusätzlich zu den Kernschnittstellen implementiert jedes Encoder- oder Decoderobjekt zwei ähnliche Schnittstellen für die Arbeit mit Codeceigenschaften: IPropertyBag und IPropertyStore. Ältere Versionen des verwendeten Encoder- und Decoderobjekts IPropertyBag, der jede Eigenschaft durch einen Zeichenfolgenwert identifiziert, der einen Eigenschaftsnamen enthält. IPropertyStore ist eine neuere Schnittstelle, die Eigenschaften mit einem eindeutigen Eigenschaftsschlüsselwert identifiziert. Unterstützung für IPropertyStore wurde hinzugefügt, um Unterstützung für MFTs bereitzustellen. Die meisten IPropertyBag-Eigenschaftennamenzeichenfolgen verfügen über eine entsprechende IPropertyStore-Eigenschaftsschlüssel-GUID , und die meisten GUIDs verfügen mit wenigen Ausnahmen über eine entsprechende IPropertyBag-Namenszeichenfolge .

In dieser Dokumentation werden die Eigenschaften nach Eigenschaftenschlüsselkonstante aufgeführt, aber jeder Eintrag enthält die Eigenschaftsname-Zeichenfolgenkonstante zur Verwendung mit IPropertyBag .

Windows Media-Codecs