Procédure : lire un son avec XAudio2
Cette rubrique décrit les étapes minimales requises pour lire des données audio précédemment chargées dans XAudio2. Après avoir initialisé XAudio2 (voir Guide pratique pour initialiser XAudio2) et chargé les données audio (voir How to: How to: Load Audio Data Files in XAudio2), vous pouvez lire un son en créant une voix source et en lui transmettant des données audio.
Pour lire un son
Initialisez le moteur XAudio2 en suivant les étapes décrites dans Guide pratique pour initialiser XAudio2.
Remplissez une structure WAVEFORMATEX et XAUDIO2_BUFFER en suivant les étapes décrites dans Guide pratique pour charger des fichiers de données audio dans XAudio2.
Notes
Selon le format des données audio, vous devrez peut-être utiliser une structure de données plus grande contenant une structure WAVEFORMATEX à la place d’une structure WAVEFORMATEX. Pour plus d’informations, consultez la page de référence WAVEFORMATEX .
Créez une voix source en appelant la méthode IXAudio2::CreateSourceVoice sur un instance du moteur XAudio2. Le format de la voix est spécifié par les valeurs définies dans une structure WAVEFORMATEX .
IXAudio2SourceVoice* pSourceVoice; if( FAILED(hr = pXAudio2->CreateSourceVoice( &pSourceVoice, (WAVEFORMATEX*)&wfx ) ) ) return hr;
Envoyez un XAUDIO2_BUFFER à la voix source à l’aide de la fonction SubmitSourceBuffer.
if( FAILED(hr = pSourceVoice->SubmitSourceBuffer( &buffer ) ) ) return hr;
Notes
Les exemples de données audio vers lesquels les points de mémoire tampon sont toujours « détenus » par l’application et doivent rester alloués et accessibles jusqu’à ce que le son cesse de jouer.
Utilisez la fonction Start pour démarrer la voix source. Étant donné que toutes les voix XAudio2 envoient leur sortie à la voix de mastering par défaut, l’audio de la voix source se rend automatiquement vers le périphérique audio sélectionné lors de l’initialisation. Dans un graphique audio plus complexe, la voix source doit spécifier la voix à laquelle sa sortie doit être envoyée.
if ( FAILED(hr = pSourceVoice->Start( 0 ) ) ) return hr;
Remarques pour les applications du Windows Store
Nous vous recommandons d’utiliser un pointeur intelligent pour gérer la durée de vie des objets XAUDIO2 de manière sécurisée. Pour les applications du Windows Store, vous pouvez utiliser le modèle de pointeur intelligent ComPtr à partir de la bibliothèque de modèles C++ Windows Runtime (WRL).
Microsoft::WRL::ComPtr<IXAudio2SourceVoice> SourceVoice;
HRESULT hr;
if( FAILED(hr = pXAudio2->CreateSourceVoice( &SourceVoice, (WAVEFORMATEX*)&wfx ) ) )
throw Platform::Exception::CreateException(hr);
if( FAILED(hr = SourceVoice->SubmitSourceBuffer( &buffer ) ) )
throw Platform::Exception::CreateException(hr);
if ( FAILED(hr = SourceVoice->Start( 0 ) ) )
throw Platform::Exception::CreateException(hr);
Notes
Assurez-vous que tous les pointeurs intelligents vers les objets XAUDIO2 sont entièrement libérés avant de libérer l’objet IXAudio2 .
Rubriques connexes
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour