RenderSharedEventDriven
Cet exemple d’application utilise les API audio de base pour afficher les données audio sur un périphérique de sortie, spécifié par l’utilisateur. Cet exemple illustre la mise en mémoire tampon pilotée par les événements pour un client de rendu en mode partagé. Pour un flux en mode partagé, le client partage la mémoire tampon du point de terminaison avec le moteur audio.
Cette rubrique contient les sections suivantes.
- Description
- Configuration requise
- Téléchargement de l’exemple
- Génération de l'exemple
- Exécution de l’exemple
- Rubriques connexes
Description
Cet exemple illustre les fonctionnalités suivantes.
- API MMDevice pour l’énumération et la sélection des appareils multimédias.
- WASAPI pour les opérations de gestion de flux.
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 d’accès/URL |
|---|---|
| Kit de développement logiciel (SDK) Windows | \Program Files \ Microsoft sdk \ Windows \ v 7.0 \ samples \ \ Audio Multimedia \ RenderSharedEventDriven \ ... |
Génération de l'exemple
Pour générer l’exemple RenderSharedEventDriven, procédez comme suit :
- ouvrez l’interpréteur de commandes pour le SDK Windows et accédez au répertoire d’exemple RenderSharedEventDriven.
- exécutez la commande
start WASAPIRenderSharedEventDriven.slndans le répertoire RenderSharedEventDriven pour ouvrir le projet WASAPIRenderSharedEventDriven dans la fenêtre Visual Studio. - À partir de la fenêtre, sélectionnez la configuration de la solution Debug ou Release , 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 du shell CMD pour le kit de développement logiciel (sdk), Visual Studio n’aura pas accès à l’environnement de génération du kit de développement logiciel (sdk). Dans ce cas, l’exemple n’est pas généré, sauf si vous définissez explicitement la variable d’environnement MSSdk, qui est utilisée dans le fichier projet, WASAPIRenderSharedEventDriven. vcproj.
Exécution de l'exemple
Si vous générez l’application de démonstration avec succès, un fichier exécutable, WASAPIRenderSharedEventDriven.exe, est généré. Pour l’exécuter, tapez WASAPIRenderSharedEventDriven dans une fenêtre de commande suivie d’arguments obligatoires ou facultatifs. L’exemple suivant montre comment exécuter l’exemple en spécifiant la durée de lecture sur le périphérique multimédia par défaut.
WASAPIRenderSharedEventDriven.exe -d 20 -multimedia
Le tableau suivant indique les arguments.
| Argument | Description |
|---|---|
| -? | Affiche l’aide. |
| -H | Affiche l’aide. |
| -f | Fréquence des vagues sinusoïdales en Hz. |
| -l | Latence du rendu audio en millisecondes. |
| -d | Durée de l’onde sinusoïdale en secondes. |
| -M | Désactive l’utilisation de MMCSS. |
| -Console | Utilisez l’appareil de la console par défaut. |
| -Communications | Utilisez l’appareil de communication par défaut. |
| -multimédia | Utilisez l’appareil multimédia par défaut. |
| -point de terminaison | Utilisez l’identificateur de point de terminaison spécifié dans la valeur de commutateur. |
Si l’application est exécutée sans arguments, elle énumère les périphériques disponibles et invite l’utilisateur à sélectionner un appareil pour la session de rendu. Une fois que l’utilisateur a spécifié un appareil, l’application affiche une vague sinusoïdale à 440 Hz pendant 10 secondes. Ces valeurs peuvent être modifiées en spécifiant des valeurs de commutateur-f et-d.
RenderSharedEventDriven illustre la mise en mémoire tampon pilotée par les événements. L’exemple montre comment effectuer les opérations suivantes :
- Instanciez un client audio, configurez-le pour qu’il s’exécute en mode exclusif et activez la mise en mémoire tampon pilotée par les événements en définissant l’indicateur AUDCLNT _ STREAMFLAGS _ EventCallback suivante dans l’appel à IAudioClient :: Initialize.
- Associez le client aux exemples qui sont prêts à être rendus en fournissant un handle d’événement au système en appelant la méthode IAudioClient :: SetEventHandle .
- Créez un thread de rendu pour effectuer des exemples de traitement à partir du moteur audio.
- Vérifiez le format Mix du point de terminaison de l’appareil pour déterminer si les exemples peuvent être rendus. Si l’appareil ne prend pas en charge le format Mix, les données sont converties en PCM.
- Gérer le basculement de flux.
Après le début de la session de rendu et le démarrage du flux, le moteur audio signale le handle d’événement fourni pour notifier le client chaque fois qu’une mémoire tampon est prête pour le traitement du client. Les données audio peuvent également être traitées dans une boucle pilotée par une minuterie. Ce mode est illustré dans l’exemple RenderSharedTimerDriven .
Pour plus d’informations sur le rendu d’un flux, consultez rendu d’un flux.