音频数据格式

若要指定波次音频流的数据格式,KSDATAFORMAT 结构应紧跟 WAVEFORMATEXKSDSOUND_BUFFERDESC结构,并且应相应将 KSDATAFORMAT 的 Specifier 成员设置为以下两个值之一:

  • KSDATAFORMAT_SPECIFIER_WAVEFORMATEX

    指示数据格式属于 waveIn 或 waveOut 应用程序正在使用的波次流。 在这种情况下,如果 KSDATAFORMAT 结构的 FormatSize 足够大,则 KSDATAFORMAT 结构后面的数据格式说明符是一个 WAVEFORMATEX 结构。

  • KSDATAFORMAT_SPECIFIER_DSOUND

    指示数据格式属于 DirectSound 应用程序正在使用的波次流。 在这种情况下,KSDATAFORMAT 结构后面的数据格式说明符是一个 KSDSOUND_BUFFERDESC 结构,其中包含嵌入式 WAVEFORMATEX 结构。

KSDATAFORMAT_WAVEFORMATEX 结构会同时封装 KSDATAFORMAT 结构及其后面 WAVEFORMATEX 结构。 同样,KSDATAFORMAT_DSOUND 结构会封装 KSDATAFORMAT 结构及其后面的 DSOUND_BUFFERDESC 结构。

对于 KSDATAFORMAT_WAVEFORMATEX 或 KSDATAFORMAT_DSOUND,结构中的最后一项是嵌入式 WAVEFORMATEX 结构;在 KSDATAFORMAT_DSOUND 的情况下,WAVEFORMATEX 结构包含在嵌入式 DSOUND_BUFFERDESC 结构中。 在任一情况下,WAVEFORMATEX 结构都可能是 WAVEFORMATEXTENSIBLE 结构的开头,在这种情况下,会将 WAVEFORMATEX 的 wFormatTag 成员设置为值 WAVE_FORMAT_EXTENSIBLE。 有关详细信息,请参阅可扩展波次格式描述符

若要为 MIDI 流或 DirectMusic 流指定数据格式,KSDATAFORMAT 结构就足够了;其后不跟任何其他信息。

有关波次和 DirectSound 数据格式的示例,请参阅 PCM 流数据格式DirectSound 流数据格式。 有关 MIDI 和 DirectMusic 数据格式的示例,请参阅 MIDI 流数据格式DirectMusic 流数据格式