Visão geral da aceleração de hardware do DirectSound
Vários adaptadores de áudio oferecem aceleração de hardware directSound, que é a capacidade de executar a combinação de hardware para um ou mais fluxos DirectSound. A combinação de hardware melhora o desempenho descarregando operações de combinação de áudio da CPU e executando-as em velocidades de hardware. Além da combinação, o hardware executa operações relacionadas, como SRC (conversão de taxa de exemplo), atenuação e, opcionalmente, processamento 3D que, de outra forma, precisaria ser executado no software.
Todos os dispositivos de renderização WaveCyclic ou WavePci apresentam um ou mais pinos de hardware para misturar fluxos de áudio. No caso de um dispositivo de fluxo único, o driver do sistema KMixer sempre é instanciado no único pino de renderização de hardware disponível.
Dispositivos com aceleração de hardware DirectSound fornecem mais de um pino de combinação de hardware. Cada pino adicional pode ser usado para misturar um fluxo DirectSound. Os fluxos DirectSound que alimentam os pinos de mixer de hardware ignoram o KMixer e evitam a latência da mistura de software no KMixer. O DirectSound usa todos os pinos de mixer acelerados por hardware disponíveis de um dispositivo de áudio, desde que esses pinos tenham uma topologia que esteja em conformidade com os requisitos de ordenação de nó do DirectSound. O DirectSound também exige que os pinos dão suporte ao formato de dados DirectSound especificado por KSDATAFORMAT_SPECIFIER_DSOUND (consulte DirectSound Stream Data Format).
O driver do sistema SysAudio sempre reserva um pino de hardware para KMixer para que, depois que os outros pinos de hardware (sem reservas) tiverem sido alocados, todos os fluxos adicionais possam ser misturados pelo KMixer e alimentados no pino de hardware reservado.
A figura em Renderizando conteúdo de onda usando o DirectSound Software e buffers de hardware ilustra esses conceitos.
Se um dispositivo de áudio fornecer um número suficiente de pinos de combinação de hardware, todos os fluxos de saída de um aplicativo DirectSound poderão ser acelerados por hardware. Caso contrário, o aplicativo DirectSound tem algumas opções:
Ele pode alocar estaticamente os pinos de combinação de hardware disponíveis para os fluxos que exigem as latências mais baixas.
Ele pode alocar dinamicamente os pinos de combinação de hardware disponíveis para os fluxos conforme eles são necessários tratando os pinos como um pool de recursos compartilhados.
Para obter mais informações, consulte a discussão sobre o gerenciamento de voz na documentação do SDK do Microsoft Windows.
O DirectSound pode usar dois tipos de pinos de mixer de hardware: 2D e 3D. Um pin 2D executa SRC, atenuação e mistura, mas não posicionamento 3D. O DirectSound pode usar um pin 2D para fazer o posicionamento 3D executando os cálculos de atenuação e frequência necessários no software e aplicando os resultados aos nós apropriados no pino 2D. Por outro lado, um pin 3D contém um nó 3D que é capaz de calcular seus próprios efeitos 3D diretamente das propriedades 3D-buffer e ouvinte 3D, em vez de depender do DirectSound para fazer isso. Para obter uma lista das propriedades de um nó 3D, consulte KSNODETYPE_3D_EFFECTS. Para obter mais informações sobre pinos 2D e 3D, consulte Suporte à aceleração de DirectSound 2D no áudio WDM e Suporte à aceleração de DirectSound 3D no áudio WDM.