Compartilhar via


Mapeando formatos de fluxo para configurações do locutor

Quando solicitado a reproduzir um formato de fluxo que não corresponda à configuração do alto-falante do dispositivo de áudio, o driver de áudio tem várias opções:

  • Recusar a reprodução do fluxo.

  • Reproduza o fluxo executando um mapeamento um-para-um de canais individuais para alto-falantes. Se algum canais for deixado depois que um canal tiver sido mapeado para cada alto-falante, descarte os canais restantes. Por outro lado, se algum alto-falante for deixado depois que todos os canais tiverem sido atribuídos aos alto-falantes, toque o silêncio através dos alto-falantes restantes.

  • Reproduza o fluxo misturando os canais no fluxo original para gerar precisamente o número de canais necessários para a configuração do locutor. Se houver mais canais no fluxo original do que alto-falantes, essa abordagem evitará a perda do conteúdo que resultaria em simplesmente descartar os canais em excesso. A conversão de combinação e formato pode ser executada em software ou hardware.

Em relação à terceira opção, o driver deve evitar executar diretamente a combinação de software. Em vez disso, o fornecedor de hardware deve instalar um módulo de software de efeitos globais (GFX) para processar o fluxo antes de chegar ao dispositivo de áudio. No Windows Vista, os efeitos globais são implementados como APOs (objetos de processamento de áudio) GFX. No Windows Server 2003 e no Windows XP, os efeitos globais foram implementados como filtros GFX.

Reproduzindo um fluxo de 5.1 canais em uma configuração de alto-falante 7.1

A figura a seguir mostra um fluxo que é gravado para uma configuração de alto-falantes de som surround 5.1 (à esquerda), mas é reproduzido por meio de uma configuração de alto-falantes de home theater 7.1 (à direita).

Diagrama mostrando um fluxo 5.1 reproduzido em uma configuração de alto-falantes 7.1 com dois alto-falantes silenciosos.

Na figura anterior, o formato 5.1 registrado não contém informações de canal para as posições do alto-falante BL e BR na configuração do alto-falante 7.1. Portanto, esses dois alto-falantes são silenciosos. (Outra alternativa mais difícil seria o dispositivo de áudio sintetizar dois canais adicionais para os alto-falantes BL e BR misturando o conteúdo dos seis canais originais na gravação.)

De acordo com as definições para os bits de máscara de canal, a máscara de canal para gravar o fluxo 5.1 mostrado no lado esquerdo da figura anterior deve ser 0x60F, o que atribui os seis canais às seguintes posições de alto-falante: FL, FR, FC, LFE, SL e SR. (Esta é a configuração do side-speaker 5.1 discutida anteriormente.) Na verdade, a máscara de canal para o fluxo 5.1 é 0x3F em vez de 0x60F por motivos que foram mencionados anteriormente e agora serão explicados em detalhes.

Em versões anteriores do Windows (Windows Server 2003, Windows XP com SP1, Windows 2000 e Windows Me/98), a interpretação da máscara de canal 0x3F é que ela atribui os seis canais no formato 5.1 às seguintes posições de alto-falante: FL, FR, FC, LFE, BL e BR. (Esta é a configuração do alto-falante 5.1.) No entanto, a interpretação no Windows Vista, windows server 2003 com SP1 e Windows XP com SP2 é diferente: por convenção, o formato 5.1 com a máscara de canal 0x3F é interpretado como significando a configuração do alto-falante lateral 5.1 em vez da configuração do alto-falante 5.1.

Interpretar a máscara de canal dessa maneira elimina o requisito de introduzir um segundo descritor de formato de canal 5.1 para distinguir a configuração do alto-falante lateral 5.1 da configuração do alto-falante 5.1. Essas duas configurações são tão semelhantes que os usuários típicos podem ter dificuldade para distinguir entre eles. Embora ter apenas um único descritor de formato de 5.1 canais evite confundir os usuários, ele exige que os fornecedores de hardware se lembrem de interpretar a máscara de canal 0x3F para significar que os canais 5 e 6 são atribuídos às posições do alto-falante SL e SR em vez das posições BL e BR. Em troca de ter que lembrar dessa interpretação de caso especial da máscara de canal para um fluxo 5.1, os fornecedores podem poupar os usuários da dificuldade de distinguir entre dois descritores de formato de 5.1 canais muito semelhantes.

Os fornecedores que acreditam que pelo menos alguns de seus usuários podem querer distinguir entre a configuração do side-speaker 5.1 e a configuração do back-speaker 5.1 têm a opção de fornecer um programa de interface do usuário para essa finalidade. Por meio da interface do usuário, os usuários podem selecionar se os canais 4 e 5 em um fluxo de 5,1 canais devem orientar os alto-falantes traseiros em vez dos alto-falantes laterais em uma configuração de alto-falantes de home theater 7.1.

Reproduzindo um fluxo de 7.1 canais em uma configuração de alto-falante 5.1

