Partilhar via


Implementação de codec

Os codecs de áudio e vídeo do Windows Media são implementados como objetos COM. Normalmente, um codec é implementado como um par de objetos COM: um para o codificador e outro para o decodificador. O codificador tem um identificador de classe (CLSID) e o decodificador tem um CLSID diferente. Por exemplo, a parte do codificador do codec Windows Media Audio 9 tem um CLSID representado pela constante CLSID_CWMAEncMediaObject, e a parte do decodificador desse mesmo codec tem um CLSID representado pela constante CLSID_CWMADecMediaObject.

Em alguns casos, mais de um codificador é incluído em um único objeto COM. Por exemplo, o codificador do Windows Media Video 9 e o codificador do Windows Media Video 9.1 fazem parte do mesmo objeto COM. Consequentemente, ambos têm o mesmo CLSID, que é representado pela constante CLSID_CWMV9EncMediaObject. Da mesma forma, alguns objetos COM incluem mais de um decodificador.

Cada objeto codificador ou decodificador expõe o interface IMediaObject para que o objeto possa ser usado como um DirectX Media Object (DMO) e o IMFTransform interface para que o objeto possa ser usado como um Media Foundation Transform (MFT).

Para a maioria dos codificadores, independentemente de você usar o codificador como DMO ou MFT, use o mesmo CLSID para criar uma instância do codificador. Por exemplo, para criar uma instância do codificador do Windows Media Video 9, use CLSID_CWMV9EncMediaObject, independentemente de pretender usar o codificador como DMO ou MFT. Da mesma forma, para a maioria dos descodificadores, cada descodificador tem um único CLSID, independentemente de utilizar o descodificador como DMO ou MFT.

Observação

Há algumas exceções à instrução anterior sobre o uso de um único CLSID para o DMO e o MFT. Por exemplo, o descodificador MPEG-4 Parte 2 tem um CLSID quando está a atuar como DMO e um CLSID diferente quando está a atuar como MFT.

 

Além das interfaces principais, cada objeto codificador ou decodificador implementa duas interfaces semelhantes para trabalhar com propriedades de codec, IPropertyBag e IPropertyStore. Versões mais antigas dos objetos codificador e decodificador usados IPropertyBag, que identifica cada propriedade por um valor de cadeia de caracteres contendo um nome de propriedade. IPropertyStore é uma interface mais recente que identifica propriedades com um valor de chave de propriedade exclusivo. Suporte para IPropertyStore foi adicionado para fornecer suporte para MFTs. A maioria das cadeias de caracteres de nome de propriedade IPropertyBag IPropertyBag tem um GUID de chave de propriedade IPropertyStore correspondente e a maioria dos GUIDs tem uma cadeia de caracteres de nome de IPropertyBag correspondente, com algumas exceções.

Esta documentação lista as propriedades por constante de chave de propriedade, mas cada entrada inclui a constante de cadeia de caracteres de nome de propriedade para uso com IPropertyBag quando apropriado.

de Codecs do Windows Media