Différences entre les versions HD Audio DDI

L’interface DDI HD Audio est disponible dans trois versions légèrement différentes qui sont définies comme suit :

  • Version de référence de l’interface DDI HD Audio, définie par la structure HDAUDIO_BUS_INTERFACE . La plupart des pilotes de fonction pour les codecs audio et modem requièrent uniquement les fonctionnalités fournies par cette version DDI. cette version est disponible via les pilotes de bus Audio HD fournis avec Windows XP et Windows Vista.

  • Version améliorée de l’interface DDI HD Audio définie par la structure HDAUDIO_BUS_INTERFACE_V2 . Cette version de la DDI offre les fonctionnalités supplémentaires requises pour prendre en charge la notification d’événements par DMA avec flexibilité. elle est disponible dans Windows Vista et les versions ultérieures de Windows.

  • Une version modifiée de l’interface DDI HD Audio définie par la structure HDAUDIO_BUS_INTERFACE_BDL . Cette version prend en charge les exigences d’un petit nombre de pilotes audio et de modem qui doivent avoir un contrôle supplémentaire sur la configuration des listes de descripteurs de mémoire tampon (BDLs) pour les opérations DMA. cette version de la DDI est disponible pour Windows XP et les versions ultérieures de Windows. Toutefois, utilisez la HDAUDIO_BUS_INTERFACE ou la version HDAUDIO_BUS_INTERFACE_V2 DDI à la place. .

Dans les trois structures, les noms et les types des cinq premiers membres correspondent à ceux des cinq membres de la structure de l' interface . Pour plus d’informations sur les valeurs de ces membres, consultez obtention d’un objet HDAUDIO_BUS_INTERFACE DDI, obtention d’un objet HDAUDIO_BUS_INTERFACE_V2 DDI ou obtention d’un objet HDAUDIO_BUS_INTERFACE_BDL DDI.

Les routines des trois versions de l’interface DDI HD Audio effectuent les tâches suivantes :

  • Transférez les commandes aux codecs et récupérez les réponses à ces commandes.

  • Allouez et configurez des moteurs DMA pour transférer les données dans les flux de rendu et de capture.

  • Changez l’état du flux d’un ou plusieurs moteurs DMA en en cours d’exécution, suspendu, arrêté ou réinitialisé.

  • Réservez la bande passante des liens pour les flux de rendu et de capture.

  • Fournir un accès direct au registre de l’horloge du mur et aux registres de position des liens.

  • Informez les clients des réponses non sollicitées à partir des codecs.

  • Inscrire les événements de noyau afin qu’ils puissent recevoir des notifications de progression DMA.

Les versions HDAUDIO_BUS_INTERFACE et HDAUDIO_BUS_INTERFACE_BDL de l’interface DDI présentent les différences suivantes :

Lorsqu’un client appelle la routine AllocateDmaBuffer dans la première version DDI, le pilote de bus audio HD :

  • Alloue une mémoire tampon DMA et BDL pour un moteur DMA à utiliser.

  • Initialise BDL.

  • Configure le moteur DMA pour utiliser la mémoire tampon et BDL.

En revanche, la routine AllocateContiguousDmaBuffer dans la deuxième version DDI alloue du stockage pour une mémoire tampon DMA et BDL, mais elle s’appuie sur l’appelant pour initialiser le BDL. La routine SetupDmaEngineWithBdl configure le moteur DMA pour utiliser la mémoire tampon et les BDL initialisés par l’appelant.

Le BDL contient la liste des blocs de mémoire physique dans la file d’attente de ventilation/regroupement du moteur DMA. En appelant SetupDmaEngineWithBdl pour configurer BDL, le client peut spécifier les points du flux de données à partir desquels le moteur DMA génère des interruptions. Pour ce faire, le client définit le bit d’interruption à l’achèvement (IOC) dans les entrées BDL sélectionnées. Avec cette fonctionnalité, le client peut contrôler précisément le minutage des interruptions IOC qui se produisent pendant le traitement du flux audio. Les pilotes de modem audio utilisent également la deuxième version DDI pour recevoir des informations précises sur l’horloge système.

Pour plus d’informations, consultez la spécification audio haute définition Intel.

Toutefois, presque tous les clients utiliseront la version HDAUDIO_BUS_INTERFACE de l’interface DDI. Seuls quelques clients qui nécessitent un contrôle précis de la synchronisation des interruptions utiliseront la version de HDAUDIO_BUS_INTERFACE_BDL.