Share via


composants audio User-Mode

Dans Windows Vista, les API audio principales servent de base au sous-système audio en mode utilisateur. Les API audio principales sont implémentées en tant que couche mince de composants système en mode utilisateur qui séparent les clients en mode utilisateur des pilotes audio en mode noyau et du matériel audio. Les API audio de niveau supérieur, telles que DirectSound et les fonctions multimédias Windows, accèdent aux appareils audio via les API audio principales. En outre, certaines applications audio communiquent directement avec les API audio principales.

Les API audio principales prennent en charge la notion conviviale d’un appareil de point de terminaison audio. Un appareil de point de terminaison audio est une abstraction logicielle qui représente un appareil physique que l’utilisateur manipule directement. Les haut-parleurs, les écouteurs et les microphones sont des exemples de périphériques de point de terminaison audio. Pour plus d’informations, consultez Appareils de point de terminaison audio.

Le diagramme suivant montre les API audio principales et leur relation avec les autres composants audio en mode utilisateur dans Windows Vista.

diagramme des composants de rendu audio en mode utilisateur

Par souci de simplicité, le diagramme précédent montre uniquement un chemin d’accès aux données de rendu audio vers l’appareil de point de terminaison. Le diagramme n’affiche pas de chemin d’accès de données de capture audio. Les API audio principales incluent l’API MMDevice, WASAPI, l’API DeviceTopology et l’API EndpointVolume, qui sont implémentées dans les modules système Audioses.dll et Mmdevapi.dll en mode utilisateur.

Comme indiqué dans le diagramme précédent, les API audio principales fournissent une base pour les API de niveau supérieur suivantes :

  • Media Foundation
  • Fonctions waveXxx et mixerXxx multimédia Windows
  • Directsound
  • Directmusic

DirectSound, les fonctions audio multimédia Windows et Media Foundation (via son composant de rendu audio de streaming, ou SAR) communiquent directement avec les API audio principales. DirectMusic communique indirectement avec les API audio principales via DirectSound.

Un client de WASAPI transmet des données à un appareil de point de terminaison via une mémoire tampon de point de terminaison. Les composants logiciels et matériels système gèrent le déplacement des données de la mémoire tampon du point de terminaison vers l’appareil de point de terminaison d’une manière largement transparente pour le client. En outre, pour un appareil de point de terminaison qui se connecte à une carte audio avec détection de présence jack, le client peut créer une mémoire tampon de point de terminaison uniquement pour un appareil de point de terminaison physiquement présent. Pour plus d’informations sur la détection de présence jack, consultez Appareils de point de terminaison audio.

Le diagramme précédent montre deux types de mémoire tampon de point de terminaison. Si un client de WASAPI ouvre un flux en mode partagé, le client écrit les données audio dans la mémoire tampon du point de terminaison et le moteur audio Windows lit les données de la mémoire tampon. Dans ce mode, le client partage le matériel audio avec d’autres applications s’exécutant dans d’autres processus. Le moteur audio mixe les flux de ces applications et lit le mix résultant via le matériel. Le moteur audio est un composant système en mode utilisateur (Audiodg.dll) qui effectue toutes ses opérations de traitement de flux dans un logiciel. En revanche, si un client ouvre un flux en mode exclusif, le client dispose d’un accès exclusif au matériel audio. En règle générale, seul un petit nombre d’applications « pro audio » ou RTC nécessitent un mode exclusif. Bien que le diagramme montre à la fois les flux en mode partagé et en mode exclusif, un seul de ces deux flux (et sa mémoire tampon de point de terminaison correspondante) existe, selon que le client ouvre le flux en mode partagé ou en mode exclusif.

En mode exclusif, le client peut choisir d’ouvrir le flux dans n’importe quel format audio pris en charge par l’appareil de point de terminaison. En mode partagé, le client doit ouvrir le flux dans le format de mixage actuellement utilisé par le moteur audio (ou un format similaire au format de mixage). Les flux d’entrée du moteur audio et le mix de sortie du moteur sont tous dans ce format.

Dans Windows 7, une nouvelle fonctionnalité appelée mode faible latence a été ajoutée pour les flux en mode partage. Dans ce mode, le moteur audio s’exécute en mode pull, ce qui entraîne une réduction significative de la latence. Cela est très utile pour les applications de communication qui nécessitent une faible latence de flux audio pour accélérer la diffusion en continu.

