IFF: Difference between revisions
Jump to navigation
Jump to search
(→Generic Chunk Format: size --> chunk_size) |
(→Chunks Internals: describe CMAP) |
||
Line 459: | Line 459: | ||
Images are stored in planes. So, to get a pixels color value you need to combine the bits from each plane to create a color register index. | Images are stored in planes. So, to get a pixels color value you need to combine the bits from each plane to create a color register index. | ||
typedef struct { | typedef struct { | ||
uint16_t w; /* raster width in pixels */ | uint16_t w; /* raster width in pixels */ | ||
Line 474: | Line 473: | ||
int16_t pagewidth; /* source "page" size in pixels */ | int16_t pagewidth; /* source "page" size in pixels */ | ||
int16_t pageheight; /* source "page" size in pixels */ | int16_t pageheight; /* source "page" size in pixels */ | ||
} | } BMHD_data; | ||
===CMAP=== | |||
typedef struct { | |||
struct { | |||
uint8_t red; | |||
uint8_t green; | |||
uint8_t blue; | |||
} colormap[chunk_size / 3]; | |||
} CMAP_data; | |||
[[Category:Image Formats]] | [[Category:Image Formats]] |
Revision as of 06:21, 3 May 2008
- 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
- Specification:
- Original Electronic Arts specification january 14 1985.
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
Generic Chunk Format
typedef struct { char FOURCC[4]; int32_t chunk_size; uint8_t data[size]; } IFF_chunk;
Example of a chunked IFF file:
FORM
|
Table Of Chunks
Note: FOURCC's of less than four characters are padded with spaces.
Group Identifiers | ||
---|---|---|
FOURCC | Standard | Description |
CAT | EA85 | |
END | unofficial | END-of-FORM identifier (see Amiga RKM Devices Ed. 3 page 376) |
FORM | EA85 | |
LIST | EA85 | |
PROP | EA85 | |
TREE | Storage of arbitrary data structures like trees and nested lists | |
Text, annotations, et cetera | ||
FOURCC | Standard | Description |
(c) | EA85 | Copyright |
ANNO | EA85 | Annotation |
AUTH | EA85 | Author |
CHRS | EA85 | Character String |
CSET | Character Set | |
FTXT | EA85 | Formatted Text |
FVER | Amiga OS Version String | |
HLID | private | HotLink IDentification (Soft-Logik) |
JUNK | Ignore | |
NAME | EA85 | Title of image, music, ... |
OCMP | EA85, reserved | Computer Property |
OCPU | EA85, reserved | CPU Property |
OPGM | EA85, reserved | Program Property |
OSN | EA85, reserved | Serial Number Property |
PTXT | private, reserved | |
TEXT | EA85 | Unformatted ASCII Text |
UNAM | EA85, reserved | Username Property |
VERS | File Version Number | |
Graphics Forms | ||
FOURCC | Standard | Description |
ACBM | Amiga Contiguous Bitmap (AmigaBasic) | |
CHBM | private | Chunky Bitmap |
DCCL | private | DCTV Paint Clip |
DCPA | private | DCTV Paint Palette |
DCTV | private | DCTV Raw Picture |
DEEP | Chunky Pixel Image Files (TV Paint) | |
DR2D | 2D Object, Vector Graphics | |
DRAW | reserved | Jim Bayless, 12/90 |
DSDR | private | DrawStudio |
GRYP | proposal | Byteplane Storage |
ILBM | EA85 | Raster Bitmap Form |
ILBM.* | See ILBM Chunks below | |
OB3D | proposal | 3D Object |
PBM | 256-Color Chunky Pixel | |
PICS | EA85, reserved | Macintosh Picture |
PICS.PICT | EA85, reserved | Macintosh Picture |
PLBM | EA85, reserved | Obsolete |
RGB4 | private | 4-bit RGB |
RGB8 | RGB Image, Turbo Silver (Impulse) | |
RGBN | RGB Image, Turbo Silver (Impulse) | |
RGBX | private, reserved | |
SC3D | private | 3D Scene, Sculpt-3D |
TDDD | 3D Rendering Data, Turbo Silver (Impulse) | |
YUVN | YUV Image Data, MacroSystems | |
ILBM Chunks | ||
FOURCC | Standard | Description |
3DCM | reserved | by Haitex |
3DPA | reserved | by Haitex |
ABIT | ACBM Body | |
ASDG | private | ASDG Application |
BHBA | private | Photon Paint (brushes) |
BHCP | private | Photon Paint (screens) |
BHSM | private | Photon Paint |
BMHD | EA85 | ILBM Bitmap Header |
BODY | EA85 | Image Data |
CAMG | Amiga Viewport Modes | |
CCRT | Graphicraft Color Cycling | |
CLUT | Color Lookup Table | |
CMAP | EA85 | 8-bit RGB Color Map (packed array of ColorRegisters) |
CMYK | CMYK Color Map (Soft-Logik) | |
CNAM | Color Naming Chunk, providex names for CMAP and/or CMYK (Soft-Logik) | |
CRNG | Color Cycling | |
CTBL.DYCP | Newtek Dynamic Ham Color | |
DCOL | unofficial | Direct Color |
DCTV | reserved | |
DEST | Destination Image Info | |
DGVW | private | Newtek DigiView |
DLTA | Image Data | |
DPI | Dots Per Inch | |
DPPV | DPaint Perspective (EA) | |
DRNG | DPaint IV Enhanced Color Cycling (EA) | |
EPSF | Encapsulated Postscript | |
FAX3 | private | GPSoftware FAX |
FAXX | Fascimile Image | |
FAXX.GPHD | Additional Header Info for FAXX forms | |
GRAB | Hotspot Coordinates | |
MFAX | private, reserved | TKR GmbH & Co. |
PCHG | Line-by-line Palette Control Information | |
PRVW | proposal | Preview (thumbnail) |
SHAM | Sliced HAM Color | |
SPRT | Sprite Identifier | |
TMAP | reserved | Transparency Map |
VTAG | proposal | Viewmode Tags |
XBMI | Extended Bitmap Information (Soft-Logik) | |
XSSL | Identifier for 3D X-Specs Image (Haitex) | |
Audio and Music | ||
FOURCC | Standard | Description |
16SV | ||
8SVX | EA85 | 8-bit Sound Sample |
8SVX.CHAN.PAN | Stereo chunks | |
8SVX.SEQN.FADE | Looping chunks | |
AHIM | private | AHI Modes |
AHIM.AUDN | private | Audio Driver Name |
AHIM.AUDD | private | Audio Driver Data |
AHIM.AUDM | private | Audio Mode |
AIFF | Audio 1-32 bit Samples | |
BANK | private | Soundquest Editor/Librarian MIDI Sysex Dump |
CELP | proposal | Compressed ZyXEL Voice Data |
CMUS | proposal | Common Musical Score |
GSCR | EA85 | General Music Score |
MIDI | private | Circum Design |
MSCX | private | Music-X Format |
SAMP | Sampled Sound | |
SYTH | private | SoundQuest Master Librarian MIDI System Driver |
TRKR | proposal | MOD Tracker Music |
USCR | EA85, reserved | Uhuru Score |
UVOX | EA85, reserved | Uhuru Mac Voice |
Fonts | ||
FOURCC | Standard | Description |
CPFM | private | Cloanto Personal Fontmaker |
FNTR | EA85, reserved | Raster Font |
FNTV | EA85, reserved | Vector Font |
Animation and Movies | ||
FOURCC | Standard | Description |
AHAM | private | |
ANBM | Animated Bitmap (Framer, Deluxe Video) | |
ANHD | ANIM Frame | |
ANIM | Cel Animation | |
ANIM.brush | Brushes | |
ANIM.op6 | Stereo, 3D Animation | |
ANIM.op7 | private, unregistered | |
ANIM.op8 | ||
DPAN | Deluxe Paint Animation | |
FANT | Fantavision Movie | |
FIGR | private | Deluxe Video |
FILM | private | Store ILBM's with interleaved 8SVX audio |
JMOV | private, reserved | Merging Technologies |
MOVI | private | LIST MOVI |
ROXN | private | |
VDEO | private | Deluxe Video |
YAFA | private, unregistered | Wildfire Animation |
Unclassified, unknown, et cetera | ||
FOURCC | Standard | Description |
ANFI | ||
ANSQ | ||
ARC | proposal | Archive Format |
ARES | private, unregistered | |
ATXT | reserved | |
ATAK | ||
AVCF | private | AmigaVision Flow format |
BBSD | private | BBS Database, F. Patnaude, Jr., Phalanx Software |
C100 | private | Cloanto Italiaformat |
CLIP | private | CAT CLIP, holds various clipboard formats |
DECK | private | Inovatronics CanDo |
DOC | private | PageStream |
DPPS | ||
DTYP | DataTypes Identification | |
EXEC | proposal | Executable Code |
FACE | ||
FRED | private | ASDG Global Chunk |
GMS | Gesture and Motion Signal (see libGMS) | |
GUI | proposal, private | Graphical User Interface Storage |
HEAD | Flow Idea Processor, New Horizons Software | |
IMRT | ||
INFO | proposal | Contains data usually found in .info file |
INS1 | ||
IOBJ | private, reserved | Seven Seas Software |
IODK | private, reserved | Jean-Marc Porchet, Merging Technologies |
ITRF | private, reserved | |
MHDR | ||
MSMP | reserved | |
MTRX | Numerical Data Storage, MathVision - Seven Seas | |
NSEQ | private | Numerical Sequence, Stockhausen GmbH |
PGTB | Program Traceback (SAS Institute) | |
PMBC | proposal, reserved | Black Belt System, 1991-12-01 |
PREF | private, reserved | Commodore, User Preferences |
PREF.AHI | private | AHI Global Preferences |
PREF.AHIU | private | AHI Unit Preferences |
PRSP | DPaint IV Perspective Move | |
PTCH | private | Patch File, SAS Institute |
RLSE | ||
SHAK | private | Shakespeare Format |
SHDR | ||
SHO1 | private, reserved | Gary Bonham |
SHOW | private, reserved | Gary Bonham |
SPLT | ASDG's File Splitting System | |
SSRE | private, reserved | Merging Technologies, 1992-05-04 |
SWRT | private, unregistered | |
TCDE | private, reserved | Merging Technologies |
TERM | private, unregistered | |
TINY | ||
TMUI | Toolmaker IFF Project (Toolmaker v1.19) | |
TRAK | ||
VHDR | ||
WORD | ProWrite Document, New Horizons | |
WOWO | private, unregistered | Wordworth |
Chunks Internals
BMHD
Images are stored in planes. So, to get a pixels color value you need to combine the bits from each plane to create a color register index.
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 */ } BMHD_data;
CMAP
typedef struct { struct { uint8_t red; uint8_t green; uint8_t blue; } colormap[chunk_size / 3]; } CMAP_data;