Partager via


DuckingCaptureSample

Cet exemple d’application montre comment ouvrir et fermer des flux de communication et provoquer des événements de candeur qu’une application peut obtenir pour implémenter l’atténuation de flux. Cette application implémente un client de conversation qui utilise les API Core Audio pour lire les données audio d’un appareil de communication et les lire sur l’appareil de sortie.

Cette rubrique contient les sections suivantes.

Description

Cet exemple illustre les fonctionnalités suivantes.

  • API MMDevice pour l’énumération et la sélection d’appareils multimédias.
  • WASAPI pour accéder à l’appareil de capture et de rendu des communications, les opérations de gestion de flux et la gestion des événements de canardage.
  • API WAVE pour accéder au périphérique de communication et capturer l’entrée audio.

Spécifications

Produit Version
SDK Windows Windows 7
Visual Studio 2008

 

Téléchargement de l’exemple

Cet exemple est disponible aux emplacements suivants.

Emplacement Chemin/URL
Kit de développement logiciel (SDK) Windows \Program Files\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\DuckingCaptureSample\...

 

Génération de l'exemple

Pour générer l’exemple DuckingCaptureSample, procédez comme suit :

  1. Ouvrez DuckingCaptureSample.sln dans Visual Studio 2008.
  2. Dans la fenêtre, sélectionnez la configuration de la solution Déboguer ou Mettre en production , sélectionnez le menu Générer dans la barre de menus, puis sélectionnez l’option Générer . Si vous n’ouvrez pas Visual Studio à partir de l’interpréteur de commandes CMD pour le SDK, Visual Studio n’aura pas accès à l’environnement de génération du SDK. Dans ce cas, l’exemple ne sera pas généré, sauf si vous définissez explicitement la variable d’environnement MSSdk, qui est utilisée dans le fichier projet, DuckingCaptureSample.vcproj.

Exécution de l'exemple

Si vous générez correctement l’application, un fichier exécutable, DuckingCaptureSample.exe, est généré. Pour l’exécuter, sélectionnez Démarrer le débogage ou Démarrer sans débogage dans le menu Déboguer ou tapez DuckingCaptureSample dans une fenêtre de commande.

DuckingCaptureSample fournit à l’utilisateur deux implémentations pour capturer l’audio à partir de l’appareil de console par défaut : LES API WASAPI et Wave. Pour démarrer une session de capture, sélectionnez un mode et cliquez sur Démarrer dans l’interface utilisateur de l’application. Pour mettre fin à la session, cliquez sur Arrêter. Selon l’appareil spécifié par l’utilisateur (entrée ou sortie), l’application utilise l’API MMDevice pour obtenir une référence au périphérique de communication de rendu ou de capture par défaut. Une fois que l’utilisateur a démarré une session de conversation, l’application effectue les tâches suivantes :

  • Crée et initialise un client audio en mode piloté par les événements.
  • Associe le client au handle d’événement qui indique que les exemples sont prêts pour la capture ou le rendu.
  • Configure un client de capture et un client de rendu pour le transport.
  • Crée le thread de conversation et démarre le moteur audio.

Pour capturer des données audio, à chaque passe de traitement, l’exemple utilise le client de capture pour obtenir la quantité totale de données capturées disponibles dans la mémoire tampon, lire les données du périphérique d’entrée par défaut, libérer le paquet et rendre la mémoire tampon disponible pour la lecture du jeu de données capturé suivant.

Pour le rendu, l’application détermine la quantité de données mises en file d’attente pour être lues dans la mémoire tampon du point de terminaison de capture. En conséquence, il écrit dans la mémoire tampon et libère la mémoire tampon en vue de la passe de traitement suivante jusqu’à ce que toutes les données soient écrites. Pour le rendu, les images silencieuses sont prérouillées afin d’éviter que le moteur audio ne gante au démarrage. DuckingCaptureSample montre également comment masquer le flux de rendu du mélangeur de volumes.

Pour plus d’informations sur la fonctionnalité d’atténuation de flux, consultez Utilisation d’un appareil de communication.

Exemples de SDK qui utilisent les API audio de base