Les applications qui gèrent des flux audio à faible latence peuvent utiliser le service MmCSS (Multimedia Class Scheduler Service) dans Windows Vista pour augmenter la priorité des threads d’application qui accèdent aux mémoires tampons de point de terminaison. MMCSS permet aux applications audio de s’exécuter à priorité élevée sans refuser les ressources processeur aux applications de priorité inférieure. MMCSS attribue une priorité à un thread en fonction de son nom de tâche. Par exemple, Windows Vista prend en charge les noms de tâches « Audio » et « Audio professionnel » pour les threads qui gèrent les flux audio. Par défaut, la priorité d’un thread « Pro Audio » est supérieure à celle d’un thread « Audio ». Pour plus d’informations sur MMCSS, consultez la documentation du Kit de développement logiciel (SDK) Windows.

Les API audio principales prennent en charge les formats de flux PCM et non PCM. Toutefois, le moteur audio ne peut mélanger que des flux PCM. Ainsi, seuls les flux en mode exclusif peuvent avoir des formats non PCM. Pour plus d’informations, consultez Formats d’appareil.

Le moteur audio s’exécute dans son propre processus protégé, qui est distinct du processus dans lequel l’application s’exécute. Pour prendre en charge un flux en mode partagé, le service audio Windows (zone intitulée « Service audio » dans le diagramme précédent) alloue une mémoire tampon de point de terminaison interprocesseur accessible à l’application et au moteur audio. Pour le mode exclusif, la mémoire tampon du point de terminaison réside dans la mémoire accessible à l’application et au matériel audio.

Le service audio Windows est le module qui implémente la stratégie audio Windows. La stratégie audio est un ensemble de règles internes que le système applique aux interactions entre les flux audio de plusieurs applications qui partagent et concurrencent l’utilisation du même matériel audio. Le service audio Windows implémente une stratégie audio en définissant les paramètres de contrôle du moteur audio. Les tâches du service audio sont les suivantes :

  • Suivi des périphériques audio que l’utilisateur ajoute ou supprime du système.
  • Surveillance des rôles attribués aux périphériques audio dans le système.
  • Gestion des flux audio à partir de groupes de tâches qui produisent des classes similaires de contenu audio (console, multimédia et communications).
  • Contrôle du niveau de volume du flux de sortie combiné (« sous-mix ») pour chacun des différents types de contenu audio.
  • Information du moteur audio sur les éléments de traitement dans les chemins de données des flux audio.

Dans certaines versions de Windows, le service audio Windows est désactivé par défaut et doit être explicitement activé pour que le système puisse lire l’audio.

Dans l’exemple illustré dans le diagramme précédent, le périphérique de point de terminaison est un ensemble d’haut-parleurs connectés à la carte audio. L’application cliente écrit des données audio dans la mémoire tampon du point de terminaison, et le moteur audio gère les détails du transport des données de la mémoire tampon vers l’appareil de point de terminaison.

La zone intitulée « Pilote audio » dans le diagramme précédent peut être une combinaison de composants de pilotes fournis par le système et fournis par le fournisseur. Dans le cas d’une carte audio sur un bus PCI ou PCI Express, le système fournit le pilote système de classe de port (Portcls.sys), qui implémente un ensemble de pilotes de port pour les différentes fonctions audio de l’adaptateur, et le fournisseur de matériel fournit un pilote d’adaptateur qui implémente un ensemble de pilotes miniports pour gérer les opérations spécifiques des périphériques pour les pilotes de port. Dans le cas d’un contrôleur audio haute définition et d’un codec sur un bus PCI ou PCI Express, le système fournit le pilote de l’adaptateur (Hdaudio.sys), et aucun pilote fourni par le fournisseur n’est nécessaire. Dans le cas d’un adaptateur audio sur un bus USB, le système fournit le pilote système de classe AVStream (Ks.sys) plus le pilote audio USB (Usbaudio.sys) ; là encore, aucun pilote fourni par le fournisseur n’est nécessaire.

Par souci de simplicité, le diagramme précédent montre uniquement les flux de rendu. Toutefois, les API audio principales prennent également en charge les flux de capture. En mode partagé, plusieurs clients peuvent partager le flux capturé à partir d’un périphérique matériel audio. En mode exclusif, un client dispose d’un accès exclusif au flux capturé à partir de l’appareil.

Guide de programmation