Составители:
LPSTR lpWaveData, // буфер исходных данных
DWORD dwWaveDataSize, // объем данных в буфере
DWORD dwSamplesPerSec ) // частота оцифровки
{
HMMIO hmmio; // дескриптор файла
MMCKINFO mmckinfoWave; // описание блока
WAVE MMCKINFO mmckinfoFmt; // описание блока fmt
MMCKINFO mmckinfoData; // описание блока data
PCMWAVEFORMAT pcmWaveFormat; // содержимое блока fmt
LONG lFmtSize; // размер блока fmt
LONG lDataSize; // размер блока data
/* открыть файл для записи */
hmmio = mmioOpen( lpszFileName, NULL, MMIO_ALLOCBUF |
MMIO_WRITE | MMIO_CREATE );
if( hmmio == NULL )
{
ReportError( hWnd, IDS_CANTOPENFILE );
return( FALSE ) ;
}
/* создать блок RIFF формата WAVE */
mmckinfoWave.fccType = mmioFOURCC( 'W','A','V,'E' );
if( mmioCreateChunk(hmmio, SmmckinfoWave, MMIO CREATERIFF)!= 0
)
{
ReportError( hWpd, IDS_CANTWRITEWAVE );
mmioClose( hmmio, 0);
return( FALSE ) ;
}
Флаги команды mmioOpen сообщают системе о том, что мы хотим
буферизовать операции с файлом, осуществлять запись, а не чтение, и что
необходимо создать файл, если он еще не существует. Функция
mmioCreateChunk предполагает задание трех параметров: дескриптора файла,
структуры с описанием нового блока и необязательного флага, определяющего
тип блока.
Структура MMCKINFO
имеет поле, называющееся dwDataOffset.
Функция mmioCreateChunk записывает в него значение, указывающее позицию
внутри файла, в которой начинается область данных нового блока.
Функция mmioCreateChunk не может вставлять новые блоки в середину
файла. Если указатель текущей позиции находится не в конце файла, запись
произойдет поверх старых данных.
Сформировав основной блок RIFF,
на следующем этапе создаем и
инициализируем вложенный блок format:
82
LPSTR lpWaveData, // буфер исходных данных DWORD dwWaveDataSize, // объем данных в буфере DWORD dwSamplesPerSec ) // частота оцифровки { HMMIO hmmio; // дескриптор файла MMCKINFO mmckinfoWave; // описание блока WAVE MMCKINFO mmckinfoFmt; // описание блока fmt MMCKINFO mmckinfoData; // описание блока data PCMWAVEFORMAT pcmWaveFormat; // содержимое блока fmt LONG lFmtSize; // размер блока fmt LONG lDataSize; // размер блока data /* открыть файл для записи */ hmmio = mmioOpen( lpszFileName, NULL, MMIO_ALLOCBUF | MMIO_WRITE | MMIO_CREATE ); if( hmmio == NULL ) { ReportError( hWnd, IDS_CANTOPENFILE ); return( FALSE ) ; } /* создать блок RIFF формата WAVE */ mmckinfoWave.fccType = mmioFOURCC( 'W','A','V,'E' ); if( mmioCreateChunk(hmmio, SmmckinfoWave, MMIO CREATERIFF)!= 0 ) { ReportError( hWpd, IDS_CANTWRITEWAVE ); mmioClose( hmmio, 0); return( FALSE ) ; } Флаги команды mmioOpen сообщают системе о том, что мы хотим буферизовать операции с файлом, осуществлять запись, а не чтение, и что необходимо создать файл, если он еще не существует. Функция mmioCreateChunk предполагает задание трех параметров: дескриптора файла, структуры с описанием нового блока и необязательного флага, определяющего тип блока. Структура MMCKINFO имеет поле, называющееся dwDataOffset. Функция mmioCreateChunk записывает в него значение, указывающее позицию внутри файла, в которой начинается область данных нового блока. Функция mmioCreateChunk не может вставлять новые блоки в середину файла. Если указатель текущей позиции находится не в конце файла, запись произойдет поверх старых данных. Сформировав основной блок RIFF, на следующем этапе создаем и инициализируем вложенный блок format: 82
Страницы
- « первая
- ‹ предыдущая
- …
- 80
- 81
- 82
- 83
- 84
- …
- следующая ›
- последняя »