Compartir a través de


Implementación de códecs

Los códecs de audio y vídeo de Windows Media se implementan como objetos COM. Normalmente, un códec se implementa como un par de objetos COM: uno para el codificador y otro para el descodificador. El codificador tiene un identificador de clase (CLSID) y el descodificador tiene un CLSID diferente. Por ejemplo, la parte del codificador del códec Windows Media Audio 9 tiene un CLSID representado por la constante CLSID_CWMAEncMediaObject y la parte del descodificador de ese mismo códec tiene un CLSID representado por la constante CLSID_CWMADecMediaObject.

En algunos casos, se incluye más de un codificador en un único objeto COM. Por ejemplo, el codificador Windows Media Video 9 y el codificador Windows Media Video 9.1 forman parte del mismo objeto COM. Por consiguiente, ambos tienen el mismo CLSID, representado por la constante CLSID_CWMV9EncMediaObject. Del mismo modo, algunos objetos COM incluyen más de un descodificador.

Cada codificador o objeto de descodificador expone la interfaz IMediaObject para que el objeto se pueda usar como objeto DirectX Media (DMO) y la interfaz IMFTransform para que el objeto se pueda usar como una transformación de Media Foundation (MFT).

Para la mayoría de los codificadores, independientemente de si usa el codificador como DMO o MFT, se usa el mismo CLSID para crear una instancia del codificador. Por ejemplo, para crear una instancia del codificador Windows Media Video 9, se usa CLSID_CWMV9EncMediaObject, independientemente de si desea usar el codificador como DMO o MFT. Del mismo modo, para la mayoría de los descodificadores, cada descodificador tiene un único CLSID independientemente de si usa el descodificador como DMO o MFT.

Nota

Hay algunas excepciones a la instrucción anterior sobre el uso de un único CLSID para DMO y MFT. Por ejemplo, el descodificador MPEG-4 Part 2 tiene un CLSID cuando actúa como DMO y un CLSID diferente cuando actúa como MFT.

 

Además de las interfaces principales, cada codificador o objeto de descodificador implementa dos interfaces similares para trabajar con propiedades de códec, IPropertyBag e IPropertyStore. Las versiones anteriores del codificador y los objetos de descodificador usaban IPropertyBag, que identifica cada propiedad por un valor de cadena que contiene un nombre de propiedad. IPropertyStore es una interfaz más reciente que identifica las propiedades con un valor de clave de propiedad único. Se ha agregado compatibilidad con IPropertyStore para proporcionar compatibilidad con las MFT. La mayoría de las cadenas de nombre de propiedad IPropertyBag tienen un GUID de clave de propiedad IPropertyStore correspondiente y la mayoría de los GUID tienen una cadena de nombre IPropertyBag correspondiente, con algunas excepciones.

En esta documentación se enumeran las propiedades por constante de clave de propiedad, pero cada entrada incluye la constante de cadena de nombre de propiedad para su uso con IPropertyBag cuando corresponda.

Códecs de Windows Media