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.
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