Windows2003-3790/enduser/netmeeting/av/codecs/dec/dech261/avi.h
2020-09-30 16:53:55 +02:00

149 lines
4.9 KiB
C

/*
* @DEC_COPYRIGHT@
*/
/*
* HISTORY
* $Log: avi.h,v $
* Revision 1.1.2.4 1996/01/15 16:26:22 Hans_Graves
* Added Wave stuff
* [1996/01/15 15:43:39 Hans_Graves]
*
* Revision 1.1.2.3 1996/01/08 16:41:23 Hans_Graves
* Renamed AVI header structures.
* [1996/01/08 15:45:16 Hans_Graves]
*
* Revision 1.1.2.2 1995/12/07 19:31:26 Hans_Graves
* Creation under SLIB
* [1995/12/07 18:29:05 Hans_Graves]
*
* $EndLog$
*/
/*****************************************************************************
** Copyright (c) Digital Equipment Corporation, 1995 **
** **
** All Rights Reserved. Unpublished rights reserved under the copyright **
** laws of the United States. **
** **
** The software contained on this media is proprietary to and embodies **
** the confidential technology of Digital Equipment Corporation. **
** Possession, use, duplication or dissemination of the software and **
** media is authorized only pursuant to a valid written license from **
** Digital Equipment Corporation. **
** **
** RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure by the U.S. **
** Government is subject to restrictions as set forth in Subparagraph **
** (c)(1)(ii) of DFARS 252.227-7013, or in FAR 52.227-19, as applicable. **
******************************************************************************/
#ifndef _AVI_H_
#define _AVI_H_
/************** AVI parsing definitions **************/
typedef unsigned short twocc_t;
typedef unsigned int fourcc_t;
#ifndef FOURCC
#define FOURCC( ch0, ch1, ch2, ch3 ) \
( (fourcc_t)(char)(ch3) | ( (fourcc_t)(char)(ch2) << 8 ) | \
( (fourcc_t)(char)(ch1) << 16 ) | ( (fourcc_t)(char)(ch0) << 24 ) )
#endif
/* Macro to make a TWOCC out of two characters */
#ifndef TWOCC
#define TWOCC(ch0, ch1) ((twocc_t)(char)(ch1)|((twocc_t)(char)(ch0)<<8))
#endif
/* form types, list types, and chunk types */
#define AVI_AVI FOURCC('A', 'V', 'I', ' ')
#define AVI_AVIHEADERTYPE FOURCC('h', 'd', 'r', 'l')
#define AVI_MAINHDR FOURCC('a', 'v', 'i', 'h')
#define AVI_STREAMHEADERTYPE FOURCC('s', 't', 'r', 'l')
#define AVI_STREAMHEADER FOURCC('s', 't', 'r', 'h')
#define AVI_STREAMFORMAT FOURCC('s', 't', 'r', 'f')
#define AVI_STREAMHANDLERDATA FOURCC('s', 't', 'r', 'd')
#define AVI_MOVIETYPE FOURCC('m', 'o', 'v', 'i')
#define AVI_RECORDTYPE FOURCC('r', 'e', 'c', ' ')
#define AVI_NEWINDEX FOURCC('i', 'd', 'x', '1')
/*
** Stream types for the <fccType> field of the stream header.
*/
#define AVI_VIDEOSTREAM FOURCC('v', 'i', 'd', 's')
#define AVI_AUDIOSTREAM FOURCC('a', 'u', 'd', 's')
/* Basic chunk types */
#define AVI_DIBbits TWOCC('d', 'b')
#define AVI_DIBcompressed TWOCC('d', 'c')
#define AVI_PALchange TWOCC('p', 'c')
#define AVI_WAVEbytes TWOCC('w', 'b')
#define AVI_Indeo TWOCC('i', 'v')
/* Chunk id to use for extra chunks for padding. */
#define AVI_PADDING FOURCC('J', 'U', 'N', 'K')
typedef struct
{
dword dwMicroSecPerFrame; /* frame display rate */
dword dwMaxBytesPerSec; /* max. transfer rate */
dword dwPaddingGranularity; /* pad to multiples of this */
/* size; normally 2K. */
dword dwFlags; /* the ever-present flags */
dword dwTotalFrames; /* # frames in file */
dword dwInitialFrames;
dword dwStreams;
dword dwSuggestedBufferSize;
dword dwWidth;
dword dwHeight;
dword dwReserved[4];
} AVI_MainHeader;
typedef struct {
short left,top,right,bottom;
} DUMMYRECT;
typedef struct {
fourcc_t fccType;
fourcc_t fccHandler;
dword dwFlags; /* Contains AVITF_* flags */
dword dwPriority;
dword dwInitialFrames;
dword dwScale;
dword dwRate; /* dwRate / dwScale == samples/second */
dword dwStart;
dword dwLength; /* In units above... */
dword dwSuggestedBufferSize;
dword dwQuality;
dword dwSampleSize;
DUMMYRECT rcFrame;
} AVI_StreamHeader;
typedef struct
{
dword ckid;
dword dwFlags;
dword dwChunkOffset; /* Position of chunk */
dword dwChunkLength; /* Length of chunk */
} AVI_INDEXENTRY;
#define RIFF_WAVE FOURCC('W', 'A', 'V', 'E')
#define RIFF_FORMAT FOURCC('f', 'm', 't', ' ')
#define RIFF_DATA FOURCC('d', 'a', 't', 'a')
typedef struct
{
word wFormatTag;
word nChannels;
dword nSamplesPerSec;
dword nAvgBytesPerSec;
word nBlockAlign;
word wBitsPerSample;
} WAVE_format;
#endif _AVI_H_