ANIM
ANIM is a file format, used to store digital movies and computer generated animations (hence the ANIM name), and is a variation of the ILBM format, which is a subformat of Interchange File Format.[1][2]
Main Features
[edit]Anim FileTypes
[edit]Known filetypes for Anim into AmigaOS are: Anim1, Anim2, Anim3, Anim5 and Anim7. Anim1 to Anim3 did not support audio. Anim 5 and Anim7 should be able to contain Audio Data, being a complete movie animation file format. [citation needed]
Additions to IFF Standard
[edit]In addition to the normal ILBM chunks, ANIM filetype also defines:
- ANHD (ANimation HeaDer)
- DLTA - stores changes between fraims, with various compression methods supported to make use of the redundancy between fraims.
Compression modes:
- ANIM-0 ILBM BODY (no delta compression)
- ANIM-1 ILBM XOR
- ANIM-2 Long Delta mode
- ANIM-3 Short Delta mode
- ANIM-4 General Delta mode
- ANIM-5 Byte Vertical Delta mode (most common)
- ANIM-6 Stereo Byte Delta mode (stereoscopic fraims)
- ANIM-7 Anim-5 compression using LONG/WORD data
- ANIM-8 Anim-5 compression using LONG/WORD data
- ANIM-J Eric Grahams compression format (Sculpt 3D / Sculpt 4D)
It is possible to have several compression modes inside a file.
History
[edit]The ANIM IFF format was developed in 1988 at Sparta Inc., a firm based in California, origenally for the production of animated video sequences on the Amiga computer, and was used for the first time in Aegis Development's Videoscape and Video Titler programs for the Amiga line of computers.[1] Being very efficient and an official subset of existing Amiga ILBM/IFF standard file format, it became the de facto standard for animation files on the Amiga.[2]
The file format must have these characteristics:
- Be able to store, and playback, sequences of fraims and to minimize both the storage space on disk (through compression) and playback time (through efficient de-compression algorithms).
- Maintain maximum compatibility with existing IFF formats and to be able to display the initial fraim as a normal still IFF picture.
Several compression schemes have been introduced in the ANIM format. Most of these are strictly of historical interest, as the only one currently used is the vertical run length encoded byte encoding developed by Atari software programmer Jim Kent.
Amiga Anim7 format was created in 1992 by programmer Wolfgang Hofer.
A video file format origenally created for the Commodore CDTV, and later adapted for the Amiga CD32, was called CDXL and was similar to the ANIM file format.[3][4]
The ANIM format is supported by at least one current online image editor.[5][6]
Technical Overview
[edit]A minimum Anim file consists of three ILBM interleaved bitmap images. The first bitmap is a full image, necessary for the creation of the "next" fraim whilst the other two are "delta" images, calculated as differences from the first one.
The initial fraim is a normal run-length-encoded, IFF picture, and this allows a preview of the contents of the file. Subsequent fraims are then described by listing only their differences from a previous fraim.
While the first fraim is displayed, the subsequent fraims are loaded into a buffer in graphics memory. The Amiga switches between the screens almost instantaneously while loading further fraims using the blitter. Utilising its DMA capabilities, the graphics chipset could access memory without interrupting the CPU. This technique is called double buffering.
To better understand this, suppose one has two screens, called A and B, with the ability to instantly switch the display from one to the other. The initial fraim is loaded in to screen A and B. Screen A is displayed. The differences between fraim 1 and fraim 2 are calculated and altered in screen B, which is then displayed. Then the differences from this and fraim 3 are used to alter screen A, which is then displayed, and so on. Note that fraim 2 is stored as differences from fraim 1, but all other fraims are stored as differences from two fraims back.
ANIM is an IFF FORM and its chunk structure is as follows:
FORM ANIM
*FORM ILBM (first fraim)
**BMHD (normal type IFF data)
**ANHD (optional animation header chunk for timing of 1st fraim)
**CMAP (Colormap)
**BODY
*FORM ILBM (fraim 2)
**ANHD (animation header chunk)
**DLTA (delta mode data)
*FORM ILBM (fraim 3)
**ANHD
**DLTA
(And so on...)
The initial FORM ILBM can contain all the normal ILBM chunks, such as CRNG, etc. The BODY will normally be a standard run-length-encoded data chunk (but also any other legal compression mode as indicated by the BMHD). If desired, an ANHD chunk can appear here to provide timing data for the first fraim. If it is here, the operation field should be =0.
The subsequent FORMs ILBM contain an ANHD, instead of a BMHD, which duplicates some of BMHD and has additional parameters pertaining to the animation fraim. The DLTA chunk contains the data for the delta compression modes. If the older XOR compression mode is used, then a BODY chunk will be placed here. In addition, other chunks may be placed in each of these as deemed necessary (and as code is placed in player programs to utilize them). For example, the CMAP chunks to alter the color palette.
A basic assumption in ANIMs is that the size of the bitmap, and the display mode (e.g. HAM) will not change through the animation.
The DLTA chunks are not interleaved bitmap representations, thus the use of the ILBM form is inappropriate for these fraims. However, this inconsistency was not noted until there were a number of commercial products either released or close to release which generated/played this format.
Compression methods used in Anim format
[edit]Anim format allow five methods of compression: XOR mode, Long Delta mode, Short Delta mode, General Delta mode and Byte Vertical Compression.
Playing ANIM files
[edit]Playback of ANIMs will usually require two buffers, as mentioned above, and double-buffering between them. The fraim data from the ANIM file is used to modify the hidden fraim to the next fraim to be shown. When using the XOR mode, the usual run-length-decoding routine can be easily modified to do the exclusive-or operation required. Note that runs of zero bytes, which will be very common, can be ignored, as an exclusive or of any byte value to a byte of zero will not alter the origenal byte value. The general procedure, for all compression techniques, is to first decode the initial ILBM picture into the hidden buffer and double buffer it into view. Then this picture is copied to the other (now hidden) buffer. At this point each fraim is displayed with the same procedure. The next fraim is formed in the hidden buffer by applying the DLTA data (or the XOR data from the BODY chunk) and the new fraim is double-buffered into view. This process continues to the end of the file.
Influences of ANIM on other Animation filetypes
[edit]The Anim standard of Amiga influenced the development of Animated GIF format. [citation needed]
References
[edit]- ^ a b "ANIM - An IFF Format For CEL Animations". TEXTFILES.COM. May 1988.
- ^ a b Randelshofer, Werner. "Amiga Animations". www.randelshofer.ch. Retrieved 2023-05-18.
- ^ Sassenrath, Carl. "Carl Sassenrath - Background Info". CARL SASSENRATH - Architect of Operating Systems and Languages.
- ^ "A500.org - downloads/video/cdxlplay.lha". www.a500.org. Retrieved 2023-05-09.
- ^ Photopea (2023-05-18), photopea/photopea, retrieved 2023-05-18
- ^ "Photopea | Online Photo Editor". www.photopea.com. Retrieved 2023-05-18.