Usando extensões de unidade de dados (Microsoft Media Foundation)
Os codecs de áudio e vídeo do Windows Media foram concebidos para funcionar bem com o contentor ASF (Advanced Systems Format). ASF é o formato estruturado usado para arquivos Windows Media Audio (WMA) e Windows Media Video (WMV). É um formato extensível projetado para streaming de dados. Uma das características incomuns da estrutura ASF é a capacidade de anexar metadados a amostras individuais e incorporar esses dados com as amostras no fluxo de bits. Um item de metadados armazenado dessa maneira é chamado de extensão de unidade de dados ou extensão de amostra de .
Uma extensão de unidade de dados pode conter informações que são exigidas pelo codificador, pelo decodificador ou pelo aplicativo do player. A maioria dos tipos de extensão de unidade de dados implementados no Windows Media 9 Series de codecs contêm dados destinados ao aplicativo que decodifica e processa a mídia. Por exemplo, é possível manter os códigos de tempo SMPTE dos dados de origem, adicionando-os como extensões de unidades de dados. No entanto, os seguintes recursos de codec exigem extensões de unidade de dados:
- Inserção Forçada de Quadros-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 é conseguido pelos objetos do SDK do Windows Media Format usando objetos de buffer projetados para oferecer suporte a esse recurso. É recomendável usar o SDK do Windows Media Format 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 amostras estendidas para os objetos de Codec
O SDK do Windows Media Format utiliza objetos de buffer que expõem as interfaces INSSBuffer . A interface mais recente é INSSBuffer4. Para passar amostras para um objeto de codec com extensões de unidade de dados, deve usar um objeto de buffer que implemente a interface IMediaBuffer ou a interface IMFMediaBuffer e a interface INSSBuffer. Você pode usar objetos de buffer criados pelo SDK do Windows Media Format ou pelo Microsoft Media Foundation para fazer isso, ou pode criar sua própria classe de buffer que atenda aos requisitos. Para criar a sua própria classe de buffer, deverá estar em conformidade com os protótipos de métodos para as interfaces INSSBuffer. Essas definições de interface podem ser encontradas no arquivo de cabeçalho wmsbuffer.h instalado com o SDK do Windows Media Format.
Tópicos relacionados