Condividi tramite


XAUDIO2_BUFFER struttura (xaudio2.h)

Rappresenta un buffer di dati audio, usato con IXAudio2SourceVoice::SubmitSourceBuffer.

Sintassi

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;

Members

Flags

Flag che forniscono informazioni aggiuntive sul buffer audio. Può essere 0 o il valore seguente.

Valore Descrizione
XAUDIO2_END_OF_STREAM Indica che non è possibile inserire buffer nella coda dopo questo buffer. L'unico effetto di questo flag consiste nell'eliminare gli avvisi di output di debug causati dalla fame della coda del buffer. 

AudioBytes

Dimensioni dei dati audio, in byte. Non deve essere maggiore di XAUDIO2_MAX_BUFFER_BYTES (definito in xaudio2.h) per i dati PCM e non superiore a XMA_READBUFFER_MAX_BYTES (definito in xma2defs.h) per i dati XMA.

Nota I buffer XMA inviati a una voce XAudio2 usando IXAudio2SourceVoice::SubmitSourceBuffer devono contenere blocchi XMA completi. Un blocco XMA completo deve essere uguale alle dimensioni del XMA2WAVEFORMATEX. Valore BytesPerBlock , ad eccezione dell'ultimo blocco XMA in un file, che può essere più breve, ma sarà comunque considerato completo.
 

pAudioData

Puntatore ai dati audio.

Xbox 360
La memoria allocata per un buffer contenente i dati XMA deve avere un allineamento a blocchi pari a 2048. Questa operazione viene eseguita usando XPhysicalAlloc con l'argomento ulAlignment impostato su 2048.

PlayBegin

Primo esempio nel buffer che deve essere riprodotto.

Per i buffer XMA questo valore deve essere un multiplo di 128 esempi.

PlayLength

Lunghezza dell'area da riprodurre, in esempi. Un valore pari a zero significa riprodurre l'intero buffer e, in questo caso, PlayBegin deve anche essere zero. Per i dati ADPCM questo valore deve essere un multiplo di wSamplesPerBlock nella struttura ADPCMWAVEFORMAT che contiene questa struttura XAUDIO2_BUFFER .

LoopBegin

Primo esempio dell'area da eseguire in ciclo. Il valore di LoopBegin deve essere minore di PlayBegin + PlayLength. LoopBegin può essere minore di PlayBegin. LoopBegin deve essere 0 se LoopCount è 0.

LoopLength

Lunghezza dell'area del ciclo, negli esempi. Il valore di LoopBeginLoopLength deve essere maggiore di PlayBegin+ e minore di PlayBegin + PlayLength. LoopLength deve essere zero se LoopCount è 0. Se LoopCount non è 0, un ciclo di lunghezza pari a zero indica che l'intero esempio deve essere eseguito in ciclo. Per i dati ADPCM questo valore deve essere un multiplo di wSamplesPerBlock nella struttura ADPCMWAVEFORMAT che contiene questa struttura XAUDIO2_BUFFER .

LoopCount

Numero di volte in cui eseguire il ciclo attraverso l'area del ciclo. Questo valore può essere compreso tra 0 e XAUDIO2_MAX_LOOP_COUNT. Se LoopCount non viene eseguito alcun ciclo e LoopBegin e LoopLength devono essere 0. Per eseguire il ciclo per sempre, impostare LoopCount su XAUDIO2_LOOP_INFINITE.

pContext

Valore di contesto da passare nuovamente nei callback al client. Può trattarsi di NULL.

Commenti

I dati audio XAudio2 sono interleaved, i dati di ogni canale sono adiacenti per un determinato numero di esempio. Ad esempio, se si è verificato un'onda di 4 canali in una voce di origine XAudio2, i dati audio sarebbero un esempio di canale 0, un esempio di canale 1, un esempio di canale 2, un esempio di canale 3 e quindi l'esempio successivo di canali 0, 1, 2, 3 e così via.

I membri audioByte e pAudioData di XAUDIO2_BUFFER corrispondono alle dimensioni in byte e contenuto del blocco RIFF "dati" del file riprodotto. Il contenuto del blocco potrebbe essere necessario scambiare byte durante il caricamento del file in Xbox 360.

La memoria allocata per contenere una XAUDIO2_BUFFER o una struttura XAUDIO2_BUFFER_WMA può essere liberata non appena viene passata la chiamata IXAudio2SourceVoice::SubmitSourceBuffer che viene passata a restituisce. I dati a cui punta la struttura (pAudioData e pDecodedPacketCumulativeBytes, rispettivamente) non possono essere liberati finché il buffer non viene completato (come segnalato dal callback IXAudio2VoiceCallback::OnBufferEnd ) o la voce viene arrestata o eliminata.

Requisiti della piattaforma

Windows 10 (XAudio2.9); Windows 8, Windows Phone 8 (XAudio 2.8); DirectX SDK (XAudio 2.7)

Requisiti

   
Intestazione xaudio2.h

Vedi anche

Procedura: Creare un grafico di elaborazione audio di base

IXAudio2SourceVoice::SubmitSourceBuffer

Strutture XAudio2