WAVEFORMATEX 结构 (mmeapi.h)
WAVEFORMATEX 结构定义波形音频数据的格式。 此结构中仅包含所有波形音频数据格式共有的格式信息。 对于需要附加信息的格式,此结构作为另一个结构中的第一个成员以及附加信息包含在一起。
支持两个以上通道或样本大小超过 16 位的格式可以在 WAVEFORMATEXTENSIBLE 结构(包括 WAVEFORMAT 结构)中描述。
语法
typedef struct tWAVEFORMATEX {
WORD wFormatTag;
WORD nChannels;
DWORD nSamplesPerSec;
DWORD nAvgBytesPerSec;
WORD nBlockAlign;
WORD wBitsPerSample;
WORD cbSize;
} WAVEFORMATEX, *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX;
成员
wFormatTag
波形音频格式类型。 格式标记在 Microsoft Corporation 中注册,用于许多压缩算法。 可以在 Mmreg.h 头文件中找到格式标记的完整列表。 对于单通道或双通道 PCM 数据,此值应WAVE_FORMAT_PCM。 当此结构包含在 WAVEFORMATEXTENSIBLE 结构中时,必须WAVE_FORMAT_EXTENSIBLE此值。
nChannels
波形音频数据中的声道数。 单声道数据使用一个声道,立体声数据使用两个声道。
nSamplesPerSec
采样率,以每秒样本数 (赫) 。 如果 wFormatTag WAVE_FORMAT_PCM,则 nSamplesPerSec 的常见值为 8.0 kHz、11.025 kHz、22.05 kHz 和 44.1 kHz。 对于非 PCM 格式,必须根据格式标记的制造商规范计算此成员。
nAvgBytesPerSec
格式标记所需的平均数据传输速率(以字节/秒为单位)。 如果 wFormatTag WAVE_FORMAT_PCM, 则 nAvgBytesPerSec 应等于 nSamplesPerSec 和 nBlockAlign 的乘积。 对于非 PCM 格式,必须根据格式标记的制造商规范计算此成员。
nBlockAlign
阻止对齐(以字节为单位)。 块对齐是 wFormatTag 格式类型的最小原子数据单位。 如果 wFormatTag WAVE_FORMAT_PCM或WAVE_FORMAT_EXTENSIBLE, 则 nBlockAlign 必须等于 nChannels 和 wBitsPerSample 的乘积除以 8 (位/字节) 。 对于非 PCM 格式,必须根据格式标记的制造商规范计算此成员。
软件必须一次处理 多个 nBlockAlign 字节的数据。 写入设备以及从设备读取的数据必须始终从块的开头开始。 例如,在样本 (中间开始播放 PCM 数据是非法的,即在非块对齐边界) 。
wBitsPerSample
wFormatTag 格式类型的每个样本的位数。 如果 wFormatTag WAVE_FORMAT_PCM,则 wBitsPerSample 应等于 8 或 16。 对于非 PCM 格式,必须根据格式标记的制造商规范设置此成员。 如果 wFormatTag WAVE_FORMAT_EXTENSIBLE,则此值可以是 8 的任意整数倍,表示容器大小,不一定是样本大小;例如,20 位样本大小位于 24 位容器中。 某些压缩方案无法定义 wBitsPerSample 的值,因此此成员可以为 0。
cbSize
追加到 WAVEFORMATEX 结构末尾的额外格式信息的大小(以字节为单位)。 非 PCM 格式可以使用此信息来存储 wFormatTag 的额外属性。 如果 wFormatTag 不需要额外的信息,则必须将此成员设置为 0。 对于WAVE_FORMAT_PCM格式 (且仅WAVE_FORMAT_PCM格式) ,将忽略此成员。 当此结构包含在 WAVEFORMATEXTENSIBLE 结构中时,此值必须至少为 22。
注解
使用额外信息的格式的一个示例是 Microsoft 自适应增量脉冲编码调制 (MS-ADPCM) 格式。 ms-ADPCM 的 wFormatTag 已WAVE_FORMAT_ADPCM。 cbSize 成员通常设置为 32。 为WAVE_FORMAT_ADPCM存储的额外信息是编码和解码波形音频数据所需的系数对。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
标头 | mmeapi.h (包括 mmreg.h) |