Поделиться через


Структура WAVEFORMATEX (mmeapi.h)

Структура WAVEFORMATEX определяет формат данных, содержащих форму звуковой волны. В эту структуру включаются только сведения о формате, общие для всех форматов данных waveform-audio. Для форматов, требующих дополнительных сведений, эта структура включается в качестве первого элемента в другую структуру вместе с дополнительными сведениями.

Форматы, поддерживающие более двух каналов или выборки размером более 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

Тип формата waveform-audio. Теги формата зарегистрированы в корпорации Майкрософт для многих алгоритмов сжатия. Полный список тегов формата можно найти в файле заголовка Mmreg.h. Для данных PCM с одним или двумя каналами это значение должно быть WAVE_FORMAT_PCM. Если эта структура включена в структуру WAVEFORMATEXTENSIBLE , это значение должно быть WAVE_FORMAT_EXTENSIBLE.

nChannels

Количество каналов в звуковых данных в формате волн. Одноканальные данные используют один канал, а стереоданные — два канала.

nSamplesPerSec

Частота выборки в выборках в секунду (герц). Если wFormatTag имеет значение WAVE_FORMAT_PCM, то для nSamplesPerSec используются значения 8,0 кГц, 11,025 кГц, 22,05 кГц и 44,1 кГц. Для форматов, отличных от 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.

Комментарии

Примером формата, использующего дополнительные сведения, является формат Адаптивной разностной пульсовой модуляции (Майкрософт) (MS-ADPCM). WFormatTag для MS-ADPCM WAVE_FORMAT_ADPCM. Элемент cbSize обычно устанавливается в значение 32. Дополнительные сведения, хранящиеся для WAVE_FORMAT_ADPCM, — это пары коэффициентов, необходимые для кодирования и декодирования данных формата волны и звука.

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть mmeapi.h (включая Mmreg.h)

См. также раздел

Звуковой сигнал

Структуры волнообразной формы