Составители:
Рубрика:
и знать особенности MMIO-функций, предназначенных для записи и чтения
этих файлов.
Протокол RIFF (Resource Interchange File Format – формат обмена файлами
ресурсов) описывает файловую структуру с теговой организацией. Это означает,
что файл может быть разбит на ряд нерегулярных блоков, помеченных особыми
короткими строками – тегами. Теги RIFF-файлов представляют собой четырех-
символьные коды, например RIFF,
INFO или PAL. (Четвертым символом тега
PAL
является пробел.) Каждый тег начинает блок данных (chunk). Наиболее важ-
ные блоки начинаются с тега RIFF
и могут содержать другие блоки, которые на-
зываются вложенными. RIFF-файлы всегда начинаются с блока RIFF,
а все ос-
тальные данные организованы в виде вложенных блоков первого блока.
Каждый блок состоит из трех частей: тега, значения размера и двоичных
данных. Тег сообщает о типе последующих данных. Значение размера, имеющее
тип DWORD,
указывает объем данных, содержащихся в блоке. В конце данных
находится тег следующего блока, если таковой имеется. Файлы звукозаписей
всегда содержат не менее двух вложенных блоков: один из них предназначен для
указания формата, а другой – для самих данных. В некоторых блоках может быть
записана информация об авторских правах и номере версии или содержаться
список признаков (cues), т. е. позиций в файле, связанных с определенными со-
бытиями внутри других блоков или других файлов.
Блоки RIFF
отличаются от большинства блоков тем, что их поля данных (т.
е. раздел двоичных данных) всегда начинаются с четырехсимвольного кода,
обозначающего тип содержимого файла: звукозапись (WAVE),
MIDI-файл (RM-
ID),
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;…
144
и знать особенности MMIO-функций, предназначенных для записи и чтения этих файлов. Протокол RIFF (Resource Interchange File Format – формат обмена файлами ресурсов) описывает файловую структуру с теговой организацией. Это означает, что файл может быть разбит на ряд нерегулярных блоков, помеченных особыми короткими строками – тегами. Теги RIFF-файлов представляют собой четырех- символьные коды, например RIFF, INFO или PAL. (Четвертым символом тега PAL является пробел.) Каждый тег начинает блок данных (chunk). Наиболее важ- ные блоки начинаются с тега RIFF и могут содержать другие блоки, которые на- зываются вложенными. RIFF-файлы всегда начинаются с блока RIFF, а все ос- тальные данные организованы в виде вложенных блоков первого блока. Каждый блок состоит из трех частей: тега, значения размера и двоичных данных. Тег сообщает о типе последующих данных. Значение размера, имеющее тип DWORD, указывает объем данных, содержащихся в блоке. В конце данных находится тег следующего блока, если таковой имеется. Файлы звукозаписей всегда содержат не менее двух вложенных блоков: один из них предназначен для указания формата, а другой – для самих данных. В некоторых блоках может быть записана информация об авторских правах и номере версии или содержаться список признаков (cues), т. е. позиций в файле, связанных с определенными со- бытиями внутри других блоков или других файлов. Блоки RIFF отличаются от большинства блоков тем, что их поля данных (т. е. раздел двоичных данных) всегда начинаются с четырехсимвольного кода, обозначающего тип содержимого файла: звукозапись (WAVE), MIDI-файл (RM- ID), 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;… 144
Страницы
- « первая
- ‹ предыдущая
- …
- 142
- 143
- 144
- 145
- 146
- …
- следующая ›
- последняя »