A figura a seguir mostra um fluxo gravado para uma configuração de alto-falantes de home theater 7.1 (à esquerda) sendo reproduzido por meio de uma configuração de alto-falantes de som surround 5.1 (à direita). A máscara de canal para o fluxo de 7.1 canais é 0x63F.

Diagrama ilustrando um fluxo 7.1 reproduzido em uma configuração de alto-falante 5.1 com dois canais descartados.

Neste exemplo, os canais 6 e 7, que contêm os dados para as posições do alto-falante lateral na configuração 7.1, são reproduzidos pelas posições do alto-falante lateral na configuração 5.1. O dispositivo de áudio simplesmente descarta os canais 4 e 5, que contêm os dados para as posições do alto-falante traseiro na configuração 7.1, quando ele reproduz o fluxo na configuração 5.1. Conforme mencionado anteriormente, outra alternativa (não mostrada na figura anterior) é que o dispositivo tente preservar o conteúdo nos canais 4 e 5 misturando-os com os canais 6 e 7 antes de reproduzi-los pelos alto-falantes laterais na configuração 5.1.

Comportamento do Mixer do Sistema

No Windows Server 2003, Windows XP, Windows 2000 e Windows Me/98, os fluxos de áudio multicanal que o dispositivo de áudio reproduz normalmente são gerados pelo mixer do sistema de software, Kmixer.sys. Antes que o fluxo possa começar a ser reproduzido, o mixer do sistema e o driver de áudio devem negociar um formato de fluxo que o mixer e o driver possam manipular.

Quando solicitado a reproduzir um fluxo multicanal com um formato que não corresponde à configuração do alto-falante do dispositivo de áudio, o driver de áudio pode recusar a solicitação, caso em que a negociação continua.

O mixer do sistema pode converter conteúdo de um fluxo de entrada de 5,1 canais em um fluxo de saída de 7,1 canais (para o dispositivo de áudio) e vice-versa, embora prefira evitar essas conversões para preservar a qualidade do fluxo de entrada. Assim, o mixer do sistema inicia a negociação solicitando que o driver aceite um fluxo com o mesmo formato que o fluxo de entrada de maior qualidade para o mixer do sistema. Normalmente, isso significa que, se o mixer do sistema tiver um fluxo de entrada em um formato de canal 5.1 ou 7.1, ele solicitará que o driver aceite um fluxo no mesmo formato. Se o driver rejeitar esse formato, o mixer do sistema continuará negociando perguntando ao driver se ele pode lidar com outros formatos de fluxo.

Por exemplo, se o driver de um dispositivo de áudio com uma configuração de alto-falante 5.1 recusar uma solicitação do mixer do sistema para reproduzir um fluxo de 7,1 canais, o mixer do sistema continuará a negociação oferecendo converter o fluxo de 7,1 canais em um fluxo de 5,1 canais. Se o driver aceitar esse formato, o mixer do sistema executará a conversão de fluxo para o driver.

Ao criar um driver de áudio, o gravador de driver deve decidir se deve lidar com suas próprias conversões de formato ou contar com o mixer do sistema para fazer as conversões. O driver pode precisar lidar com as conversões em qualquer uma das seguintes situações:

  • Se o driver exigir que a conversão seja executada de uma maneira diferente da conversão executada pelo mixer do sistema.

  • Se o driver precisar reproduzir fluxos que ignoram o mixer do sistema.

Na segunda situação, um fluxo poderá ignorar o mixer do sistema se estiver sendo reproduzido de um buffer acelerado por hardware do Microsoft DirectSound diretamente para um pino de combinação de hardware no dispositivo de áudio. Além disso, alguns aplicativos "pro audio" enviam seus fluxos diretamente para o dispositivo de áudio para evitar a latência do mixer do sistema ou para impedir que o processo de combinação altere os valores de exemplo digital no fluxo de áudio original.

No Windows Server 2003 com SP1 e Windows XP com SP2, se o mixer do sistema produzir um fluxo de saída de 5,1 canais, o mixer sempre definirá a máscara de canal do fluxo como 0x3F. O mixer do sistema se comporta dessa maneira mesmo que receba um fluxo de entrada de 5,1 canais com uma máscara de canal de 0x60F. Com esse comportamento, um driver de áudio nunca recebe um fluxo de 5.1 canais com uma máscara de canal de 0x60F do mixer.

Se o mixer do sistema receber um fluxo de entrada de 7,1 canais com uma máscara de canal de 0x63F e produzir um fluxo de saída de 5,1 canais (com uma máscara de canal de 0x3F), o mixer copiará os canais 6 e 7 no fluxo de entrada para os canais 4 e 5 no fluxo de saída. O mixer descarta os canais 4 e 5 (para os dois alto-falantes traseiros) do fluxo de entrada de 7.1 canais. Esse comportamento garante que os canais que contêm o conteúdo dos dois alto-falantes laterais no fluxo de 7.1 canais reproduzam pelos alto-falantes laterais na configuração do alto-falante 5.1.