IFF

From MultimediaWiki
Revision as of 07:14, 2 May 2008 by Ivo (talk | contribs) (change layout of chunk table)
Jump to navigation Jump to search
  • Extensions: 8svx, 16sv, ilbm, anim
  • MIME Types:
    • 8svx: audio/8svx, audio/x-8svx
    • 16sv: audio/16sv, audio/x-16sv
    • ilbm: image/ilbm, image/x-ilbm
    • anim: video/anim, video/x-anim

IFF (Interchange File Format) is a format developed by electronic arts in the 80's. It is the predominant format on the Amiga computer. It is a chunked format. It can be used to store any type of data, but it is predominantly used to store images, animations and audio.

IFF chunks are always padded to an even number of bytes.

Implementations

    • xine has a demuxer/decoder for iff. Manfred Tremmel the author of the xine code has agreed to relicence his xine code as LGPL to allow easier use in ffmpeg. Thanks Manfred.
    • Werner Randelshofer the author of multishow has also granted permission for his iff code to be relicenced as LGPL. Thanks Werner.
    • Xanim also contains code to support iff, it may contain some formats not available in xine.
    • libiffanim supports lots of animation formats http://www-user.tu-chemnitz.de/~womar/projects/iffanim/
    • Virtualdub contains a demuxer/decoder also, look in the file InputFileANIM.cpp

ILBM FOURCC

Images are stored in planes. So, to get a pixels color value you need to combine the bits from each frame to create a color register index.

/* ---------- BitMapHeader ---------------------------------------------*/
/*  Required Bitmap header (BMHD) structure describes an ILBM           */
typedef struct {
 uint16_t             w;                    /* raster width in pixels  */
 uint16_t             h;                    /* raster height in pixels */
 int16_t              x;                    /* x offset in pixels  */
 int16_t              y;                    /* y offset in pixels */
 uint8_t              nplanes;              /* # source bitplanes      */
 uint8_t              masking;              /* masking technique       */
 uint8_t              compression;          /* compression algoithm    */
 uint8_t              pad1;                 /* UNUSED.  For consistency, put 0 here. */
 uint16_t             transparentColor;     /* transparent "color number" */
 uint8_t              xaspect;              /* aspect ratio, a rational number x/y */
 uint8_t              yaspect;              /* aspect ratio, a rational number x/y */
 int16_t              pagewidth;            /* source "page" size in pixels */
 int16_t              pageheight;           /* source "page" size in pixels */
} BitMapHeader;

List Of Chunk FOURCCs

Note: an underscore (_) is used to indicate the space character.

EA IFF 85 Group Identifiers
CAT_
END_ unofficial END-of-FORM identifier (see Amiga RKM Devices Ed. 3 page 376)
FORM
LIST
PROP
Text, annotations, et cetera
(c)_ EA IFF 85 Generic Copyright
ANNO EA IFF 85 Generic Annotation
AUTH EA IFF 85 Generic Author
CHRS EA IFF 85 Generic Character String
FVER Amiga OS Version String
JUNK Ignore
NAME EA IFF 85 Generic Title of image, music, ...
TEXT EA IFF 85 Generic Unformatted ASCII Text
Images
ILBM EA IFF 85 Raster Bitmap Form
DEEP Chunky Pixel Image Files (TV Paint)
RGB8 RGB Image, Turbo Silver (Impulse)
RGBN RGB Image, Turbo Silver (Impulse)
PBM_ 256-Color Chunky Pixel
ACBM Amiga Contiguous Bitmap (AmigaBasic)
Rest...
16SV
8SVX
ANFI
ANHD ANIM Frame
ANIM
ANSQ
ATAK
BMHD
BODY
CAMG
CCRT Graphicraft cycling chunk
CHAN
CMAP Color Map is a packed array of ColorRegisters
CRNG
DEST
DLTA
DPAN Deluxe Paint Anim Chunk
DPI_
DPPS
DPPV
DRNG
FACE
FADE
GRAB
INS1
IMRT
MHDR
PAN_
RLSE
SAMP
SEQN
SHDR
SMUS
SPRT
TINY
TRAK
VHDR