ftp.nice.ch/pub/next/graphics/movie/VideoStream.1.0.NIHS.bs.tar.gz#/VideoStreamV1.0/Source/aviDecodeSrc/xanim_avi.h

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

/*
 * xanim.h
 *
 * Copyright (C) 1990,1991,1992,1993 by Mark Podlipec. 
 * All rights reserved.
 *
 * This software may be freely copied, modified and redistributed
 * without fee 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.
 *
 */

/** WAR: Wildly hacked to stream AVI RGB data to stdout, 7/2/94 **/


#include "xanim.h"

#define TRUE 1
#define FALSE 0

#ifndef MIN
#define MIN(x,y)    ( ((x)>(y))?(y):(x) )
#endif

#ifndef MAX
#define MAX(x,y)    ( ((x)>(y))?(x):(y) )
#endif

#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_00dc 0x30306463
#define RIFF_01wb 0x30317762
#define RIFF_idx1 0x69647831
#define RIFF_CRAM 0x4352414D

#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  0x524C4432
#define RIFF_msvc 0x6D737663

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;
	XA_ACTION *act;
	struct AVI_FRAME_STRUCT *next;
} AVI_FRAME;


/* FUNCTIONS IN AVI.C */
LONG Is_AVI_File();
void AVI_Read_File();
void AVI_Print_ID();
AVI_FRAME *AVI_Add_Frame();
void AVI_Free_Frame_List();
ULONG AVI_Decode_CRAM();
void RIFF_Read_AVIH();
void RIFF_Read_STRH();
void RIFF_Read_VIDS();

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