Usando extensões de unidade de dados (Microsoft Media Foundation)

Os Windows codecs de Áudio e Vídeo de Mídia foram projetados para funcionar bem com o contêiner ASF (Advanced Systems Format). O ASF é o formato estruturado usado para arquivos WMA (Windows Media Audio) e arquivos WMV (Vídeo de Windows Mídia). É um formato extensível projetado para streaming de dados. Uma das características incomuns da estrutura ASF é a capacidade de anexar metadados a exemplos individuais e inserir esses dados com as amostras no fluxo de bits. Um item de metadados armazenados dessa maneira é chamado de extensão de unidade de dados ou extensão de exemplo.

Uma extensão de unidade de dados pode conter informações exigidas pelo codificador, pelo decodificador ou pelo aplicativo player. A maioria dos tipos de extensão de unidade de dados implementados na série de codecs Windows Media 9 contém dados destinados ao aplicativo que decodifica e renderiza a mídia. Por exemplo, você pode manter os códigos de tempo SMPTE dos dados de origem adicionando-os como extensões de unidade de dados. No entanto, os seguintes recursos de codec exigem extensões de unidade de dados:

  • Inserção forçada de quadro-chave
  • Codificação de vídeo entrelaçadas
  • A dificuldade em usar extensões de unidade de dados ao acessar o codec diretamente é o mecanismo pelo qual o objeto recebe os dados de extensão. Isso é feito pelos objetos do SDK Windows Media Format usando objetos de buffer projetados para dar suporte a esse recurso. É recomendável que você use o SDK de Formato de Mídia Windows para ativar os recursos de codec que exigem extensões de unidade de dados, mas você pode fazer com que esses recursos funcionem com os objetos de codec autônomos.

Passando exemplos estendidos para os objetos codec

O Windows SDK de Formato de Mídia usa objetos de buffer que expõem interfaces INSSBuffer. A interface mais recente é INSSBuffer4. Para passar exemplos para um objeto codec com extensões de unidade de dados, você deve usar um objeto de buffer que implementa a interface IMediaBuffer ou IMFMediaBuffer e a interface INSSBuffer. Você pode usar objetos de buffer criados pelo SDK Windows Media Format ou Microsoft Media Foundation para fazer isso ou criar sua própria classe de buffer que atenda aos requisitos. Para criar sua própria classe de buffer, você deve estar em conformidade com os protótipos de método para as interfaces INSSBuffer. Essas definições de interface podem ser encontradas no arquivo de header wmsbuffer.h instalado com o SDK Windows Formato de Mídia.

Codificações de mídia do Windows