ftp.nice.ch/pub/next/graphics/movie/Movie.3.0.NIHS.bs.tar.gz#/Movie3.0/Source/xanim/xanim_avi.h

This is xanim_avi.h in view mode; [Download] [Up]

/*
 * xanim_avi.h
 *
 * Copyright (C) 1993,1994 by Mark Podlipec. 
 * All rights reserved.
 *
 * This software may be freely copied, modified and redistributed without
 * fee for non-commerical purposes provided that this copyright notice is
 * preserved intact on all copies and modified copies.
 * 
 * There is no warranty or other guarantee of fitness of this software.
 * It is provided solely "as is". The author(s) disclaim(s) all
 * responsibility and liability with respect to this software's usage
 * or its effect upon hardware or computer systems.
 *
 */

/* The following copyright applies to all Ultimotion segments of the code:
 *
 * "Copyright International Business Machines Corporation 1994, All rights
 *  reserved. This product uses Ultimotion(tm) IBM video technology."
 *
 */


#include "xanim.h"

#define RIFF_RIFF 0x52494646
#define RIFF_LIST 0x4C495354
#define RIFF_avih 0x61766968
#define RIFF_strd 0x73747264
#define RIFF_strh 0x73747268
#define RIFF_strf 0x73747266
#define RIFF_vedt 0x76656474
#define RIFF_JUNK 0x4A554E4B
#define RIFF_00pc 0x30307063
#define RIFF_00dc 0x30306463
#define RIFF_00dx 0x30306478
#define RIFF_00db 0x30306462
#define RIFF_00xx 0x30307878
#define RIFF_00iv 0x30306976
#define RIFF_00vc 0x30305643
#define RIFF_01wb 0x30317762
#define RIFF_idx1 0x69647831
/*********VIDEO CODECS**************/
#define RIFF_CRAM 0x4352414D
#define RIFF_rgb  0x00000000
#define RIFF_RGB  0x52474220
#define RIFF_rle8 0x01000000
#define RIFF_RLE8 0x524c4538
#define RIFF_rle4 0x02000000
#define RIFF_RLE4 0x524c4534
#define RIFF_none 0x0000FFFF
#define RIFF_NONE 0x4e4f4e45
#define RIFF_pack 0x0100FFFF
#define RIFF_PACK 0x5041434b
#define RIFF_tran 0x0200FFFF
#define RIFF_TRAN 0x5452414e
#define RIFF_ccc  0x0300FFFF
#define RIFF_CCC  0x43434320
#define RIFF_jpeg 0x0400FFFF
#define RIFF_JPEG 0x4A504547
#define RIFF_rt21 0x72743231
#define RIFF_RT21 0x52543231
#define RIFF_IV31 0x49563331
#define RIFF_CVID 0x63766964
#define RIFF_ULTI 0x554c5449

#define RIFF_00AM 0x3030414d
#define RIFF_AVI  0x41564920
#define RIFF_hdrl 0x6864726C
#define RIFF_strl 0x7374726C
#define RIFF_DISP 0x44495350
#define RIFF_ISBJ 0x4953424a

/* fcc Types */
#define RIFF_vids 0x76696473
#define RIFF_auds 0x61756473
 
/* fcc handlers */
#define RIFF_RLE  0x524c4520
#define RIFF_msvc 0x6D737663
#define RIFF_MSVC 0x4d535643

typedef struct
{
  ULONG ckid;
  ULONG flags;
  ULONG chunk_offset;   /* position of chunk rel to movi list include 8b hdr*/
  ULONG chunk_size;     /* length of chunk excluding 8 bytes for RIFF hdr */
} AVI_INDEX_ENTRY;

/* Flags for AVI_INDEX_ENTRY */
#define AVIIF_LIST          0x00000001L
#define AVIIF_TWOCC         0x00000002L
        /* keyframe doesn't need previous info to be decompressed */
#define AVIIF_KEYFRAME      0x00000010L
        /* this chunk needs the frames following it to be used */
#define AVIIF_FIRSTPART     0x00000020L
        /* this chunk needs the frames before it to be used */
#define AVIIF_LASTPART      0x00000040L
#define AVIIF_MIDPART       (AVIIF_LASTPART|AVIIF_FIRSTPART)
        /* this chunk doesn't affect timing ie palette change */
