Форматы звуковых данных

Чтобы указать формат данных для звукового потока волны, за структурой KSDATAFORMAT следует сразу же структура WAVEFORMATEX или KSDSOUND_BUFFERDESC , а член описатель KSDATAFORMAT соответственно имеет одно из следующих двух значений:

  • KSDATAFORMAT_SPECIFIER_WAVEFORMATEX

    Указывает, что формат данных принадлежит потоку волн, используемому приложением waveIn или waveOut. В этом случае, если формат FormatSize структуры KSDATAFORMAT достаточно велик, описатель формата данных после структуры 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 , в этом случае для элемента wFormatTag WAVEFORMATEX задано значение WAVE_FORMAT_EXTENSIBLE. Дополнительные сведения см. в разделе Расширяемые дескрипторы Wave-Format.

Чтобы указать формат данных для потока MIDI или Потока DirectMusic, достаточно структуры KSDATAFORMAT; за ней не следует никаких дополнительных сведений.

Примеры форматов данных волн и DirectSound см. в формате данных PCM Stream и DirectSound Stream Data Format. Примеры форматов данных MIDI и DirectMusic см. в формате данных MIDI Stream и в формате данных DirectMusic Stream.