Configurar extensões de unidade de dados

Exemplos gravados em arquivos ASF podem conter informações adicionais além dos próprios exemplos 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 Extensões de unidade de dados.

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 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, você pode executar um loop em todos os tipos usando 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 de 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 ter qualquer tamanho entre 1 byte e 65534 bytes. Extensões de unidade de dados de tamanho variably também são chamadas de extensões de unidade de dados dinâmicos.

A vantagem de usar extensões de unidade de dados dinâmicas é 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 do fluxo deverá conter dados de extensão desse tamanho, mesmo que você não tenha dados para alguns exemplos. Com extensões dinâmicas de unidade de dados, 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 há distorção mal-intencionada do fluxo de bits.

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

Configurando fluxos