Dela via


Codec-implementering

Windows Media Audio- och Video-codecs implementeras som COM-objekt. Vanligtvis implementeras en codec som ett par COM-objekt: ett för kodaren och ett för avkodaren. Kodaren har en klassidentifierare (CLSID) och avkodaren har ett annat CLSID. Kodardelen av Windows Media Audio 9 codec har till exempel ett CLSID som representeras av konstanten CLSID_CWMAEncMediaObject, och avkodardelen av samma codec har ett CLSID som representeras av konstanten CLSID_CWMADecMediaObject.

I vissa fall ingår mer än en kodare i ett enda COM-objekt. Till exempel är Windows Media Video 9-kodaren och Windows Media Video 9.1-kodaren båda en del av samma COM-objekt. Därför har de båda samma CLSID, som representeras av konstanten CLSID_CWMV9EncMediaObject. På samma sätt innehåller vissa COM-objekt mer än en avkodare.

Varje kodare eller avkodarobjekt exponerar IMediaObject--gränssnittet så att objektet kan användas som ett DirectX Media Object (DMO) och IMFTransform--gränssnitt så att objektet kan användas som en Media Foundation Transform (MFT).

För de flesta kodare, oavsett om du använder kodaren som en DMO eller en MFT, använder du samma CLSID för att skapa en instans av kodaren. Om du till exempel vill skapa en instans av Windows Media Video 9-kodaren använder du CLSID_CWMV9EncMediaObject, oavsett om du tänker använda kodaren som en DMO eller en MFT. För de flesta avkodare har varje avkodare på samma sätt ett enda CLSID oavsett om du använder avkodaren som en DMO eller en MFT.

Not

Det finns vissa undantag till föregående instruktion om att använda ett enda CLSID för både DMO och MFT. MpEG-4 Del 2-avkodaren har till exempel ett CLSID när det fungerar som en DMO och ett annat CLSID när det fungerar som en MFT.

 

Förutom kärngränssnitten implementerar varje kodare eller avkodarobjekt två liknande gränssnitt för att arbeta med codec-egenskaper, IPropertyBag och IPropertyStore. Äldre versioner av kodaren och avkodarobjekten som används IPropertyBag, som identifierar varje egenskap med ett strängvärde som innehåller ett egenskapsnamn. IPropertyStore är ett nyare gränssnitt som identifierar egenskaper med ett unikt egenskapsnyckelvärde. Stöd för IPropertyStore har lagts till för att ge stöd för MFI. De flesta IPropertyBag egenskapsnamnsträngar har motsvarande IPropertyStore egenskapsnyckel-GUID och de flesta GUID:er har motsvarande IPropertyBag namnsträng, med några undantag.

Den här dokumentationen visar egenskaperna efter egenskapsnyckelkonstant, men varje post innehåller strängkonstanten egenskapsnamn för användning med IPropertyBag- när det är lämpligt.

Windows Media Codecs