20H~21H 2 整数 数据的调整数(按字节计算)
22H~23H 2 整数 样本数据位数
表 2 WAV文件的数据块
偏移地址 字节数 类型 内容
24H~27H 4 字符 数据标志符(data)
28H~2BH 4 长整型 采样数据总数
2CH--- --- 采样数据
2.1.2 WAV文件常用块的定义
(1)RIFF头格式
struct RIFF_HEADER
{
char szRiffID[4]; // 'R','I','F','F'
DWORD dwRiffSize;
char szRiffFormat[4]; // 'W','A','V','E'
};
(2)FMT块头格式
struct FMT_BLOCK
{
char szFmtID[4]; // 'f','m','t',' '
DWORD dwFmtSize;
WAVE_FORMAT wavFormat;
};
(3)WAVE格式块
typedef struct WAVE_FORMAT
{
WORD wFormatTag; //编码格式
WORD wChannels; //声道数
DWORD dwSamplesPerSec; //采样频率
DWORD dwAvgBytesPerSec;//每秒的数据量
WORD wBlockAlign; //块对齐
WORD wBitsPerSample; //采样位数
};
(4)数据块
struct DATA_BLOCK
{
char szDataID[4]; // 'd','a','t','a'
DWORD dwDataSize;
};
2.2 语音WAV文件读取操作
2.2.1 WAV文件读取操作所用到的数据结构
(1)波形音频流格式的数据结构
typedef struct tWAVEFORMATEX
{
WORD wFormatTag; /* 格式类型 */
WORD nChannels; /* 声道数目*/
DWORD nSamplesPerSec; /* 采样频率 */
DWORD nAvgBytesPerSec; /* 每秒的数据量*/
WORD nBlockAlign; /* 数据块的对齐标志 */
WORD wBitsPerSample; /* 采样量化位数 */
WORD cbSize; /* 该数据结构的大小 */
} WAVEFORMATEX;
(2)在mmsystem.h中处理RIFF数据块信息的基本数据结构
typedef struct _MMCKINFO
{源:自~优尔·论`文'网·www.youerw.com/
FOURCC ckid; /* RIFF数据块的4字节ID */
DWORD cksize; /* 数据块大小 */
FOURCC fccType; /* 数据块的形式类型 */
DWORD dwDataOffset; /* 数据块的数据起始位置偏移量 */