Partilhar via


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

A DDI de áudio HD está disponível em três versões ligeiramente diferentes que são definidas da seguinte maneira:

  • Uma versão de linha de base da DDI de áudio HD, que é definida pela estrutura HDAUDIO_BUS_INTERFACE . A maioria dos drivers de função para codecs de áudio e modem exige apenas os recursos que essa versão DDI fornece. Esta versão está disponível por meio dos drivers de barramento de áudio HD fornecidos com o Windows XP e o Windows Vista.

  • Uma versão aprimorada da DDI de áudio HD definida pela estrutura HDAUDIO_BUS_INTERFACE_V2 . Esta versão da DDI fornece a funcionalidade adicional necessária para dar suporte à notificação de eventos controlada por DMA com flexibilidade. Ele está disponível no Windows Vista e em versões posteriores do Windows.

  • Uma versão modificada da DDI de áudio HD definida pela estrutura HDAUDIO_BUS_INTERFACE_BDL . Essa versão acomoda os requisitos de relativamente poucos drivers de áudio e modem que devem ter controle adicional sobre a configuração de BDLs (listas de descritores de buffer) para operações de DMA. Esta versão da DDI está disponível para o Windows XP e versões posteriores do Windows. No entanto, use o HDAUDIO_BUS_INTERFACE ou a versão 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 da DDI de áudio HD executam as seguintes tarefas:

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

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

  • Altere o estado do fluxo de um ou mais mecanismos de DMA para em execução, pausado, interrompido ou redefinido.

  • Reserve largura de banda de link para fluxos de renderização e captura.

  • Forneça acesso direto aos registros de registro do relógio de parede e à posição do link.

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

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

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

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

  • Aloca um buffer de DMA e BDL para um mecanismo de DMA a ser usado.

  • Inicializa o BDL.

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

Por outro lado, a rotina AllocateContiguousDmaBuffer na segunda versão DDI aloca armazenamento para um buffer de DMA e BDL, mas depende do chamador para inicializar o BDL. A rotina SetupDmaEngineWithBdl configura o mecanismo de DMA para usar o buffer e o BDL inicializado pelo chamador.

O BDL contém a lista de blocos de memória física na fila de dispersão/coleta do mecanismo de DMA. Ao chamar SetupDmaEngineWithBdl para configurar o BDL, o cliente pode especificar os pontos no fluxo de dados no qual o mecanismo de DMA gera interrupções. O cliente faz isso definindo o bit ioc (interrupção após a conclusão) em entradas BDL selecionadas. Com essa funcionalidade, o cliente pode controlar precisamente o tempo das interrupções do COI 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 do relógio do sistema.

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

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