Interchange File Format (IFF) — формат файла-контейнера, разработанный в 1985 году корпорацией Electronic Arts совместно с Commodore для новой платформы Amiga с целью упростить обмен данными между ПО различных производителей. Контейнер IFF может содержать любые данные (звук, графику, текст и пр.)
Данный формат послужил основой для других форматов файлов-контейнеров (см. ниже в разделе См. также), а также сам по себе может быть известен под различными названиями (в зависимости от суффикса имени файла: (I)LBM, AIFF, 8SVX и др.)
Основным понятием файла стандарта IFF является чанк (англ.chunk) — порция данных, являющаяся строительным материалом файла и состоящая из заголовка и данных. Заголовок состоит из 32-битного идентификатора (ID) в виде FourCC и 32-битного блока (Size), указывающего размер данных (Data) в чанке. Если данные имеют нечётное число байт, то последние нулевые байты в последнем слове данных игнорируются и не включаются в Size. В качестве примера приведём следующее описание:
typedef struct {
char ID[4]; // FourCC идентификатор
LONG Size; // Размер блока данных
UBYTE Data[Size]; // Данные
} Chunk;
Проиллюстрируем чанк «CMAP», состоящий из 12 байт:
ID «CMAP»
Size 12
Data 0, 0, 0, 32
0, 0, 64, 0
0, 0, 64, 0
(12 байт)
См. также
На основе IFF создано множество форматов, которые, по сути, являются всё тем же IFF:
Кроме того, с учётом «опыта эксплуатации» были созданы клоны:
RIFF — это вариант формата IFF, разработанный Microsoft и IBM; Файлы RIFF отличаются от файлов IFF тем, что имеют литеры RIFF в начале и используют порядок байтов целых чисел от младшего к старшему (little-endian). Файлы WAV, например, являются файлами RIFF. Версия с порядком байт от старшего к младшему (big-endian), RIFX, так же была определена, но не нашла значительного применения.
Формат файла TIFF разработан компанией Aldus, чтобы интегрировать графику с большим числом bitmap в PostScript. Он имеет блочную (chunk) структуру, подобную IFF, однако сам по себе формат изображения не имеет отношения к формату ILBM.
Стандарт файла MIDI использует основные концепции формата IFF, однако не является файлом этого стандарта.
Формат файла PNG имеет ту же концепцию блоков (chunk), что и IFF, однако не копирует структуру.