Partilhar via


Configuração do alto-falante DSSPEAKER_SURROUND

Nota Essas informações se aplicam ao Windows XP e a sistemas operacionais anteriores. A partir do Windows Vista, IDirectSound::GetSpeakerConfig e IDirectSound::SetSpeakerConfig foram preteridos.

Um programa de aplicativo pode alterar a configuração do alto-falante DirectSound para o modo surround chamando o método IDirectSound::SetSpeakerConfig com o parâmetro speaker-configuration definido como DSSPEAKER_SURROUND. Isso especifica um formato PCM de quatro canais no qual os canais são mapeados para alto-falantes esquerdo, direito, central e traseiro.

Depois que ele entra em vigor, o DSSPEAKER_SURROUND definição de configuração do alto-falante é global e afeta o dispositivo de áudio como um todo. Todos os aplicativos de áudio executados posteriormente estão sujeitos à nova configuração até que o DirectSound altere a configuração novamente.

O DirectSound usa o seguinte algoritmo para configurar o sistema de áudio para o modo surround:

  1. O DirectSound primeiro solicita que o driver entre no modo de alto-falante surround enviando um KSPROPERTY_AUDIO_CHANNEL_CONFIG solicitação set-property para o nó DAC do driver (ou nó 3D se ele não tiver nenhum nó DAC). (Consulte KSNODETYPE_DAC e KSNODETYPE_3D_EFFECTS.) A estrutura KSAUDIO_CHANNEL_CONFIG que acompanha essa solicitação de propriedade especifica a configuração do alto-falante KSAUDIO_SPEAKER_SURROUND. Se a solicitação for bem-sucedida, o dispositivo de áudio roteia os quatro canais para quatro saídas analógicas conectadas diretamente aos alto-falantes esquerdo, direito, central e traseiro.

  2. Se isso falhar, o DirectSound solicitará que o driver configure o dispositivo no modo de alto-falante estéreo e habilite seu nó KSNODETYPE_PROLOGIC_ENCODER , se ele tiver um. Se isso for bem-sucedido, o dispositivo converterá o fluxo de quatro canais do aplicativo em um sinal estéreo codificado por surround que ele gera em formato digital ou analógico. (O hardware deve fazer a codificação depois de misturar os fluxos que fluem para os vários pinos de mixer do dispositivo.) O usuário pode conectar as saídas estéreo do dispositivo a um decodificador externo que converte o sinal codificado em quatro canais que são gerados para alto-falantes esquerdos, direitos, centralizados e traseiros.

  3. Se isso falhar, o DirectSound habilitará o nó KSNODETYPE_PROLOGIC_ENCODER no KMixer. (O dispositivo já está no modo estéreo da etapa anterior.) Novamente, o sinal estéreo que é gerado pelo dispositivo pode ser alimentado para um decodificador externo.

Se esse algoritmo for bem-sucedido, o aplicativo poderá criar e reproduzir buffers PCM de quatro canais. Nos casos 1 e 2 acima, os buffers de hardware que o dispositivo lê usam quatro canais, mas no caso 3 os buffers de hardware usam um formato estéreo. O aplicativo pode gravar diretamente nos buffers de hardware nos casos 1 e 2, mas no caso 3 ele deve gravar em um buffer de software e permitir que o KMixer converta o fluxo de quatro canais do aplicativo para o formato estéreo codificado em surround necessário para o buffer de hardware.

No caso (3) acima, o aplicativo deve evitar o uso de buffers de hardware para qualquer um de seus fluxos de saída. Observe que o KMixer mistura todos os fluxos de entrada antes de codificar a combinação para produzir o fluxo estéreo surround. No entanto, qualquer fluxo que insira um pino de mixer de hardware é misturado em hardware com o estéreo codificado do KMixer, o que degrada a qualidade do áudio surround quando ele é decodificado. O aplicativo pode impedir isso usando apenas buffers de software.

Um fluxo estéreo que foi codificado por um nó KSNODETYPE_PROLOGIC_ENCODER pode ser decodificado em quatro canais (esquerda, direita, centro e voltar) por um nó KSNODETYPE_PROLOGIC_DECODER .