Implémentation de codec

Les codecs Audio et Vidéo Windows Media sont implémentés en tant qu’objets COM. En règle générale, un codec est implémenté sous la forme d’une paire d’objets COM : un pour l’encodeur et l’autre pour le décodeur. L’encodeur a un identificateur de classe (CLSID) et le décodeur a un CLSID différent. Par exemple, la partie encodeur du codec Windows Media Audio 9 a un CLSID représenté par la constante CLSID_CWMAEncMediaObject, et la partie décodeur de ce même codec a un CLSID représenté par la constante CLSID_CWMADecMediaObject.

Dans certains cas, plusieurs encodeurs sont inclus dans un seul objet COM. Par exemple, l’encodeur Windows Media Video 9 et l’encodeur Windows Media Video 9.1 font tous deux partie du même objet COM. Par conséquent, ils ont tous les deux le même CLSID, qui est représenté par la constante CLSID_CWMV9EncMediaObject. De même, certains objets COM incluent plusieurs décodeurs.

Chaque objet d’encodeur ou de décodeur expose l’interface IMediaObject afin que l’objet puisse être utilisé en tant qu’objet multimédia DirectX (DMO) et l’interface IMFTransform afin que l’objet puisse être utilisé en tant que transformation Media Foundation (MFT).

Pour la plupart des encodeurs, que vous utilisiez l’encodeur en tant que DMO ou MFT, vous utilisez le même CLSID pour créer une instance de l’encodeur. Par exemple, pour créer une instance de l’encodeur Windows Media Video 9, vous utilisez CLSID_CWMV9EncMediaObject, que vous souhaitiez utiliser l’encodeur comme DMO ou MFT. De même, pour la plupart des décodeurs, chaque décodeur a un SEUL CLSID, que vous utilisiez le décodeur en tant que DMO ou MFT.

Notes

Il existe quelques exceptions à l’instruction précédente concernant l’utilisation d’un SEUL CLSID pour le DMO et le MFT. Par exemple, le décodeur MPEG-4 Partie 2 a un CLSID lorsqu’il agit en tant que DMO et un CLSID différent lorsqu’il agit en tant que MFT.

 

En plus des interfaces principales, chaque objet encodeur ou décodeur implémente deux interfaces similaires pour l’utilisation des propriétés de codec, IPropertyBag et IPropertyStore. Les versions antérieures des objets d’encodeur et de décodeur utilisaient IPropertyBag, qui identifie chaque propriété par une valeur de chaîne contenant un nom de propriété. IPropertyStore est une interface plus récente qui identifie les propriétés avec une valeur de clé de propriété unique. La prise en charge d’IPropertyStore a été ajoutée pour assurer la prise en charge des MFT. La plupart des chaînes de nom de propriété IPropertyBag ont un GUID de clé de propriété IPropertyStore correspondant et la plupart des GUID ont une chaîne de nom IPropertyBag correspondante, à quelques exceptions près.

Cette documentation répertorie les propriétés par constante de clé de propriété, mais chaque entrée inclut la constante de chaîne de nom de propriété à utiliser avec IPropertyBag le cas échéant.

Codecs Windows Media