Différences entre les versions DDI audio HD

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

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

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

  • Version modifiée de la DDI Audio HD définie par la structure HDAUDIO_BUS_INTERFACE_BDL . Cette version répond aux exigences d’un nombre relativement restreint 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 (BDL) pour les opérations DMA. Cette version de la DDI est disponible pour Windows XP et les versions ultérieures de Windows. Toutefois, utilisez le 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 INTERFACE . Pour plus d’informations sur les valeurs de ces membres, consultez Obtention d’un objet DDI HDAUDIO_BUS_INTERFACE, Obtention d’un objet DDI HDAUDIO_BUS_INTERFACE_V2 ou Obtention d’un objet DDI HDAUDIO_BUS_INTERFACE_BDL.

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

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

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

  • Modifiez l’état de flux d’un ou de plusieurs moteurs DMA en cours d’exécution, en pause, en arrêt ou en réinitialisation.

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

  • Fournir un accès direct au registre de l’horloge murale et lier les registres de position.

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

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

Les versions HDAUDIO_BUS_INTERFACE et HDAUDIO_BUS_INTERFACE_BDL de d’id de base de données présentent les différences suivantes :

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

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

  • Initialise le BDL.

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

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

Le fichier BDL contient la liste des blocs de mémoire physique dans la file d’attente de nuages de points/regroupements du moteur DMA. En appelant SetupDmaEngineWithBdl pour configurer le BDL, le client peut spécifier les points dans le flux de données au niveau desquels le moteur DMA génère des interruptions. Pour ce faire, le client définit le bit d’interruption lors de 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 de DDI pour obtenir des informations d’horloge système précises.

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

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