À propos de WASAPI

L’API DE session audio Windows (WASAPI) permet aux applications clientes de gérer le flux de données audio entre l’application et un périphérique de point de terminaison audio.

Les fichiers d’en-tête Audioclient.h et Audiopolicy.h définissent les interfaces WASAPI.

Chaque flux audio est membre d’une session audio. Grâce à l’abstraction de session, un client WASAPI peut identifier un flux audio en tant que membre d’un groupe de flux audio associés. Le système peut gérer tous les flux de la session en une seule unité.

Le moteur audio est le composant audio en mode utilisateur via lequel les applications partagent l’accès à un appareil de point de terminaison audio. Le moteur audio transporte les données audio entre une mémoire tampon de point de terminaison et un appareil de point de terminaison. Pour lire un flux audio via un appareil de point de terminaison de rendu, une application écrit régulièrement des données audio dans une mémoire tampon de point de terminaison de rendu. Le moteur audio mixe les flux des différentes applications. Pour enregistrer un flux audio à partir d’un appareil de point de terminaison de capture, une application lit régulièrement les données audio d’une mémoire tampon de point de terminaison de capture.

WASAPI se compose de plusieurs interfaces. Le premier d’entre eux est l’interface IAudioClient . Pour accéder aux interfaces WASAPI, un client obtient d’abord une référence à l’interface IAudioClient d’un appareil de point de terminaison audio en appelant la méthode IMMDevice::Activate avec le paramètre iid défini sur REFIID IID_IAudioClient. Le client appelle la méthode IAudioClient::Initialize pour initialiser un flux sur un appareil de point de terminaison. Après avoir initialisé un flux, le client peut obtenir des références aux autres interfaces WASAPI en appelant la méthode IAudioClient::GetService .

La plupart des méthodes dans WASAPI retournent le code d’erreur AUDCLNT_E_DEVICE_INVALIDATED si le périphérique de point de terminaison audio utilisé par une application cliente ne devient pas valide. Souvent, l’application peut récupérer à partir de cette erreur. Pour plus d’informations, consultez Récupération d’une erreur de Invalid-Device.

WASAPI implémente les interfaces suivantes.

Interface Description
IAudioCaptureClient Permet à un client de lire des données d’entrée à partir d’une mémoire tampon de point de terminaison de capture.
IAudioClient Permet à un client de créer et d’initialiser un flux audio entre une application audio et le moteur audio ou la mémoire tampon matérielle d’un périphérique de point de terminaison audio.
IAudioClock Permet à un client de surveiller le débit de données d’un flux et la position actuelle dans le flux.
IAudioRenderClient Permet à un client d’écrire des données de sortie dans une mémoire tampon de point de terminaison de rendu.
IAudioSessionControl Permet à un client de configurer les paramètres de contrôle d’une session audio et de surveiller les événements de la session.
IAudioSessionManager Permet à un client d’accéder aux contrôles de session et aux contrôles de volume pour les sessions audio interprocesseurs et spécifiques aux processus.
IAudioStreamVolume Permet à un client de contrôler et de surveiller les niveaux de volume de tous les canaux d’un flux audio.
IChannelAudioVolume Permet à un client de contrôler les niveaux de volume pour tous les canaux de la session audio auquel appartient le flux.
ISimpleAudioVolume Permet à un client de contrôler le niveau de volume master d’une session audio.

 

Les clients WASAPI qui nécessitent une notification d’événements liés à la session doivent implémenter l’interface suivante.

Interface Description
IAudioSessionEvents Fournit des notifications d’événements liés à la session, tels que les modifications apportées au niveau du volume, au nom complet et à l’état de la session.

 

Gestion des flux

Guide de référence de programmation