资源交换文件格式 (RIFF)
本概述介绍在 .wav 文件中使用的资源交换文件格式 (RIFF) 。 RIFF 是用于加载 XAudio2 音频数据的典型格式。
RIFF 文件由称为 区块的多个离散数据部分组成。
区块中的数据类型由四个字符的代码 (FOURCC) 标识符指示。 FOURCC 是一个 32 位无符号整数,通过串联四个用于标识 RIFF 文件中的区块类型的 ASCII 字符而创建。 例如,FOURCC“abcd”在 little-endian 系统上表示为0x64636261。 FOURC 可以包含空格字符,因此“abc”是有效的 FOURCC。 音频文件使用 FOURCC 代码来标识音频格式区块、音频数据区块以及特定于音频格式的任何其他区块。
下表显示了 XAudio2 支持的音频格式中预期的 FOURCC 标识符。
格式 | FOURCC 标识符 | 其他信息 |
---|---|---|
PCM | “RIFF”、“fmt”、“data” | |
ADPCM | “RIFF”、“fmt”、“data”、“smpl”、“wsmpl” | 有关 特定于 ADPCM 的 FOURCC 标识符的说明,请参阅 ADPCM 概述。 |
FOURCC 标识符“RIFF”、“fmt”和“data”是所有受支持的格式通用的。 下表描述了以所有受支持的格式找到的 FOURCC 标识符。
FOURCC 标识符 | 说明 |
---|---|
"RIFF" | 标准 RIFF 区块,其中包含其数据节的前四个字节中值为“WAVE”或“XWMA”的文件类型,以及文件数据部分其余部分中的其他区块。 |
"fmt" | 包含音频文件的格式标头。 此区块中的数据对应于以下结构之一: WAVEFORMATEX、 WAVEFORMATEXTENSIBLE ADPCMWAVEFORMAT。 |
"data" | 包含音频文件的音频数据。 在 XAudio2 中,数据区块的内容将读入缓冲区,并作为XAUDIO2_BUFFER结构的 pAudioData 成员传递给源语音。 |
RIFF 文件由包含零个或多个其他区块的 RIFF 区块组成。
RIFF 区块具有以下形式:
“RIFF”, fileSize, fileType, 数据
其中“RIFF”是文本 FOURCC 代码“RIFF”, fileSize 是一个 4 字节的值,表示文件中数据的大小, fileType 是标识特定文件类型的 FOURCC。 fileSize 的值包括 fileType FOURCC 的大小加上后面的数据大小,但不包括“RIFF”FOURCC 的大小或 fileSize 的大小。 数据由按任意顺序排列的区块组成。
其他区块具有以下形式:
chunkID, chunkSize, data
其中 ,chunkID 是标识区块中包含的数据的 FOURCC, chunkSize 是一个 4 字节值,表示区块的数据部分的大小,而 data 是零个或更多字节的数据。 数据始终填充到最近的 WORD 边界。 chunkSize 提供区块中有效数据的大小。 它不包括填充、 chunkID 的大小或 chunkSize 的大小。