Overview | Package | Class | Tree | Deprecated | Index | Help
| Copyright 2012-04-26 Werner Randelshofer
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.monte.media.anim
Class ANIMDecoder

    java.lang.Object
      org.monte.media.anim.ANIMDecoder

All Implemented Interfaces:
  IFFVisitor

    public class ANIMDecoder

extends java.lang.Object
implements IFFVisitor

Decodes IFF files and adds the data to an ANIMMovieTrack.

Version:
  2.3 2011-07-21 Treats CMAP specially if OCS chip set is detected.
  2.1 2010-04-11 Adds support for CCRT color cycling.
  2.1 2010-01-22 Adds support for CRNG color cycling.
  2.0 2009-12-25 Treat an ILBM file as an animation with a single frame.
  1.3 2009-12-24 Added support for CRNG color cycling.
  1.2.1 2006-09-30 Decode CMAP even if it is too big or too small for the number of bitplanes used of the animation.
  1.2 2003-04-21 Decode ANFI revised.
  1.0 2003-04-03 Support for ANIM+SLA (Animations with Statically Loaded Audio) files added.
  1.0 1999-10-19
Author:
  Werner Randelshofer, Hausmatt 10, CH-6405 Immensee, Switzerland

Field Summary
`static int` | `A2024_MONITOR_ID` A2024, 60fps (I don't know the real value).
`static int` | `DBLNTSC_MONITOR_ID` DBLNTSC, 58fps, 44:52.
`static int` | `DBLPAL_MONITOR_ID` DBLPAL, 48fps, 44:44.
`static int` | `DEFAULT_MONITOR_ID` Default ID chooses a system dependent screen mode.
`protected static int` | `EHB_MODE`
`static int` | `EURO36_MONITOR_ID` EURO36, 73fps, 44:44.
`static int` | `EURO72_MONITOR_ID` EURO72, 69fps, 44:44.
`protected static int` | `HAM_MODE`
`protected static int` | `MODE_MASK`
`static int` | `MONITOR_ID_MASK` CAMG monitor ID mask.
`static int` | `MULTISCAN_MONITOR_ID` MULTISCAN (VGA), 58fps, 44:44.
`static int` | `NTSC_MONITOR_ID` NTSC, 60fps, 44:52.
`static int` | `PAL_MONITOR_ID` PAL, 50fps, 44:44.
`static int` | `PROTO_MONITOR_ID` PROTO, 60fps (I don't know the real value).
`static int` | `SUPER72_MONITOR_ID` SUPER72, 71fps, 34:40.

Constructor Summary
`ANIMDecoder(java.io.InputStream inputStream)`
`ANIMDecoder(java.net.URL location)`

Method Summary
`protected void` | `decodeANNO(IFFChunk[] chunks, ANIMMovieTrack track)`
`protected void` | `decodeAUTH(IFFChunk[] chunks, ANIMMovieTrack track)`
`protected void` | `decodeCCRT(IFFChunk chunk, ANIMMovieTrack track)` Decodes the color cycling range and timing chunk (ILBM CCRT).
`protected void` | `decodeColorCycling(IFFChunk[] ccrtChunks, IFFChunk[] crngChunks, IFFChunk[] drngChunks, ANIMMovieTrack track)` Process CRNG and DRNG chunks in the sequence of their location in the file.
`protected void` | `decodeCOPYRIGHT(IFFChunk[] chunks, ANIMMovieTrack track)`
`protected void` | `decodeCRNG(IFFChunk chunk, ANIMMovieTrack track)` Decodes the color range cycling (ILBM CRNG).
`protected void` | `decodeDRNG(IFFChunk chunk, ANIMMovieTrack track)` Decodes the DPaint IV enhanced color cycle chunk (ILBM DRNG)
`void` | `enterGroup(IFFChunk chunk)`
`void` | `leaveGroup(IFFChunk chunk)`
`void` | `produce(ANIMMovieTrack track, int n, boolean loadAudio)` Decodes the stream and produces animation frames into the specified movie track.
`void` | `registerChunks(IFFParser iff, boolean loadAudio)`
`void` | `visitChunk(IFFChunk group, IFFChunk chunk)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### MONITOR_ID_MASK

    public static final int MONITOR_ID_MASK

  CAMG monitor ID mask.

  See Also:
    Constant Field Values

### DEFAULT_MONITOR_ID

    public static final int DEFAULT_MONITOR_ID

  Default ID chooses a system dependent screen mode. We always fall back to NTSC OCS with 60fps. The default monitor ID triggers OCS mode! OCS stands for "Original Chip Set". The OCS chip set only had 4 bits per color register. All later chip sets hat 8 bits per color register.

  See Also:
    Constant Field Values

### NTSC_MONITOR_ID

    public static final int NTSC_MONITOR_ID

  NTSC, 60fps, 44:52.

  See Also:
    Constant Field Values

### PAL_MONITOR_ID

    public static final int PAL_MONITOR_ID

  PAL, 50fps, 44:44.

  See Also:
    Constant Field Values

### MULTISCAN_MONITOR_ID

    public static final int MULTISCAN_MONITOR_ID

  MULTISCAN (VGA), 58fps, 44:44.

  See Also:
    Constant Field Values

### A2024_MONITOR_ID

    public static final int A2024_MONITOR_ID

  A2024, 60fps (I don't know the real value).

  See Also:
    Constant Field Values

### PROTO_MONITOR_ID

    public static final int PROTO_MONITOR_ID

  PROTO, 60fps (I don't know the real value).

  See Also:
    Constant Field Values

### EURO72_MONITOR_ID

    public static final int EURO72_MONITOR_ID

  EURO72, 69fps, 44:44.

  See Also:
    Constant Field Values

### EURO36_MONITOR_ID

    public static final int EURO36_MONITOR_ID

  EURO36, 73fps, 44:44.

  See Also:
    Constant Field Values

### SUPER72_MONITOR_ID

    public static final int SUPER72_MONITOR_ID

  SUPER72, 71fps, 34:40.

  See Also:
    Constant Field Values

### DBLNTSC_MONITOR_ID

    public static final int DBLNTSC_MONITOR_ID

  DBLNTSC, 58fps, 44:52.

  See Also:
    Constant Field Values

### DBLPAL_MONITOR_ID

    public static final int DBLPAL_MONITOR_ID

  DBLPAL, 48fps, 44:44.

  See Also:
    Constant Field Values

### MODE_MASK

    protected static final int MODE_MASK

See Also:
  Constant Field Values

### HAM_MODE

    protected static final int HAM_MODE

See Also:
  Constant Field Values

### EHB_MODE

    protected static final int EHB_MODE

See Also:
  Constant Field Values

Constructor Detail

### ANIMDecoder

    public ANIMDecoder(java.io.InputStream inputStream)

### ANIMDecoder

    public ANIMDecoder(java.net.URL location)

Method Detail

### produce

    public void produce(ANIMMovieTrack track,
                        int n,
                        boolean loadAudio)
                 throws java.io.IOException

  Decodes the stream and produces animation frames into the specified movie track. Reads the n-th ANIM chunk out of the IFF-file.

  Parameters:
    `track` - The decoded data is stored in this track.
    `n` - The index of the ANIM FORM to be read out of the IFF-File
    `loadAudio` - If this is set to false, audio data will be skipped.
  Throws:
    `java.io.IOException`

### registerChunks

    public void registerChunks(IFFParser iff,
                               boolean loadAudio)

### enterGroup

    public void enterGroup(IFFChunk chunk)

  Specified by:
    `enterGroup` in interface `IFFVisitor`

### leaveGroup

    public void leaveGroup(IFFChunk chunk)

  Specified by:
    `leaveGroup` in interface `IFFVisitor`

### visitChunk

    public void visitChunk(IFFChunk group,
                           IFFChunk chunk)
                    throws ParseException,
                           AbortException

  Specified by:
    `visitChunk` in interface `IFFVisitor`
  Throws:
    `ParseException`
    `AbortException`

### decodeCCRT

    protected void decodeCCRT(IFFChunk chunk,
                              ANIMMovieTrack track)
                       throws ParseException

  Decodes the color cycling range and timing chunk (ILBM CCRT).

       enum {
           dontCycle = 0, forward = 1, backwards = -1
       } ccrtDirection;
       typedef struct {
         WORD enum ccrtDirection direction;  // 0=don't cycle, 1=forward, -1=backwards
         UBYTE start;      // range lower
         UBYTE end;        // range upper
         ULONG  seconds;    // seconds between cycling
         ULONG  microseconds; // msecs between cycling
         WORD  pad;        // future exp - store 0 here
       } ilbmColorCyclingRangeAndTimingChunk;

  Throws:
    `ParseException`

### decodeCRNG

    protected void decodeCRNG(IFFChunk chunk,
                              ANIMMovieTrack track)
                       throws ParseException

  Decodes the color range cycling (ILBM CRNG).

       #define RNG_NORATE  36   // Dpaint uses this rate to mean non-active
        set {
        active = 1, reverse = 2
        } crngActive;

        // A CRange is store in a CRNG chunk.
        typedef struct {
        WORD  pad1;              // reserved for future use; store 0 here *
        WORD  rate;              // 60/sec=16384, 30/sec=8192, 1/sec=16384/60=273
        WORD set crngActive flags;     // bit0 set = active, bit 1 set = reverse
        UBYTE low; UBYTE high;         // lower and upper color registers selected
        } ilbmColorRegisterRangeChunk;

  Throws:
    `ParseException`

### decodeDRNG

    protected void decodeDRNG(IFFChunk chunk,
                              ANIMMovieTrack track)
                       throws ParseException

  Decodes the DPaint IV enhanced color cycle chunk (ILBM DRNG)

  The RNG_ACTIVE flag is set when the range is cyclable. A range should only have the RNG _ACTIVE if it:

  1. contains at least one color register
  2. has a defined rate
  3. has more than one color and/or color register

       ILBM DRNG DPaint IV enhanced color cycle chunk
       --------------------------------------------

       set {
           RNG_ACTIVE=1,RNG_DP_RESERVED=4
       } drngFlags;

       /* True color cell * /
       typedef struct {
           UBYTE cell;
           UBYTE r;
           UBYTE g;
           UBYTE b;
       } ilbmDRNGDColor;

       /* Color register cell * /
       typedef struct {
           UBYTE cell;
           UBYTE index;
       } ilbmDRNGDIndex;

       /* DRNG chunk. * /
       typedef struct {
           UBYTE min; /* min cell value * /
           UBYTE max; /* max cell value * /
           UWORD rate; /* color cycling rate, 16384 = 60 steps/second * /
           UWORD set drngFlags flags; /* 1=RNG_ACTIVE, 4=RNG_DP_RESERVED * /
           UBYTE ntrue; /* number of DColorCell structs to follow * /
           UBYTE ntregs; /* number of DIndexCell structs to follow * /
           ilbmDRNGDColor[ntrue] trueColorCells;
           ilbmDRNGDIndex[ntregs] colorRegisterCells;
       } ilbmDRangeChunk;

  Throws:
    `ParseException`

### decodeColorCycling

    protected void decodeColorCycling(IFFChunk[] ccrtChunks,
                                      IFFChunk[] crngChunks,
                                      IFFChunk[] drngChunks,
                                      ANIMMovieTrack track)
                               throws ParseException

  Process CRNG and DRNG chunks in the sequence of their location in the file.

  Throws:
    `ParseException`

### decodeCOPYRIGHT

    protected void decodeCOPYRIGHT(IFFChunk[] chunks,
                                   ANIMMovieTrack track)
                            throws ParseException

  Throws:
    `ParseException`

### decodeAUTH

    protected void decodeAUTH(IFFChunk[] chunks,
                              ANIMMovieTrack track)
                       throws ParseException

  Throws:
    `ParseException`

### decodeANNO

    protected void decodeANNO(IFFChunk[] chunks,
                              ANIMMovieTrack track)
                       throws ParseException

  Throws:
    `ParseException`

Overview | Package | Class | Tree | Deprecated | Index | Help
| Copyright 2012-04-26 Werner Randelshofer
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD