Partilhar via


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

Os codecs de Áudio e Vídeo do Windows Media foram projetados para funcionar bem com o contêiner ASF (Advanced Systems Format). ASF é o formato estruturado usado para arquivos WMA (Windows Media Audio) e arquivos WMV (Windows Media Video). É um formato extensível projetado para dados de streaming. Uma das características incomuns da estrutura ASF é a capacidade de anexar metadados a amostras individuais e inserir esses dados com os exemplos no fluxo de bits. Um item de metadados armazenado dessa forma é 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 do Windows Media 9 contém dados destinados ao aplicativo que decodifica e renderiza a mídia. Por exemplo, você pode manter códigos de tempo SMPTE de 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 de chave
  • Codificação de vídeo entrelaçada
  • A dificuldade em usar extensões de unidade de dados ao acessar o codec diretamente é o mecanismo pelo qual o objeto recebe os dados da extensão. Isso é obtido pelos objetos do SDK de Formato de Mídia do Windows usando objetos de buffer projetados para dar suporte a esse recurso. É recomendável que você use o SDK de Formato de Mídia do 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 codec autônomos.

Passando exemplos estendidos para os objetos Codec

O SDK do Formato de Mídia do Windows 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 buffer que implementa a interface IMediaBuffer ou IMFMediaBuffer e a interface INSSBuffer . Você pode usar objetos de buffer criados pelo SDK do Formato de Mídia do Windows ou pelo 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 cabeçalho wmsbuffer.h instalado com o SDK de Formato de Mídia do Windows.

Codificações de mídia do Windows