ANIM — это формат файла , используемый для хранения цифровых фильмов и компьютерной анимации (отсюда и название ANIM), и является разновидностью формата ILBM , который является подформатом Interchange File Format . [1] [2]
Известные типы файлов для Anim в AmigaOS : Anim1, Anim2, Anim3, Anim5 и Anim7. Anim1 to Anim3 не поддерживали аудио. Anim 5 и Anim7 должны иметь возможность содержать аудиоданные, будучи полноценным форматом файла анимации фильма. [ необходима цитата ]
В дополнение к обычным фрагментам ILBM тип файла ANIM также определяет:
Режимы сжатия:
Внутри файла возможно наличие нескольких режимов сжатия.
Формат ANIM IFF был разработан в 1988 году в компании Sparta Inc. , базирующейся в Калифорнии , изначально для производства анимированных видеопоследовательностей на компьютере Amiga , и впервые был использован в программах Videoscape и Video Titler компании Aegis Development для линейки компьютеров Amiga. [1] Будучи очень эффективным и официальным подмножеством существующего стандартного формата файлов Amiga ILBM/IFF, он стал фактическим стандартом для файлов анимации на Amiga. [2]
Формат файла должен иметь следующие характеристики:
В формате ANIM было введено несколько схем сжатия. Большинство из них представляют чисто исторический интерес, поскольку в настоящее время используется только одна — вертикальное кодирование длины байта, разработанное программистом Atari Джимом Кентом .
Формат Amiga Anim7 был создан в 1992 году программистом Вольфгангом Хофером.
Формат видеофайлов, изначально созданный для Commodore CDTV , а затем адаптированный для Amiga CD32 , назывался CDXL и был похож на формат файла ANIM. [3] [4]
Формат ANIM поддерживается как минимум одним современным онлайн-редактором изображений. [5] [6]
Минимальный файл Anim состоит из трех чередующихся растровых изображений ILBM. Первое растровое изображение — это полное изображение, необходимое для создания «следующего» кадра, а два других — это «дельта»-изображения, вычисляемые как разности с первым.
Начальный кадр — это обычное закодированное по длине отрезка изображение IFF, что позволяет предварительно просмотреть содержимое файла. Последующие кадры затем описываются путем перечисления только их отличий от предыдущего кадра.
Пока отображается первый кадр, последующие кадры загружаются в буфер в графической памяти. Amiga переключается между экранами практически мгновенно, загружая последующие кадры с помощью блиттера. Используя возможности DMA, графический чипсет может получать доступ к памяти, не прерывая работу ЦП. Этот метод называется двойной буферизацией .
Чтобы лучше понять это, предположим, что у вас есть два экрана, называемые A и B, с возможностью мгновенного переключения отображения с одного на другой. Начальный кадр загружается на экраны A и B. Отображается экран A. Различия между кадром 1 и кадром 2 вычисляются и изменяются на экране B, который затем отображается. Затем различия между этим и кадром 3 используются для изменения экрана A, который затем отображается, и так далее. Обратите внимание, что кадр 2 сохраняется как различия с кадром 1, но все остальные кадры сохраняются как различия с двумя кадрами назад.
ANIM — это ФОРМА IFF, и ее структура фрагментов выглядит следующим образом:
ФОРМА АНИМ*ФОРМА ILBM (первый кадр)**BMHD (данные IFF нормального типа)**ANHD (необязательный фрагмент заголовка анимации для синхронизации 1-го кадра)**CMAP (карта цветов)**ТЕЛО*ФОРМА ILBM (кадр 2)**ANHD (фрагмент заголовка анимации)**DLTA (данные в дельта-режиме)*ФОРМА ILBM (кадр 3)**АНХД**ДЛТА(И так далее...)
Начальная ФОРМА ILBM может содержать все обычные фрагменты ILBM, такие как CRNG и т. д. ТЕЛО обычно будет стандартным фрагментом данных, закодированным по длине серии (но также любым другим допустимым режимом сжатия, указанным BMHD). При желании здесь может появиться фрагмент ANHD для предоставления данных о времени для первого кадра. Если он здесь, поле операции должно быть =0.
Последующие ФОРМЫ ILBM содержат ANHD вместо BMHD, который дублирует часть BMHD и имеет дополнительные параметры, относящиеся к кадру анимации. Кусок DLTA содержит данные для режимов дельта-сжатия. Если используется старый режим сжатия XOR, то здесь будет размещен кусок BODY. Кроме того, в каждом из них могут быть размещены другие куски по мере необходимости (и по мере размещения кода в программах проигрывателя для их использования). Например, куски CMAP для изменения цветовой палитры.
Основное предположение в ANIM заключается в том, что размер растрового изображения и режим отображения (например, HAM) не будут меняться в ходе анимации.
Фрагменты DLTA не являются чередующимися битовыми представлениями, поэтому использование формы ILBM не подходит для этих кадров. Однако эта непоследовательность не была замечена, пока не было выпущено или близко к выпуску несколько коммерческих продуктов, которые генерировали/воспроизводили этот формат.
Формат Anim допускает пять методов сжатия: режим XOR, режим Long Delta, режим Short Delta, режим General Delta и вертикальное сжатие байтов.
Для воспроизведения ANIM обычно требуются два буфера, как упоминалось выше, и двойная буферизация между ними. Данные кадра из файла ANIM используются для изменения скрытого кадра на следующий кадр, который будет показан. При использовании режима XOR обычная процедура декодирования длины прогона может быть легко изменена для выполнения требуемой операции исключающего ИЛИ. Обратите внимание, что прогоны нулевых байтов, которые будут очень распространены, можно игнорировать, поскольку исключающее ИЛИ любого значения байта к байту нуля не изменит исходное значение байта. Общая процедура для всех методов сжатия заключается в том, чтобы сначала декодировать исходное изображение ILBM в скрытый буфер и дважды буферизировать его в вид. Затем это изображение копируется в другой (теперь скрытый) буфер. В этот момент каждый кадр отображается с помощью той же процедуры. Следующий кадр формируется в скрытом буфере путем применения данных DLTA (или данных XOR из фрагмента BODY), и новый кадр дважды буферизуется в вид. Этот процесс продолжается до конца файла.
Стандарт Anim компании Amiga повлиял на развитие формата анимированного GIF . [ необходима цитата ]