XAUDIO2_BUFFER-Struktur (xaudio2.h)

Stellt einen Audiodatenpuffer dar, der mit IXAudio2SourceVoice::SubmitSourceBuffer verwendet wird.

Syntax

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;

Member

Flags

Flags, die zusätzliche Informationen zum Audiopuffer bereitstellen. Kann 0 oder der folgende Wert sein.

Wert BESCHREIBUNG
XAUDIO2_END_OF_STREAM Gibt an, dass nach diesem Puffer keine Puffer in der Warteschlange vorhanden sein können. Die einzige Auswirkung dieses Flags besteht darin, Debugausgabewarnungen zu unterdrücken, die durch das Aushungen der Pufferwarteschlange verursacht werden. 

AudioBytes

Größe der Audiodaten in Bytes. Darf nicht größer als XAUDIO2_MAX_BUFFER_BYTES (definiert in xaudio2.h) für PCM-Daten und nicht größer als XMA_READBUFFER_MAX_BYTES (definiert in xma2defs.h) für XMA-Daten sein.

Hinweis XMA-Puffer, die mit IXAudio2SourceVoice::SubmitSourceBuffer an eine XAudio2-Stimme übermittelt werden, müssen vollständige XMA-Blöcke enthalten. Ein vollständiger XMA-Block muss gleich dem XMA2WAVEFORMATEX sein . BytesPerBlock-Wert , mit Ausnahme des letzten XMA-Blocks in einer Datei, der zwar kürzer sein kann, aber dennoch als abgeschlossen betrachtet wird.
 

pAudioData

Zeiger auf die Audiodaten.

Xbox 360
Der für einen Puffer zugeordnete Arbeitsspeicher, der XMA-Daten enthält, muss eine Blockausrichtung von 2048 aufweisen. Dies wird mithilfe von XPhysicalAlloc erreicht, wobei das Argument ulAlignment auf 2048 festgelegt ist.

PlayBegin

Erstes Beispiel im Puffer, das wiedergegeben werden soll.

Für XMA-Puffer muss dieser Wert ein Vielfaches von 128 Beispielen sein.

PlayLength

Länge des abgespielten Bereichs in Beispielen. Der Wert 0 bedeutet, dass der gesamte Puffer wiedergegeben werden soll, und in diesem Fall muss PlayBegin ebenfalls 0 sein. Für ADPCM-Daten muss dieser Wert ein Vielfaches von wSamplesPerBlock in der ADPCMWAVEFORMAT-Struktur sein, die diese XAUDIO2_BUFFER-Struktur enthält.

LoopBegin

Erstes Beispiel für den Zu schleifenden Bereich. Der Wert von LoopBegin muss kleiner als PlayBegin + PlayLength sein. LoopBegin kann kleiner als PlayBegin sein. LoopBegin muss 0 sein, wenn LoopCount auf 0 festgelegt ist.

LoopLength

Länge des Schleifenbereichs in Beispielen. Der Wert von LoopBegin+LoopLength muss größer als PlayBegin und kleiner als PlayBegin + PlayLength sein. LoopLength muss null sein, wenn LoopCount auf 0 festgelegt ist. Wenn LoopCount nicht 0 ist, gibt eine Schleifenlänge von 0 an, dass das gesamte Beispiel in einer Schleife ausgeführt werden sollte. Für ADPCM-Daten muss dieser Wert ein Vielfaches von wSamplesPerBlock in der ADPCMWAVEFORMAT-Struktur sein, die diese XAUDIO2_BUFFER-Struktur enthält.

LoopCount

Anzahl der Schleifen, die durch den Schleifenbereich durchlaufen werden. Dieser Wert kann zwischen 0 und XAUDIO2_MAX_LOOP_COUNT sein. Wenn LoopCount null ist, wird keine Schleife ausgeführt, und LoopBegin und LoopLength müssen 0 sein. Legen Sie LoopCount auf XAUDIO2_LOOP_INFINITE fest, um eine endlose Schleife zu erhalten.

pContext

Kontextwert, der in Rückrufen an den Client zurückgegeben werden soll. Dies kann NULL sein.

Hinweise

XAudio2-Audiodaten sind überlappend, Daten aus jedem Kanal sind für eine bestimmte Beispielnummer nebeneinander. Wenn beispielsweise eine 4-Kanal-Welle in eine XAudio2-Quellstimme wiedergegeben wird, sind die Audiodaten ein Beispiel von Kanal 0, ein Beispiel von Kanal 1, ein Beispiel von Kanal 2, ein Beispiel von Kanal 3 und dann das nächste Beispiel der Kanäle 0, 1, 2, 3 usw.

Die AudioBytes - und pAudioData-Member von XAUDIO2_BUFFER entsprechen der Größe in Bytes und dem Inhalt des RIFF-Blocks "Data" der wiedergegebenen Datei. Der Inhalt des Blöckes muss möglicherweise bytegetauscht werden, wenn die Datei auf Xbox 360 geladen wird.

Speicher, der für eine XAUDIO2_BUFFER - oder XAUDIO2_BUFFER_WMA-Struktur zugewiesen ist, kann freigegeben werden, sobald der IXAudio2SourceVoice::SubmitSourceBuffer-Aufruf zurückgegeben wird, an den er übergeben wird. Die Daten, auf die die Struktur verweist (pAudioData bzw . pDecodedPacketCumulativeBytes), können erst freigegeben werden, wenn der Puffer abgeschlossen ist (wie durch den RÜCKRUF IXAudio2VoiceCallback::OnBufferEnd signalisiert ) oder die Stimme beendet oder zerstört wird.

Plattformanforderungen

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

Requirements (Anforderungen)

   
Kopfzeile xaudio2.h

Weitere Informationen

So wird's gemacht: Erstellen eines grundlegenden Audioverarbeitungsdiagramms

IXAudio2SourceVoice::SubmitSourceBuffer

XAudio2-Strukturen