Partilhar via


Configurando extensões de unidade de dados

[A funcionalidade associada a esta página, Windows Media Format 11 SDK, é uma funcionalidade herdada. Foi substituído pelo Source Reader e pelo Sink Writer. Source Reader e Sink Writer foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize do Leitor de Origem e do Gravador de Separadores em vez de SDK do Windows Media Format 11, sempre que possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Amostras gravadas em arquivos ASF podem conter informações adicionais, além das próprias amostras de mídia. Essas informações são incluídas usando extensões de unidade de dados. Para obter mais informações sobre extensões de unidade de dados, consulte Data Unit Extensions.

Para usar extensões de unidade de dados, você deve configurar o fluxo no perfil para aceitá-las. Para configurar uma extensão de unidade de dados para um fluxo, execute as etapas a seguir.

  1. Obtenha um ponteiro para a interface do IWMStreamConfig2 chamando o método QueryInterface de IWMStreamConfig.
  2. Chame IWMStreamConfig2::AddDataUnitExtension para registrar um tipo de extensão de unidade de dados para o fluxo.

Você pode examinar todos os tipos de extensão de unidade de dados atualmente registrados para um fluxo chamando IWMStreamConfig2::GetDataUnitExtensionCount para recuperar o número de tipos de extensão de unidade de dados registrados. Em seguida, podes percorrer todos os tipos utilizando chamadas para IWMStreamConfig2::GetDataUnitExtension para cada um.

As extensões de unidade de dados recebem um tamanho quando configuradas para um fluxo. Muitos sistemas de extensão de unidade de dados usam dados que são um tamanho constante (geralmente uma estrutura). No entanto, você também pode configurar suas extensões de unidade de dados para serem de tamanho variável definindo o tamanho como 0xFFFF. Cada extensão de unidade de dados atribuída no momento da codificação pode ser de qualquer tamanho entre 1 byte e 65534 bytes. Extensões de unidade de dados de tamanho variável também são chamadas de extensões de unidade de dados dinâmicas.

A vantagem de usar extensões de unidade de dados dinâmicos é que você pode anexar dados de extensão conforme necessário. Se você definir uma extensão de unidade de dados com um tamanho definido, cada amostra para o fluxo deverá conter dados de extensão desse tamanho, mesmo que você não tenha dados para alguns exemplos. Com extensões de unidade de dados dinâmicas, você pode omitir extensões de unidade de dados de alguns exemplos, o que economiza espaço e reduz os requisitos de largura de banda. No entanto, se as extensões de unidade de dados forem de tamanho variável, o objeto de leitura não poderá verificar os dados de extensão recebidos em relação a um tamanho estático. Você deve verificar se os dados de extensão recebidos são válidos e não uma distorção maliciosa no fluxo de bits.

As extensões de unidade de dados individuais devem ser definidas em amostras usando o método INSSBuffer3::SetProperty. Para obter mais informações, consulte Definindo extensões de unidade de dados.

Configurando fluxos