Partager via


structure XAUDIO2_BUFFER (xaudio2.h)

Représente une mémoire tampon de données audio, utilisée avec IXAudio2SourceVoice::SubmitSourceBuffer.

Syntaxe

typedef struct XAUDIO2_BUFFER {
  UINT32     Flags;
  UINT32     AudioBytes;
  const BYTE *pAudioData;
  UINT32     PlayBegin;
  UINT32     PlayLength;
  UINT32     LoopBegin;
  UINT32     LoopLength;
  UINT32     LoopCount;
  void       *pContext;
} XAUDIO2_BUFFER;

Membres

Flags

Indicateurs qui fournissent des informations supplémentaires sur la mémoire tampon audio. Peut être 0 ou la valeur suivante.

Valeur Description
XAUDIO2_END_OF_STREAM Indique qu’il ne peut pas y avoir de mémoire tampon dans la file d’attente après cette mémoire tampon. Le seul effet de cet indicateur est de supprimer les avertissements de sortie de débogage provoqués par l’insuffisance de la file d’attente de la mémoire tampon. 

AudioBytes

Taille des données audio, en octets. Ne doit pas être supérieur à XAUDIO2_MAX_BUFFER_BYTES (défini dans xaudio2.h) pour les données PCM et pas supérieur à XMA_READBUFFER_MAX_BYTES (défini dans xma2defs.h) pour les données XMA.

Note Les mémoires tampons XMA envoyées à une voix XAudio2 à l’aide de IXAudio2SourceVoice::SubmitSourceBuffer doivent contenir des blocs XMA complets. Un bloc XMA complet doit avoir une taille égale à la XMA2WAVEFORMATEX. Valeur BytesPerBlock , à l’exception du dernier bloc XMA dans un fichier, qui peut être plus court, mais sera toujours considéré comme terminé.
 

pAudioData

Pointeur vers les données audio.

Xbox 360
La mémoire allouée pour une mémoire tampon contenant des données XMA doit avoir un alignement de bloc de 2048. Cette opération est effectuée à l’aide de XPhysicalAlloc avec l’argument ulAlignment défini sur 2048.

PlayBegin

Premier échantillon dans la mémoire tampon qui doit être lu.

Pour les mémoires tampons XMA, cette valeur doit être un multiple de 128 exemples.

PlayLength

Longueur de la région à lire, dans les échantillons. Une valeur de zéro signifie que la mémoire tampon entière est lue et, dans ce cas, PlayBegin doit également être égal à zéro. Pour les données ADPCM, cette valeur doit être un multiple de wSamplesPerBlock dans la structure ADPCMWAVEFORMAT qui contient cette structure XAUDIO2_BUFFER .

LoopBegin

Premier exemple de la région à boucler. La valeur de LoopBegin doit être inférieure à PlayBegin + PlayLength. LoopBegin peut être inférieur à PlayBegin. LoopBegin doit être 0 si LoopCount a la valeur 0.

LoopLength

Longueur de la région de boucle, dans les exemples. La valeur de LoopBegin+LoopLength doit être supérieure à PlayBegin et inférieure à PlayBegin + PlayLength. LoopLength doit être égal à zéro si LoopCount a la valeur 0. Si LoopCount n’a pas la valeur 0, une longueur de boucle égale à zéro indique que l’échantillon entier doit être bouclé. Pour les données ADPCM, cette valeur doit être un multiple de wSamplesPerBlock dans la structure ADPCMWAVEFORMAT qui contient cette structure XAUDIO2_BUFFER .

LoopCount

Nombre de fois où effectuer une boucle dans la région de la boucle. Cette valeur peut être comprise entre 0 et XAUDIO2_MAX_LOOP_COUNT. Si LoopCount a la valeur zéro, aucune boucle n’est effectuée et LoopBegin et LoopLength doivent avoir la valeur 0. Pour boucler indéfiniment, définissez LoopCount sur XAUDIO2_LOOP_INFINITE.

pContext

Valeur de contexte à renvoyer dans les rappels au client. Il peut s’agir de NULL.

Remarques

Les données audio XAudio2 sont entrelacées, les données de chaque canal sont adjacentes à un numéro d’échantillon particulier. Par exemple, si une onde à 4 canaux est lue dans une voix source XAudio2, les données audio sont un échantillon de canal 0, un échantillon de canal 1, un échantillon de canal 2, un échantillon de canal 3, puis l’échantillon suivant des canaux 0, 1, 2, 3, etc.

Les membres AudioBytes et pAudioData de XAUDIO2_BUFFER correspondent à la taille en octets et au contenu du bloc RIFF « data » du fichier en cours de lecture. Le contenu du bloc peut nécessiter un échange d’octets lors du chargement du fichier sur Xbox 360.

La mémoire allouée pour contenir une structure XAUDIO2_BUFFER ou XAUDIO2_BUFFER_WMA peut être libérée dès que l’appel IXAudio2SourceVoice::SubmitSourceBuffer est passé à des retours. Les données vers laquelle la structure pointe (pAudioData et pDecodedPacketCumulativeBytes, respectivement) ne peuvent pas être libérées tant que la mémoire tampon n’est pas terminée (comme indiqué par le rappel IXAudio2VoiceCallback::OnBufferEnd ) ou que la voix est arrêtée ou détruite.

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)

Spécifications

   
En-tête xaudio2.h

Voir aussi

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

IXAudio2SourceVoice::SubmitSourceBuffer

XAudio2 Structures