Enregistrement de bouclage
En mode bouclage, un client de WASAPI peut capturer le flux audio en cours de lecture par un appareil de point de terminaison de rendu. Pour ouvrir un flux en mode bouclage, le client doit :
- Obtenez une interface IMMDevice pour l’appareil de point de terminaison de rendu.
- Initialisez un flux de capture en mode bouclage sur l’appareil de point de terminaison de rendu.
Après avoir suivi ces étapes, le client peut appeler la méthode IAudioClient ::GetService pour obtenir une interface IAudioCaptureClient sur l’appareil de point de terminaison de rendu.
WASAPI fournit le mode de bouclage principalement pour prendre en charge l’annulation d’écho acoustique (AEC). Toutefois, d’autres types d’applications audio peuvent trouver le mode de bouclage utile pour capturer la combinaison système en cours de lecture par le moteur audio.
Dans l’exemple de code de capture d’un flux, la fonction RecordAudioStream peut être facilement modifiée pour configurer un flux de capture en mode bouclage. Les modifications requises sont les suivantes :
- Dans l’appel à la méthode IMMDeviceEnumerator ::GetDefaultAudioEndpoint, remplacez le premier paramètre (dataFlow) par eCapture par eRender.
- Dans l’appel à la méthode IAudioClient ::Initialize, remplacez la valeur du deuxième paramètre (StreamFlags) de 0 à AUDCLNT_STREAMFLAGS_LOOPBACK.
Dans les versions de Windows antérieures à Windows 10 1703, le client de capture en mode pull ne reçoit aucun événement lorsqu’un flux est initialisé avec la mise en mémoire tampon pilotée par les événements et est activé pour la bouclage. Pour contourner ce problème, initialisez un flux de rendu en mode piloté par les événements. Chaque fois que le client reçoit un événement pour le flux de rendu, il doit signaler au client de capture d’exécuter le thread de capture qui lit le jeu d’exemples suivant à partir de la mémoire tampon du point de terminaison de capture. Dans les versions 1703 et ultérieures de Windows 10, les clients de bouclage pilotés par les événements sont pris en charge et n’ont plus besoin de la solution de contournement impliquant le flux de rendu.
Un client peut activer le mode bouclage uniquement pour un flux en mode partagé (AUDCLNT_SHAREMODE_SHARED). Les flux en mode exclusif ne peuvent pas fonctionner en mode bouclage.
L’implémentation de la bouclage par WASAPI dépend des fonctionnalités du matériel. Si le matériel prend en charge une broche de bouclage sur le point de terminaison de rendu, WASAPI utilise l’audio fourni sur cette broche pour le flux de bouclage. Lorsque le matériel ne prend pas en charge une broche de bouclage, WASAPI copie le flux de sortie du moteur audio dans la mémoire tampon de capture de l’application de bouclage, en plus de copier les données audio dans la broche de rendu du matériel.
Certains fournisseurs de matériel implémentent des appareils de bouclage (par opposition à épingler des instances sur des appareils de rendu) dans leurs adaptateurs audio. Bien que les périphériques de bouclage matériel soient similaires au mode de bouclage WASAPI, ils peuvent être plus difficiles à utiliser.
Les appareils de bouclage matériel présentent les inconvénients suivants pour les applications audio :
- Tous les adaptateurs audio ne disposent pas d’appareils de bouclage. Ainsi, les applications qui en dépendent ne fonctionneront pas sur tous les systèmes.
- Avant qu’une application puisse enregistrer à partir d’un appareil de bouclage, l’utilisateur doit identifier l’appareil de bouclage et l’activer à utiliser.
Différents fournisseurs attribuent différents noms à leurs appareils de bouclage matériel. Les noms suivants sont des exemples :
- Mix stéréo
- Mélange waveout
- Sortie mixte
- Ce que vous entendez
L’absence de noms standardisés peut entraîner des difficultés à identifier un appareil de bouclage dans une liste de noms d’appareils.
Un appareil de bouclage matériel est un appareil de capture. Par conséquent, si un adaptateur prend en charge un périphérique de bouclage, une application audio peut enregistrer à partir de l’appareil de la même façon qu’elle enregistre à partir d’un autre appareil de capture.
Par exemple, si vous sélectionnez un périphérique de bouclage matériel pour être l’appareil de capture par défaut, vous pouvez utiliser la fonction RecordAudioStream (sans modification) dans l’exemple de code de capture d’un flux pour capturer le flux à partir de l’appareil. (Vous pouvez également utiliser une API audio héritée, telle que les fonctions waveInXxx multimédia Windows, pour capturer le flux à partir de l’appareil.)
Si votre carte audio contient un périphérique de bouclage matériel, vous pouvez utiliser le panneau de configuration multimédia Windows, Mmsys.cpl, pour désigner l’appareil comme appareil de capture par défaut. La procédure comporte trois étapes :
Pour exécuter Mmsys.cpl, ouvrez une fenêtre d’invite de commandes et entrez la commande suivante :
control mmsys.cpl
Vous pouvez également exécuter Mmsys.cpl en cliquant avec le bouton droit sur l’icône du haut-parleur dans la zone de notification, située à droite de la barre des tâches, puis en sélectionnant Appareils d’enregistrement.
Une fois la fenêtre Mmsys.cpl ouverte, cliquez avec le bouton droit n’importe où dans la liste des appareils d’enregistrement et vérifiez que l’option Afficher les appareils désactivés est cochée. (Sinon, si l’appareil de bouclage est désactivé, il n’apparaît pas dans la liste.)
Parcourez la liste des appareils d’enregistrement pour localiser l’appareil de bouclage (s’il existe). Si l’appareil de bouclage est désactivé, activez-le en cliquant avec le bouton droit sur l’appareil et en cliquant sur Activer.
Enfin, pour sélectionner l’appareil de bouclage comme appareil de capture par défaut, cliquez avec le bouton droit sur l’appareil, puis cliquez sur Définir comme appareil par défaut.
WASAPI prend en charge l’enregistrement de bouclage, que le matériel audio contienne un appareil de bouclage ou que l’utilisateur ait activé l’appareil.
Windows Vista fournit la gestion des droits numériques (DRM). Les fournisseurs de contenu s’appuient sur DRM pour protéger leur musique propriétaire ou tout autre contenu contre la copie non autorisée et d’autres utilisations illégales. De même, un pilote audio approuvé n’autorise pas un périphérique de bouclage à capturer des flux numériques qui contiennent du contenu protégé. Windows Vista autorise uniquement les pilotes approuvés à lire du contenu protégé. Pour plus d’informations sur les pilotes approuvés et la gestion des droits numériques, consultez la documentation du DDK Windows.
La bouclage WASAPI par défaut contient la combinaison de tous les éléments audio en cours de lecture, quelle que soit la session Terminal Services à partir de laquelle l’audio provient. Par exemple, vous pouvez exécuter un client de bouclage dans un service s’exécutant dans la session 0 et capturer l’audio de toutes les sessions utilisateur, ainsi que l’audio lu à partir de la session 0.
À compter de Windows 10 Build 20348, vous pouvez inclure ou exclure des processus spécifiques et leurs enfants de la capture de bouclage en passant un AUDIOCLIENT_ACTIVATION_PARAMS dans l’appel à IMMDevice ::Activate. Consultez l’exemple de capture audio de bouclage d’application.
Le Bureau à distance permet de rediriger l’audio vers le client. Cette opération est implémentée en créant de nouveaux appareils audio qui apparaissent uniquement pour cette session.
Rubriques connexes