Составители:
вах и номере версии или содержаться список признаков (cues), т.е. позиций в файле, свя-
занных с определенными событиями внутри других блоков или других файлов.
Блоки RIFF отличаются от большинства блоков тем, что их поля данных (т.е. раз-
дел двоичных данных) всегда начинаются с четырехсимвольного кода, обозначающего
тип содержимого файла: звукозапись (WAVE), MIDI-файл (RMID), DIB-файл (RDIB),
видеоклип (RMMP) или палитра (PAL).
Поскольку в RIFF-файлах содержится так много четырехсимвольных кодов, суще-
ствует специальная макрокоманда mmioFOURCC, предназначенная для создания этих
кодов. Приведенная ниже команда записывает тег RIFF в одно из полей информацион-
ной структуры:
MMCKINFO mmckinfo.ckid = mmioFOURCC ( 'R', 'I', 'F', 'F' );
Структура MMCKINFO содержит информацию, описывающую отдельный блок
данных. При чтении данных система заполняет поля описанием текущего блока. При
записи данных вы заполняете информацию, которая необходима системе для сохране-
ния-блока.
typedef struct _MMCKINFO /* структура блока данных RIFF-файла */
{
FOURCC ckid; // идентификатор блока
DWORD cksize; // размер блока
FOURCC fccType; // тип или список типов
DWORD dwDataOffset; // смещение блока данных в файле
DWORD dwFlags; // флаги, используемые MMIO-функциями
} MMCKINFO;
FOURCC представляет собой новый тип данных, основанный на типе DWORD
(каждый символ кода записывается в один из четырех байтов). Третье поле, fccType,
представляет собой тег типа содержимого, который следует после каждого тега RIFF.
Поле fccType отсутствует в блоках, не имеющих идентификатора RIFF. На рис. 9.1 пока-
зана связь между родительским и вложенным блоками RIFF-файла [12].
Рис. 9.1.Структура RIFF-файла
Как ранее указывалось, специализированный набор API-функций для мультимедиа
содержится в подсистеме WinMM. Эти функции ориентированы на работу с блочной
структурой RIFF-файлов. Кроме того, они обеспечивают буферизацию доступа к фай-
лам. Рассмотрим основные функции интерфейса.
9.3.1. API-функции для обработки RIFF-файла
231
вах и номере версии или содержаться список признаков (cues), т.е. позиций в файле, свя- занных с определенными событиями внутри других блоков или других файлов. Блоки RIFF отличаются от большинства блоков тем, что их поля данных (т.е. раз- дел двоичных данных) всегда начинаются с четырехсимвольного кода, обозначающего тип содержимого файла: звукозапись (WAVE), MIDI-файл (RMID), DIB-файл (RDIB), видеоклип (RMMP) или палитра (PAL). Поскольку в RIFF-файлах содержится так много четырехсимвольных кодов, суще- ствует специальная макрокоманда mmioFOURCC, предназначенная для создания этих кодов. Приведенная ниже команда записывает тег RIFF в одно из полей информацион- ной структуры: MMCKINFO mmckinfo.ckid = mmioFOURCC ( 'R', 'I', 'F', 'F' ); Структура MMCKINFO содержит информацию, описывающую отдельный блок данных. При чтении данных система заполняет поля описанием текущего блока. При записи данных вы заполняете информацию, которая необходима системе для сохране- ния-блока. typedef struct _MMCKINFO /* структура блока данных RIFF-файла */ { FOURCC ckid; // идентификатор блока DWORD cksize; // размер блока FOURCC fccType; // тип или список типов DWORD dwDataOffset; // смещение блока данных в файле DWORD dwFlags; // флаги, используемые MMIO-функциями } MMCKINFO; FOURCC представляет собой новый тип данных, основанный на типе DWORD (каждый символ кода записывается в один из четырех байтов). Третье поле, fccType, представляет собой тег типа содержимого, который следует после каждого тега RIFF. Поле fccType отсутствует в блоках, не имеющих идентификатора RIFF. На рис. 9.1 пока- зана связь между родительским и вложенным блоками RIFF-файла [12]. Рис. 9.1.Структура RIFF-файла Как ранее указывалось, специализированный набор API-функций для мультимедиа содержится в подсистеме WinMM. Эти функции ориентированы на работу с блочной структурой RIFF-файлов. Кроме того, они обеспечивают буферизацию доступа к фай- лам. Рассмотрим основные функции интерфейса. 9.3.1. API-функции для обработки RIFF-файла 231
Страницы
- « первая
- ‹ предыдущая
- …
- 227
- 228
- 229
- 230
- 231
- …
- следующая ›
- последняя »