Share via


IXAudio2SourceVoice ::SubmitSourceBuffer, méthode (xaudio2.h)

Ajoute une nouvelle mémoire tampon audio à la file d’attente vocale.

Syntaxe

HRESULT SubmitSourceBuffer(
  [in] const XAUDIO2_BUFFER     *pBuffer,
  [in] const XAUDIO2_BUFFER_WMA *pBufferWMA
);

Paramètres

[in] pBuffer

Pointeur vers une structure de XAUDIO2_BUFFER vers la file d’attente.

[in] pBufferWMA

Pointeur vers une structure de XAUDIO2_BUFFER_WMA supplémentaire utilisée lors de l’envoi de données WMA.

Valeur retournée

Retourne S_OK en cas de réussite, un code d’erreur dans le cas contraire. Consultez Codes d’erreur XAudio2 pour obtenir une description des codes d’erreur spécifiques à XAudio2.

Remarques

La voix traite et lit les mémoires tampons dans sa file d’attente dans l’ordre dans lequel elles ont été envoyées.

La structure XAUDIO2_BUFFER inclut des détails sur l’emplacement et la taille de la mémoire tampon audio, la partie de la mémoire tampon qui doit être effectivement lue, la région de boucle (le cas échéant) et le nombre de boucles, le pointeur de contexte à utiliser dans les rappels relatifs à cette mémoire tampon, et un indicateur de XAUDIO2_END_OF_STREAM facultatif qui indique qu’il s’agit de la dernière mémoire tampon d’un son contigu.

Si la voix est démarrée et qu’aucune mémoire tampon n’est mise en file d’attente, la nouvelle mémoire tampon démarre immédiatement. Si la voix est arrêtée, la mémoire tampon est ajoutée à la file d’attente de la voix et est lue au démarrage de la voix.

Si seule une partie de la mémoire tampon donnée doit être lue, les champs PlayBegin et PlayLength dans le XAUDIO2_BUFFER peuvent être utilisés pour spécifier la région à lire. Une valeur PlayLength de 0 signifie lire la mémoire tampon entière (et dans ce cas , PlayBegin doit également être 0).

Si la totalité ou une partie de la mémoire tampon doit être lue dans une boucle continue, les champs LoopBegin, LoopLength et LoopCountdans XAUDIO2_BUFFER peuvent être utilisés pour spécifier les caractéristiques de la région de boucle. Une valeur LoopBegin de XAUDIO2_NO_LOOP_REGION signifie qu’aucune boucle ne doit être effectuée, et dans ce cas , LoopLength et LoopCount doivent être donnés comme 0. Si une région de boucle est spécifiée, elle doit être non vide (LoopLength> 0), et le nombre de boucles doit être compris entre 1 et XAUDIO2_MAX_LOOP_COUNT inclus (ou XAUDIO2_LOOP_INFINITE pour spécifier une boucle sans fin qui ne se terminera que lorsque IXAudio2SourceVoice ::ExitLoop est appelé). Un nombre de boucles de N signifie ignorer les N fois en arrière, c’est-à-dire lire la région de boucle N+1 fois.

Si une zone de lecture explicite est spécifiée, elle doit commencer et se terminer dans la mémoire tampon audio donnée (ou, dans le cas compressé, dans le jeu d’exemples vers lequel la mémoire tampon sera décodée). En outre, la région de boucle ne peut pas se terminer au-delà de la fin de la zone de lecture.

Xbox 360
Pour certains formats audio, il peut y avoir des restrictions supplémentaires sur les points de terminaison valides de toutes les régions de lecture ou de boucle ; Par exemple, pour les mémoires tampons XMA, les régions ne peuvent commencer ou se terminer qu’à des limites de 128 échantillons dans l’audio décodé.
 

Le pointeur pBuffer peut être réutilisé ou libéré immédiatement après l’appel de cette méthode, mais les données audio référencées par pBuffer doivent rester valides jusqu’à ce que la mémoire tampon ait été entièrement consommée par XAudio2 (ce qui est indiqué par le rappel IXAudio2VoiceCallback ::OnBufferEnd ).

Jusqu’à XAUDIO2_MAX_QUEUED_BUFFERS tampons peuvent être mis en file d’attente sur une voix à tout moment.

SubmitSourceBuffer prend effet immédiatement lorsqu’il est appelé à partir d’un rappel XAudio2 avec un OperationSet de XAUDIO2_COMMIT_NOW.

Xbox 360
Cette méthode peut être appelée à partir d’un thread système Xbox (la plupart des autres méthodes XAudio2 ne le peuvent pas). Toutefois, un maximum de deux mémoires tampons sources peuvent être envoyées à partir d’un thread système à la fois.
 

Configuration requise pour la plateforme

Windows 10 (XAudio2.9) ; Windows 8, Windows Phone 8 (XAudio 2.8) ; Kit de développement logiciel (SDK) DirectX (XAudio 2.7)

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête xaudio2.h

Voir aussi

Procédure : créer un graphique de traitement audio de base

Procédure : diffuser un son en continu à partir du disque

IXAudio2SourceVoice