#define AVIIF_NOTIME        0x00000100L
#define AVIIF_COMPUSE       0x0FFF0000L
 
typedef struct
{
  ULONG us_frame;       /* MicroSecPerFrame - timing between frames */
  ULONG max_bps;        /* MaxBytesPerSec - approx bps system must handle */
  ULONG pad_gran;       /* */
  ULONG flags;          /* Flags */
  ULONG tot_frames;     /* TotalFrames */
  ULONG init_frames;    /* InitialFrames - initial frame before interleaving */
  ULONG streams;        /* Streams */
  ULONG sug_bsize;      /* SuggestedBufferSize */
  ULONG width;          /* Width */
  ULONG height;         /* Height */
  ULONG scale;          /* Scale */
  ULONG rate;           /* Rate */
  ULONG start;          /* Start */
  ULONG length;         /* Length */
} AVI_HDR;
 
/* AVI_HDR Flags */
        /* had idx1 chunk */
#define AVIF_HASINDEX           0x00000010
        /* must use idx1 chunk to determine order */
#define AVIF_MUSTUSEINDEX       0x00000020
        /* AVI file is interleaved */
#define AVIF_ISINTERLEAVED      0x00000100
        /* specially allocated used for capturing real time video */
#define AVIF_WASCAPTUREFILE     0x00010000
        /* contains copyrighted data */
#define AVIF_COPYRIGHTED        0x00020000
 
 
typedef struct
{
  ULONG fcc_type;       /* fccType  {vids} */
  ULONG fcc_handler;    /* fccHandler {msvc,RLE} */
  ULONG flags;          /* Flags */
  ULONG priority;       /* Priority*/
  ULONG init_frames;    /* InitialFrames */
  ULONG scale;          /* Scale */
  ULONG rate;           /* Rate */
  ULONG start;          /* Start */
  ULONG length;         /* Length In units above...*/
  ULONG sug_bsize;      /* SuggestedBufferSize */
  ULONG quality;        /* Quality */
  ULONG samp_size;      /* SampleSize */
} AVI_STREAM_HDR;
/* AVI_STREAM_HDR Flags */
#define AVISF_DISABLED                  0x00000001
#define AVISF_VIDEO_PALCHANGES          0x00010000
 
 
typedef struct /* BitMapInfoHeader */
{
  ULONG size;           /* Size */
  ULONG width;          /* Width */
  ULONG height;         /* Height */
  ULONG planes;         /* short Planes */
  ULONG bit_cnt;        /* short BitCount */
  ULONG compression;    /* Compression {1} */
  ULONG image_size;     /* SizeImage */
  ULONG xpels_meter;    /* XPelsPerMeter */
  ULONG ypels_meter;    /* XPelsPerMeter */
  ULONG num_colors;     /* ClrUsed */
  ULONG imp_colors;     /* ClrImportant */
} VIDS_HDR;
 

typedef struct AVI_FRAME_STRUCT
{
  ULONG time;
  ULONG timelo;
  XA_ACTION *act;
  struct AVI_FRAME_STRUCT *next;
} AVI_FRAME;

typedef struct /* BitMapInfoHeader */
{
  ULONG format;         /* S format */
  ULONG channels;       /* S channels */
  ULONG rate;           /* L rate */
  ULONG av_bps;         /* L average bytes/sec */
  ULONG align;          /* S alignment */
  ULONG size;           /* S size */
  ULONG style;          /* - SIGN2 or unsigned */
} AUDS_HDR;

/**** from public Microsoft RIFF docs ******/
#define WAVE_FORMAT_UNKNOWN             (0x0000)
#define WAVE_FORMAT_PCM                 (0x0001)
#define WAVE_FORMAT_ADPCM               (0x0002)
#define WAVE_FORMAT_ALAW                (0x0006)
#define WAVE_FORMAT_MULAW               (0x0007)
#define WAVE_FORMAT_OKI_ADPCM           (0x0010)
#define WAVE_FORMAT_DIGISTD             (0x0015)
#define WAVE_FORMAT_DIGIFIX             (0x0016)
#define IBM_FORMAT_MULAW                (0x0101)
#define IBM_FORMAT_ALAW                 (0x0102)
#define IBM_FORMAT_ADPCM                (0x0103)
/*********************/

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.