RIFF


RIFF (англ. Resource Interchange File Format) — формат файлов-контейнеров для хранения потоковых мультимедиа-данных (видео, аудио, текста). Наиболее известными контейнерными форматами, использующими RIFF в качестве основы, являются AVI (видео), WAV (аудио), RMI (MIDI-треки).

Формат RIFF использует порядок байтов little-endian (младший байт идёт первым). Для машин с форматом данных big-endian предлагался формат RIFX, однако из-за существенно меньшей в бытовом секторе популярности компьютеров с таким форматом данных RIFX не прижился, и в настоящее время формат RIFF воспроизводится и на машинах с big-endian порядком байтов.

Изначально RIFF имел принципиальное ограничение размера данных в 4 ГБ (точнее, максимальный размер файла байт). В силу особенностей ряда популярных программ по созданию и воспроизведению файлов в Microsoft Windows ограничение усилилось до 2 ГБ (из-за использования в API RIFF signed int32). Для поддержки файлов больше 4 ГБ формат AVI был расширен до AVI-DV, выходящего за рамки контейнера RIFF. На базе RIFF предложено расширение RF64, позволяющее работать с 64-битными числами для размеров chunk’ов, разработанное European Broadcasting Union.

Формат RIFF разработан в 1991 году компаниями Microsoft и IBM на основе формата IFF, разработанного компанией Electronic Arts в 1985 году, для little-endian компьютеров.

Если chunk содержит нечётное количество байтов, то в конец поля данных добавляется один байт 00h. Таким образом, размер chunk’а всегда равен чётному числу байтов.

FourCC (от англ. Four-Character Code) — четырёхсимвольный код-идентификатор видеокодеков, форматов сжатия, цветов или (пиксельных) размеров изображения, используемых в медиафайлах. Применительно к RIFF — это ckID (идентификаторы chunk’ов) и типы форм. Применительно к видеопотоку — это идентификатор кодека (например, «XVID», «DIV3», «MP43»). FourCC занимает 4 байта; это размер 32-битного числа, так что иногда FourCC записывают в виде числа (представления числа в ASCII little-endian).