Составители:
LPMMCKINFO lpnunckiParent, // необязательная структура 
// родительского блока  
UINT uSearch );    // флаги поиска 
MMRESULT mmioAscend( HMMIO hmmio,    // дескриптор RIFF-файла  
LPMMCKINFO lpmmcki,  // место для записи 
// информации о блоке  
UINT uReserved );    // зарезервирован;   
// должен содержать 0 
Функция 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 битов, содержит 11000 выборок, т.е. занимает объем при-
мерно 11 Кб. При стереофонической звукозаписи происходит одновременная оцифровка 
сигналов в двух каналах. Если разрядность выборок в каждом из них равна 8 битам, то 
разрядность  суммарной  выборки  составляет 16 битов.  Объем  стереофонической  звуко-
233
                          LPMMCKINFO lpnunckiParent, // необязательная структура
                                                // родительского блока
                          UINT uSearch );       // флаги поиска
MMRESULT mmioAscend( HMMIO hmmio,        // дескриптор RIFF-файла
                     LPMMCKINFO lpmmcki, // место для записи
                                         // информации о блоке
                     UINT uReserved );   // зарезервирован;
                                         // должен содержать 0
     Функция 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 битов, содержит 11000 выборок, т.е. занимает объем при-
мерно 11 Кб. При стереофонической звукозаписи происходит одновременная оцифровка
сигналов в двух каналах. Если разрядность выборок в каждом из них равна 8 битам, то
разрядность суммарной выборки составляет 16 битов. Объем стереофонической звуко-
                                       233
Страницы
- « первая
 - ‹ предыдущая
 - …
 - 229
 - 230
 - 231
 - 232
 - 233
 - …
 - следующая ›
 - последняя »
 
