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