FLI, FLC, CEL
Copyright © Анисимов С.Ю. 1998-03-08
- Заголовок файла
- Заголовок фрейма
- Блоки фрейма
- Блок тип 16 – несжатое изображение (FLI_COPY)
- Блок тип 13 – заполнение экрана нулевым цветом (BLACK)
- Блок тип 15 – сжатие RLE ( BYTE_RUN )
- Блок тип 12 – блок дельта – сжатия по байтам ( DELTA_FLI )
- Блок тип 7 – блок сжатия по словам (DELTA_FLC)
- Блок тип 4 - настройки палитры (COLOR_256)
- Блок тип 11 - настройки палитры (COLOR_64)
- Блок тип 18 – миниатюрное изображения (PSTAMP)
- Достоинства и недостатки
- Источники и исходники.
- Об авторе
Введение
Анимационные файлы FLI, FLC и CEL используются Autodesk Animator Pro. Они позволяют проигрывать на экране компьютера подобие кинофильмов. В них не содержится звука и обеспечивается передача всего 256 цветов. Но их простота и быстрота проигрывания сделали данный формат популярным среди разработчиков игр и художников-аниматоров. Файлы FLI использовались первоначально в Animator. Файлы FLC затем стали использоваться в Animator Pro.
Формат файла фильмов ( flic ) разработал Jim Kent. В марте 1993 года в журнале “The Doctor Dobb's Journal” он поведал миру о своем изобретении [1].
Все данные в этих файлах группируются во фреймы. Фрейм - это один кадр фильма.
Фреймы состоят из так называемых кусков ( chunk ), но для удобства мы будем называть их блоками. Блоки файла и содержат в себе всю информацию необходимую для проигрывания фильма. В начале блока указывается его размер и его тип, также как и вначале каждого фрейма, поэтому если тип фрейма или блока неизвестен, то данный блок или фрейм можно просто пропустить.
В основе дельта-сжатия, применяемого в файлах фильмов лежит идея сохранять отличия одного изображения от другого. Это позволяет проигрывать файлы даже на медленных видеоадаптерах, так как надо выводить только часть изображения, а не все.
Сами данные сжимаются по схеме RLE ( кодирование длин серий ). Причем первый фрейм содержит изображение целиком, и относительно него и строятся отличия других фреймов. Последний фрейм фильма кольцевой и служит для плавного циклического проигрывания фильма.
Порядок байт в слове тот, что используется в процессорах фирмы Intel. Если вам необходимо проигрывать фильм на другой платформе, где порядок байт в слове другой, наверно лучшим решением было бы использование конвертора для смены порядка байт в слове.
В данной статье будут описаны типы фреймов и блоков, которые использовались в оригинальном формате файла фильма.
Заголовок файла
Заголовок файла имеет длину 128 байт, вот его описание в виде таблицы.
Смещение от начала (байт) | Размер (байт) | Название | Описание |
---|---|---|---|
0 | 4 | Size | Размер файла, в байтах. |
4 | 2 | Type | Идентификатор файла. Всегда 0xAF11 для FLI и 0xAF12 для FLC и для CEL. |
6 | 2 | Frames | Число фреймов, максимум 4000. Не включая кольцевой фрейм. |
8 | 2 | Width | Ширина экрана для воспроизведения |
10 | 2 | Height | Высота экрана для воспроизведения |
12 | 2 | Depth | Бит на пиксель ( всегда 8, для CEL равняется 0 ). |
14 | 2 | Flags | Флажки, всегда равны 3. Если первый бит, не установлен, то нет кольцевого фрейма. |
16 | 4 | Speed | Задержка между фреймами. Для FLI в единицах 1/70 секунды, для FLC в единицах 1/1000 секунды. |
20 | 2 | Reserv | Резерв, всегда 0. |
Далее только для FLC | |||
22 | 4 | created | Дата создания файла в формате MsDOS. |
26 | 4 | Creator | Серийный номер программы Animator Pro, создавшей файл. |
30 | 4 | Updated | Дата последнего изменения файла |
34 | 4 | Updater | Серийный номер программы, изменившей файл |
38 | 2 | Aspectx | Коэффициент пропорциональности по оси X. |
40 | 2 | Aspecty | Коэффициент пропорциональности по оси Y. |
42 | 38 | Reserved | Резерв, всегда 0 |
80 | 4 | Oframe1 | Смещение от начала файла на первый фрейм |
84 | 4 | Oframe2 | Смещение от начала файла на второй фрейм. Это значение можно использовать при циклическом проигрывании фильма. |
88 | 40 | Reserved | Резерв, всегда 0. |
После чтения заголовка проверьте идентификатор файла. Для FLI и FLC разные единицы задержки между кадрами. Для FLI задержка исчислялась относительно частоты вывода на экран монитора. Для FLC задержка исчисляется в единицах 1/1000 секунды.
Для FLI максимальный размер экрана 320x200. Для FLC максимальный размер экрана 1280x1024.
Формат файла CEL и его содержание соответствуют формату файла FLC, но depth равняется 0. На самом деле depth равняется 8.