Partilhar via


Diferenças entre as versões DDI de áudio HD

O HD Audio DDI está disponível em três versões ligeiramente diferentes que são definidas da seguinte forma:

  • Uma versão de linha de base do HD Audio DDI, que é definido pela estrutura HDAUDIO_BUS_INTERFACE . A maioria dos drivers de função para codecs de áudio e modem necessita apenas das funcionalidades disponibilizadas por esta versão do DDI. Esta versão está disponível por meio dos drivers de barramento HD Audio fornecidos com o Windows XP e Windows Vista.

  • Uma versão melhorada do HD Audio DDI que é definida pela estrutura HDAUDIO_BUS_INTERFACE_V2 . Esta versão do DDI fornece o recurso adicional necessário para suportar a notificação de eventos orientada por DMA com flexibilidade. Está disponível no Windows Vista e versões posteriores do Windows.

  • Uma versão modificada do HD Audio DDI que é definido pela estrutura HDAUDIO_BUS_INTERFACE_BDL . Esta versão acomoda os requisitos de relativamente poucos drivers de áudio e modem que devem ter controle adicional sobre a configuração de listas de descritores de buffer (BDLs) para operações DMA. Esta versão do DDI está disponível para Windows XP e versões posteriores do Windows. No entanto, use a versão HDAUDIO_BUS_INTERFACE ou HDAUDIO_BUS_INTERFACE_V2 DDI. .

Nas três estruturas, os nomes e tipos dos cinco primeiros membros correspondem aos dos cinco membros da estrutura INTERFACE . Para obter informações sobre os valores desses membros, consulte Obtendo um objeto DDI HDAUDIO_BUS_INTERFACE, Obtendo um objeto DDI HDAUDIO_BUS_INTERFACE_V2 ou Obtendo um objeto DDI HDAUDIO_BUS_INTERFACE_BDL.

As rotinas nas três versões do HD Audio DDI executam as seguintes tarefas:

  • Transfira comandos para codecs e recupere as respostas a esses comandos.

  • Aloque e configure mecanismos DMA para transferir os dados em fluxos de renderização e captura.

  • Altere o estado do fluxo de um ou mais mecanismos DMA para execução, pausa, parada ou reinicialização.

  • Reserve a largura de banda do link para fluxos de render e captação.

  • Forneça acesso direto ao registro do relógio de parede e vincule os registros de posição.

  • Notifique os clientes sobre respostas não solicitadas de codecs.

  • Registre eventos do kernel para que eles possam receber notificações de progresso do DMA.

As versões HDAUDIO_BUS_INTERFACE e HDAUDIO_BUS_INTERFACE_BDL do DDI têm as seguintes diferenças:

Quando um cliente chama a rotina AllocateDmaBuffer na primeira versão DDI, o driver de barramento HD Audio:

  • Aloca um buffer DMA e BDL para um mecanismo DMA utilizar.

  • Inicializa a BDL.

  • Configura o mecanismo DMA para usar o buffer e a BDL.

Em contraste, a rotina AllocateContiguousDmaBuffer na segunda versão DDI aloca armazenamento para um buffer DMA e BDL, mas depende do chamador para inicializar a BDL. A rotina SetupDmaEngineWithBdl configura o mecanismo DMA para usar o buffer e a BDL inicializada pelo chamador.

A BDL contém a lista de blocos de memória física na fila de dispersão/coleta do mecanismo DMA. Ao chamar SetupDmaEngineWithBdl para configurar a BDL, o cliente pode especificar os pontos no fluxo de dados nos quais o mecanismo DMA gera interrupções. O cliente faz isso definindo o bit de interrupção na conclusão (IOC) em entradas BDL selecionadas. Com esta capacidade, o cliente pode controlar com precisão o tempo das interrupções IOC que ocorrem durante o processamento do fluxo de áudio. Os drivers de modem de áudio também usam a segunda versão DDI para obter informações precisas sobre o relógio do sistema.

Para obter mais informações, consulte a Especificação de áudio de alta definição Intel.

No entanto, quase todos os clientes usarão a versão HDAUDIO_BUS_INTERFACE do DDI. Apenas alguns clientes que exigem controle preciso sobre o tempo de interrupções usarão a versão HDAUDIO_BUS_INTERFACE_BDL.