Структура 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) |