IFF: Difference between revisions
(→Chunks Internals: cosmetics) |
(describe CAMG, DEST and SPRT) |
||
Line 187: | Line 187: | ||
| BODY || EA85 || Image Data | | BODY || EA85 || Image Data | ||
|- | |- | ||
| CAMG || || Amiga Viewport Modes | | [[#CAMG|CAMG]] || || Amiga Viewport Modes | ||
|- | |- | ||
| CCRT || || Graphicraft Color Cycling | | CCRT || || Graphicraft Color Cycling | ||
Line 207: | Line 207: | ||
| DCTV || reserved || | | DCTV || reserved || | ||
|- | |- | ||
| DEST || || Destination Image Info | | [[#DEST|DEST]] || || Destination Image Info | ||
|- | |- | ||
| DGVW || private || Newtek DigiView | | DGVW || private || Newtek DigiView | ||
Line 237: | Line 237: | ||
| SHAM || || Sliced HAM Color | | SHAM || || Sliced HAM Color | ||
|- | |- | ||
| SPRT || || Sprite Identifier | | [[#SPRT|SPRT]] || || Sprite Identifier | ||
|- | |- | ||
| TMAP || reserved || Transparency Map | | TMAP || reserved || Transparency Map | ||
Line 476: | Line 476: | ||
int16_t pageheight; /* source "page" size in pixels */ | int16_t pageheight; /* source "page" size in pixels */ | ||
} BitMapHeader; | } BitMapHeader; | ||
===CAMG=== | |||
typedef int32_t viewportMode; | |||
===CMAP=== | ===CMAP=== | ||
Line 486: | Line 490: | ||
} colormap[chunk_size / 3]; | } colormap[chunk_size / 3]; | ||
} ColorMap; | } ColorMap; | ||
===DEST=== | |||
typedef struct { | |||
uint8_t depth; /* # bitplanes in the original source */ | |||
uint8_t pad1; /* 0 */ | |||
uint16_t planePick; /* how to scatter source bitplanes into destination */ | |||
uint16_t planeOnOff; /* default bitplane data for planePick */ | |||
uint16_t planeMask; /* which bitplanes to store into | |||
} DestMerge; | |||
===GRAB=== | ===GRAB=== | ||
Line 495: | Line 509: | ||
int16_t y; | int16_t y; | ||
} Point2D; | } Point2D; | ||
===SPRT=== | |||
typedef uint16_t SpritePrecedence; /* relative precedence; 0 is highest */ | |||
[[Category:Image Formats]] | [[Category:Image Formats]] |
Revision as of 08:01, 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.
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;
IFF chunks are always padded to an even number of bytes. The possible padding byte is not included in chunk_size.
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
Described below is how the data part of specific chunks are to be interpreted.
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 */ } BitMapHeader;
CAMG
typedef int32_t viewportMode;
CMAP
typedef struct { struct { uint8_t red; uint8_t green; uint8_t blue; } colormap[chunk_size / 3]; } ColorMap;
DEST
typedef struct { uint8_t depth; /* # bitplanes in the original source */ uint8_t pad1; /* 0 */ uint16_t planePick; /* how to scatter source bitplanes into destination */ uint16_t planeOnOff; /* default bitplane data for planePick */ uint16_t planeMask; /* which bitplanes to store into } DestMerge;
GRAB
Hotspot, relative to the upper left corner. Think mouse cursor or paint brush.
typedef struct { int16_t x; int16_t y; } Point2D;
SPRT
typedef uint16_t SpritePrecedence; /* relative precedence; 0 is highest */