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 应等于 nSamplesPerSecnBlockAlign 的乘积。 对于非 PCM 格式,必须根据格式标记的制造商规范计算此成员。

nBlockAlign

阻止对齐(以字节为单位)。 块对齐是 wFormatTag 格式类型的最小原子数据单位。 如果 wFormatTag WAVE_FORMAT_PCM或WAVE_FORMAT_EXTENSIBLE, 则 nBlockAlign 必须等于 nChannelswBitsPerSample 的乘积除以 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)

另请参阅

波形音频

波形结构