Основы программирования в Win32API. Марапулец Ю.В. - 144 стр.

UptoLike

Составители: 

и знать особенности 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