Configuração do alto-falante DSSPEAKER_SURROUND
Observação Essas informações se aplicam ao Windows XP e 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 de configuração do locutor definido como DSSPEAKER_SURROUND. Isso especifica um formato PCM de quatro canais no qual os canais são mapeados para os alto-falantes esquerdo, direito, central e back.
Depois que entra em vigor, a configuração de DSSPEAKER_SURROUND 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:
O DirectSound primeiro pede ao driver para entrar no modo de alto-falante surround enviando uma solicitação KSPROPERTY_AUDIO_CHANNEL_CONFIG 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 back.
Se isso falhar, o DirectSound solicitará ao driver que 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 do 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 saída para alto-falantes esquerdo, direito, central e back.
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 é saída pelo dispositivo pode ser alimentado para um decodificador externo.
Se esse algoritmo for bem-sucedido, o aplicativo poderá criar e reproduzir buffers de 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.
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 seus fluxos de entrada antes de codificar a mistura para produzir o fluxo estéreo surround. No entanto, qualquer fluxo que insira um pino de misturador 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 costas) por um nó KSNODETYPE_PROLOGIC_DECODER.