Resource Interchange File Format (RIFF)
In dieser Übersicht wird das Resource Interchange File Format (RIFF) beschrieben, das in WAV-Dateien verwendet wird. RIFF ist das typische Format, aus dem Audiodaten für XAudio2 geladen werden.
RIFF
Eine RIFF-Datei besteht aus mehreren diskreten Datenabschnitten, die als Blöcke bezeichnet werden.
FOURCC-Bezeichner
Der Typ der Daten in einem Block wird durch einen vierstelligen Codebezeichner (FOURCC) angegeben. Ein FOURCC ist eine 32-Bit-Ganzzahl ohne Vorzeichen, die durch Verkettung von vier ASCII-Zeichen erstellt wird, die zum Identifizieren von Blocktypen in einer RIFF-Datei verwendet werden. Beispielsweise wird fourcc "abcd" auf einem Little-Endian-System als 0x64636261 dargestellt. FOURCCs können Leerzeichen enthalten, daher ist "abc" ein gültiger FOURCC-Wert. Audiodateien verwenden FOURCC-Codes, um Audioformatblöcke, Audiodatenblöcke und alle anderen für das Audioformat spezifischen Blöcke zu identifizieren.
Die folgende Tabelle zeigt die FOURCC-Bezeichner, die in den von XAudio2 unterstützten Audioformaten erwartet werden können.
Format | FOURCC-Bezeichner | Zusätzliche Informationen |
---|---|---|
PCM | "RIFF", "fmt", "data" | |
ADPCM | "RIFF", "fmt", "data", "smpl", "wsmpl" | Eine Beschreibung der ADPCM-spezifischen FOURCC-Bezeichner finden Sie unter Übersicht über ADPCM . |
Die FOURCC-Bezeichner "RIFF", "fmt" und "data" sind für alle unterstützten Formate gemeinsam. In der folgenden Tabelle werden die FOURCC-Bezeichner beschrieben, die sich in allen unterstützten Formaten befinden.
FOURCC-Bezeichner | BESCHREIBUNG |
---|---|
„RIFF“ | Riff-Standardblock mit einem Dateityp mit dem Wert "WAVE" oder "XWMA" in den ersten vier Bytes des Datenabschnitts und den anderen Blöcken in der Datei im restlichen Datenabschnitt. |
„fmt“ | Enthält den Formatheader für die Audiodatei. Die Daten in diesem Block entsprechen einer der folgenden Strukturen: WAVEFORMATEX, WAVEFORMATEXTENSIBLE ADPCMWAVEFORMAT. |
„data“ | Enthält Audiodaten für die Audiodatei. In XAudio2 wird der Inhalt des Datenblocks in einen Puffer gelesen und als pAudioData-Member einer XAUDIO2_BUFFER-Struktur an eine Quellstimme übergeben. |
Chunks
Eine RIFF-Datei besteht aus einem RIFF-Block, der null oder mehr andere Blöcke enthält.
Der RIFF-Block hat die folgende Form:
"RIFF", fileSize, fileType, data
Wobei "RIFF" der literale FOURCC-Code "RIFF" ist, ist fileSize ein 4-Byte-Wert, der die Größe der Daten in der Datei angibt, und fileType ist ein FOURCC, der den spezifischen Dateityp identifiziert. Der Wert von fileSize umfasst die Größe des Dateityps FOURCC sowie die Größe der folgenden Daten, aber nicht die Größe des "RIFF" FOURCC oder die Größe von fileSize. Die Daten bestehen aus Blöcken in beliebiger Reihenfolge.
Andere Blöcke haben die folgende Form:
chunkID, chunkSize, data
Wenn chunkID ein FOURCC ist, der die im Block enthaltenen Daten identifiziert, ist chunkSize ein 4-Byte-Wert, der die Größe des Datenabschnitts des Blocks angibt, und Daten sind null oder mehr Bytes an Daten. Die Daten werden immer bis zur nächsten WORD-Grenze aufgefüllt. chunkSize gibt die Größe der gültigen Daten im Block an. Die Auffüllung, die Größe von chunkID oder die Größe von chunkSize sind nicht enthalten.
Zugehörige Themen