Implementace kodeku

Kodeky Windows Media Audio a Video jsou implementovány jako objekty MODELU COM. Kodek se obvykle implementuje jako dvojice objektů MODELU COM: jeden pro kodér a druhý pro dekodér. Kodér má identifikátor třídy (CLSID) a dekodér má jiný IDENTIFIKÁTOR CLSID. Například část kodéru kodeku Windows Media Audio 9 má IDENTIFIKÁTOR CLSID reprezentovaný konstantním CLSID_CWMAEncMediaObjecta dekodér část stejného kodeku má CLSID reprezentovaný konstantou CLSID_CWMADecMediaObject.

V některých případech je součástí jednoho objektu COM více kodérů. Kodér Windows Media Video 9 a kodér Windows Media Video 9.1 jsou například součástí stejného objektu COM. V důsledku toho oba mají stejný CLSID, který je reprezentován konstantou CLSID_CWMV9EncMediaObject. Podobně některé objekty MODELU COM obsahují více než jeden dekodér.

Každý kodér nebo dekodér objekt zpřístupňuje rozhraní IMediaObject tak, aby objekt mohl být použit jako objekt DirectX Media Object (DMO) a MMFTransform rozhraní, aby se objekt mohl použít jako Media Foundation Transform (MFT).

U většiny kodérů bez ohledu na to, jestli kodér používáte jako DMO nebo MFT, použijete stejné CLSID k vytvoření instance kodéru. Pokud například chcete vytvořit instanci kodéru Windows Media Video 9, použijete CLSID_CWMV9EncMediaObjectbez ohledu na to, jestli chcete kodér používat jako DMO nebo MFT. Podobně u většiny dekodérů má každý dekodér jeden CLSID bez ohledu na to, jestli dekodér používáte jako DMO nebo MFT.

Poznámka

Existují některé výjimky z předchozího příkazu o použití jednoho CLSID pro DMO i MFT. Například dekodér MPEG-4 část 2 má jeden CLSID, když funguje jako DMO a jiný CLSID, když funguje jako MFT.

 

Kromě základních rozhraní každý kodér nebo dekodér objekt implementuje dvě podobná rozhraní pro práci s vlastnostmi kodeku, IPropertyBag a IPropertyStore. Starší verze kodéru a dekodér objektů používané IPropertyBag, který identifikuje každou vlastnost řetězcovou hodnotou obsahující název vlastnosti. IPropertyStore je novější rozhraní, které identifikuje vlastnosti s jedinečnou hodnotou klíče vlastnosti. Byla přidána podpora IPropertyStore, která poskytuje podporu pro MFT. Většina IPropertyBag řetězce názvů vlastností mají odpovídající IPropertyStore klíč vlastnosti GUID a většina identifikátorů GUID má odpovídající IPropertyBag řetězec názvu s několika výjimkami.

Tato dokumentace uvádí vlastnosti podle konstanty klíče vlastnosti, ale každá položka obsahuje řetězcovou konstantu názvu vlastnosti pro použití s IPropertyBag v případě potřeby.

kodeky Windows Media