资源交换文件格式 (RIFF)

本概述介绍在 .wav 文件中使用的资源交换文件格式 (RIFF) 。 RIFF 是用于加载 XAudio2 音频数据的典型格式。

RIFF

RIFF 文件由称为 区块的多个离散数据部分组成。

FOURCC 标识符

区块中的数据类型由四个字符的代码 (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" 包含音频文件的格式标头。 此区块中的数据对应于以下结构之一: WAVEFORMATEXWAVEFORMATEXTENSIBLE ADPCMWAVEFORMAT
"data" 包含音频文件的音频数据。 在 XAudio2 中,数据区块的内容将读入缓冲区,并作为XAUDIO2_BUFFER结构的 pAudioData 成员传递给源语音。

 

Chunks

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 的大小。

入门

如何:使用 XAudio2 播放声音

XAudio2 编程参考