Составители:
Рубрика:
Функция mmioDescend() возвращает информацию о блоке в параметре
lpmmcki. Можно также заставить ее выполнять поиск блоков определенного ти-
па. Для инициации такого поиска последний параметр должен содержать значе-
ние MMIO_FINDCHUNK,
MMIO_FINDLIST или MMIO_FINDRIFF. Поиск на-
чинается с текущей позиции в файле и завершается в конце файла. Функция
mmioAscend(), помимо перемещения к концу блока, помогает формировать но-
вые блоки. Она вызывается после записи новых данных, выравнивая блок по
четному байту и записывая объем данных в заголовок блока.
Каждая звукозапись в RIFF-файле должна содержать блок, помеченный
тегом fmt. (Теги, состоящие из символов нижнего регистра, обозначают вло-
женные блоки.) Структура PCMWAVEFORMAT
определяет содержимое этого
блока:
/* универсальный формат файла звукозаписи (информация, общая для всех
форматов) */
typedef struct waveformat_tag
{
WORD wFormatTag, // тип формата
WORD nChannels, // количество каналов (1 = моно; 2 = стерео)
DWORD nSamplesPerSec, // частота оцифровки
DWORD nAvgBytesPerSec, //необходимо для оценки размера буфера
WORD nBlockAlign, // размер блока данных
} WAVEFORMAT;
/* структура формата звукозаписи, специфичная для РСМ-данных */
typedef struct pcmwaveformat_tag
{
WAVEFORMAT wf;
WORD wBitsPerSample;
}
PCMWAVEFORMAT;…
В настоящее время для WAV-файлов определен только один формат –
импульсно-кодовая модуляция РСМ, поэтому поле wFormatTag структуры
WAVEFORMAT
должно содержать значение WAVE_FORMAT_PCM.
В структуре PCMWAVEFORMAT
к общему формату WAV-данных добав-
лено поле wBitsPerSample, указывающее разрядность выборки. Это поле опреде-
ляет объем памяти, необходимый для записи каждой выборки. Обычно исполь-
зуются значения 8 и 16 битов. Монофоническая звукозапись длительностью в 1 с,
оцифрованная с частотой 11 кГц и разрядностью 8 битов, содержит 11 000 выбо-
рок,
т. е. занимает объем примерно 11 Кб. При стереофонической звукозаписи проис-
ходит одновременная оцифровка сигналов в двух каналах. Если разрядность выбо-
рок в каждом из них равна 8 битам, то разрядность суммарной выборки состав-
ляет 16 битов. Объем стереофонической звукозаписи длительностью в 1 с,
147
Функция mmioDescend() возвращает информацию о блоке в параметре lpmmcki. Можно также заставить ее выполнять поиск блоков определенного ти- па. Для инициации такого поиска последний параметр должен содержать значе- ние MMIO_FINDCHUNK, MMIO_FINDLIST или MMIO_FINDRIFF. Поиск на- чинается с текущей позиции в файле и завершается в конце файла. Функция mmioAscend(), помимо перемещения к концу блока, помогает формировать но- вые блоки. Она вызывается после записи новых данных, выравнивая блок по четному байту и записывая объем данных в заголовок блока. Каждая звукозапись в RIFF-файле должна содержать блок, помеченный тегом fmt. (Теги, состоящие из символов нижнего регистра, обозначают вло- женные блоки.) Структура PCMWAVEFORMAT определяет содержимое этого блока: /* универсальный формат файла звукозаписи (информация, общая для всех форматов) */ typedef struct waveformat_tag { WORD wFormatTag, // тип формата WORD nChannels, // количество каналов (1 = моно; 2 = стерео) DWORD nSamplesPerSec, // частота оцифровки DWORD nAvgBytesPerSec, //необходимо для оценки размера буфера WORD nBlockAlign, // размер блока данных } WAVEFORMAT; /* структура формата звукозаписи, специфичная для РСМ-данных */ typedef struct pcmwaveformat_tag { WAVEFORMAT wf; WORD wBitsPerSample; } PCMWAVEFORMAT;… В настоящее время для WAV-файлов определен только один формат – импульсно-кодовая модуляция РСМ, поэтому поле wFormatTag структуры WAVEFORMAT должно содержать значение WAVE_FORMAT_PCM. В структуре PCMWAVEFORMAT к общему формату WAV-данных добав- лено поле wBitsPerSample, указывающее разрядность выборки. Это поле опреде- ляет объем памяти, необходимый для записи каждой выборки. Обычно исполь- зуются значения 8 и 16 битов. Монофоническая звукозапись длительностью в 1 с, оцифрованная с частотой 11 кГц и разрядностью 8 битов, содержит 11 000 выбо- рок, т. е. занимает объем примерно 11 Кб. При стереофонической звукозаписи проис- ходит одновременная оцифровка сигналов в двух каналах. Если разрядность выбо- рок в каждом из них равна 8 битам, то разрядность суммарной выборки состав- ляет 16 битов. Объем стереофонической звукозаписи длительностью в 1 с, 147