RIFF
RIFF (
-треки).Формат RIFF использует порядок байтов little-endian (младший байт идёт первым). Для машин с форматом данных big-endian предлагался формат RIFX, однако из-за существенно меньшей в бытовом секторе популярности компьютеров с таким форматом данных RIFX не прижился, и в настоящее время формат RIFF воспроизводится и на машинах с big-endian порядком байтов.
Изначально RIFF имел принципиальное ограничение размера данных в 4 ГБ (точнее, максимальный размер файла байт). В силу особенностей ряда популярных
Формат RIFF разработан в 1991 году компаниями Microsoft и IBM на основе формата IFF, разработанного компанией Electronic Arts в 1985 году, для little-endian компьютеров.
chunk
Основной концепцией RIFF-формата является chunk — блок данных, состоящий из трёх полей:
тип поля | имя поля | содержимое поля |
---|---|---|
FourCC | ckID | идентификатор типа содержимого chunk'а |
DWORD | ckSize | размер данных chunk'а |
BYTE[] | ckData | данные chunk'а |
Если chunk содержит нечётное количество байтов, то в конец поля данных добавляется один байт 00h. Таким образом, размер chunk’а всегда равен чётному числу байтов.
FourCC
FourCC (от англ. Four-Character Code) — четырёхсимвольный код-идентификатор видеокодеков, форматов сжатия, цветов или (пиксельных) размеров изображения, используемых в медиафайлах. Применительно к RIFF — это ckID (идентификаторы chunk’ов) и типы форм. Применительно к видеопотоку — это идентификатор кодека (например, «XVID», «DIV3», «MP43»). FourCC занимает 4 байта; это размер 32-битного числа, так что иногда FourCC записывают в виде числа (представления числа в ASCII little-endian).
Например:
FourCC | число (шестнадцатеричное) | число (десятичное) |
---|---|---|
'RIFF' | 0x46464952 | 1179011410 |
'AVI ' | 0x20495641 | 541677121 |
'DIVX' | 0x58564944 | 1482049860 |
'idx1' | 0x31786469 | 829973609 |
Два типа chunk’ов RIFF и LIST могут содержать внутри себя вложенные chunk’и. Весь файл представляет собою единый RIFF-chunk (это одна из причин ограничения размера файла).
ckID для chunk’ов самого формата RIFF всегда записываются большими буквами ASCII. В chunk’ах внутренних форматов (использующих RIFF), таких как AVI или WAV, ckID записывается маленькими буквами. Если ckID содержит две или три буквы, недостающие до 4 символов байты заменяются пробелами (AVI → 'AVI ').
Форма записи
Для удобства записи в спецификациях используется следующая форма записи формата chunk’а:
ckID(<formType> ck)
Например, запись для AVI-файла: RIFF('AVI ' LIST('hdrl' avi_header) LIST ('movi' movi) [idx1]). (Квадратные скобки указывают на необязательность элемента.)
Стандартные chunk’и
RIFF
«RIFF» DWORD:SIZE DWORD:FOURCC BYTE[]:DATA
Chunk с ckID = 'RIFF' имеет следующую структуру ckData:
тип поля | имя поля | комментарий к полю |
---|---|---|
FourCC | FormType | тип содержимого |
BYTE[] | ck | содержимое |
Наиболее распространённые типы FourCC:
- 'AVI ' — AVI: содержат видео- и аудиоинформацию.
- 'WAVE' — WAV: содержит звуковую информацию
- 'RMID' — RMI: содержит музыку в формате MIDI
Другие типы:
- 'RDIB' — англ. RIFF Device Independent Bitmap формат хранения изображений
- 'RMMP' — англ. RIFF Multimedia Movie File
- 'PAL ' — англ. Palette Format
LIST
Chunk LIST имеет формат, аналогичный RIFF, первые 4 байта содержат ListType (тип вложенного chunk’а), далее до конца чанка следуют вложенные chunk’и. В рамках формата AVI внутри LIST содержатся chunk’и с заголовком файла, заголовками потоков. Так же chunk LIST используется для хранения информации о содержимом.
JUNK и PAD
Для выравнивания блоков данных по размеру сектора на носителе для обеспечения скорости перемотки и доступа существуют два chunk’а: JUNK и PAD, которые «ничего не значат» и пропускаются программами воспроизведения. Изначально предполагалось, что при создании файла эти chunk’и будут просто заполнены нулями, однако некоторые программы редактирования видео хранят там свою
Запись chunk’ов в сокращённой нотации:
JUNK (filler) PAD (filler)
INFO
INFO — специальный ListType для хранения информации о содержимом файла. INFO не влияет на то, как программы работают с файлом, эта информация (большей частью) показывается пользователю. Назначение INFO подобно назначению mp3-тегов.
Список chunk’ов для INFO:
- IARL (англ. Archival Location) — место архивного хранения документа (практически не используется)
- IART (англ. Artist) — список авторов произведения (стандартный тег, отображается практически во всех плеерах).
- ICMS (англ. Commissioned) — список лиц, предоставивших содержимое файла (не используется)
- ICMT (англ. Comments) — комментарий (отображается практически во всех плеерах)
- ICOP (англ. Copyright) — информация об авторских правах.
- ICRD (англ. Creation date) — дата создания оригинального произведения. Формат YYYY-MM-DD (редко используется).
- ICRP (англ. Cropped) — данные об обрезке произведения (не используется).
- IDIM (англ. Dimensions) — физические размеры оригинала (не используется).
- IDPI (англ. Dots Per Inch) — DPI оригинала (не используется)
- IENG (англ. Engineer) — фамилии лиц, создававших файл (не используется).
- IGNR (англ. Genre) — жанр (частично поддерживается)
- IKEY (англ. Keywords) — список ключевых слов, относящихся к произведению (не используется)
- ILGT (англ. Lightness) — степень освещённости оригинала (зависит от оборудования оцифровки) (не используется).
- IMED (англ. Medium) — тип носителя оригинала (не используется)
- INAM (англ. Name) — название произведения. Существуют разногласия о том, следует ли использовать INAM или ISBJ для сохранения заголовка произведения (стандартный тег, поддерживается и часто используется)
- IPLT (англ. Palette Setting) — количество цветов при оцифровке (не используется).
- IPRD (англ. Product) — заголовок продукта, для которого в оригинале предназначалось произведение (не используется)
- ISBJ (англ. Subject) — описывает содержимое файла. Периодически, наравне с INAM, используется для хранения заголовка (используется)
- ISFT (англ. Software) — ПО, использованное для создания файла. Обычно автоматически заполняется программами по редактированию, но не отображается в списке тегов (используется)
- ISHP (англ. Sharpness) — необходимый уровень резкости для воссоздания произведения (не используется)
- ISRC (англ. Source) — название организации, предоставившей произведение (не используется)
- ISRF (англ. Source Form) — форма оригинального произведения (бумага/слайд и т. д.) (не используется)
- ITCH (англ. Technician) — специалист, производивший оцифровку (не используется)
Ссылки
Для улучшения этой статьи желательно:
|