📄 rmavitypes.h
字号:
/******************************************************************** Copyright (c) 2001 Sigma Designs Inc. All rights reserved. ********************************************************************//** @file rmavitypes.h @brief long description @author Laurent Crinon @date 2002-03-25*/#ifndef __RMAVITYPES_H__#define __RMAVITYPES_H__#include "../../rmdef/rmdef.h"// macro#ifndef mmioFOURCC#define mmioFOURCC(ch0, ch1, ch2, ch3) ( (RMint32)(RMint8)ch0 | ((RMint32)(RMint8) ch1 << 8) | ((RMint32)(RMint8)ch2 << 16) | ((RMint32)(RMint8)ch3 << 24))#endif#ifndef aviTWOCC#define aviTWOCC(ch0, ch1) ((RMint32)(RMint8)(ch0) | ((RMint32)(RMint8)(ch1) << 8))#endif#ifdef RMAVI_ALTERNATEDEMUX #define SIZE_INDEX_TABLE 4096#else #define SIZE_INDEX_TABLE 4096#endif#define FILESTREAM_CACHE_SIZE 4096//Nb of audio stream supported#define RMAVI_MAX_AUDIO_STREAMS 8// avi stream header flags#define HASINDEX 0x00000010#define MUSTUSEINDEX 0x00000020#define ISINTERLEAVED 0x00000100#define TRUSTCKTYPE 0x00000800#define WASCAPTUREFILE 0x00010000#define COPYRIGHTED 0x00020000// index flags#define AVIIF_KEYFRAME 0x10//types #define nonAsciiKey 0xffffffff#define formTypeAVI mmioFOURCC('A', 'V', 'I', ' ')#define formTypeAVIX mmioFOURCC('A', 'V', 'I', 'X')#define listTypeAVIHeader mmioFOURCC('h', 'd', 'r', 'l')#define ckidAVIMainHeader mmioFOURCC('a', 'v', 'i', 'h')#define listTypeStreamHeader mmioFOURCC('s', 't', 'r', 'l')#define ckidStreamHeader mmioFOURCC('s', 't', 'r', 'h')#define ckidStreamFormat mmioFOURCC('s', 't', 'r', 'f')#define ckidStreamHandlerData mmioFOURCC('s', 't', 'r', 'd')#define ckidStreamName mmioFOURCC('s', 't', 'r', 'n')#define listTypeAVIMovie mmioFOURCC('m', 'o', 'v', 'i')#define listTypeAviRecord mmioFOURCC('r', 'e', 'c', ' ')#define listTypeINFO mmioFOURCC('I', 'N', 'F', 'O')#define ckidAVIIndex mmioFOURCC('i', 'n', 'd', 'x')#define ckidAVINewIndex mmioFOURCC('i', 'd', 'x', '1')#define formTypeList mmioFOURCC('L', 'I', 'S', 'T')#define formTypeRiff mmioFOURCC('R', 'I', 'F', 'F')#define ckidAVIPadding mmioFOURCC('J', 'U', 'N', 'K')#define ckidAVISegm mmioFOURCC('s', 'e', 'g', 'm')#define ckidMetaData mmioFOURCC('M', 'T', 'D', 'A')// Basic chunk types #define ckTypeDIBBits aviTWOCC('d', 'b')#define ckTypeDIBCompressed aviTWOCC('d', 'c')#define ckTypePALChange aviTWOCC('p', 'c')#define ckTypeWAVEBytes aviTWOCC('w', 'b')#define streamTypeVideo mmioFOURCC('v', 'i', 'd', 's')#define streamTypeAudio mmioFOURCC('a', 'u', 'd', 's')#define streamTypeMidi mmioFOURCC('m', 'i', 'd', 's')#define streamTypeText mmioFOURCC('t', 'x', 't', 's')#define DIVXFOURCC mmioFOURCC('D','I','V','X')#define divxFOURCC mmioFOURCC('d','i','v','x')#define DX50FOURCC mmioFOURCC('D','X','5','0')#define XVIDFOURCC mmioFOURCC('X','V','I','D')#define xvidFOURCC mmioFOURCC('x','v','i','d')#define XCRDFOURCC mmioFOURCC('X','C','R','D')#define RMP4FOURCC mmioFOURCC('R','M','P','4')#define div3FOURCC mmioFOURCC('d','i','v','3')#define DIV3FOURCC mmioFOURCC('D','I','V','3')#define mp43FOURCC mmioFOURCC('m','p','4','3')#define MP43FOURCC mmioFOURCC('M','P','4','3')#define WMV3FOURCC mmioFOURCC('W','M','V','3')#define wmv3FOURCC mmioFOURCC('w','m','v','3')#define MPG4FOURCC mmioFOURCC('M','P','G','4')#define mpg4FOURCC mmioFOURCC('m','p','g','4')#define PCMFormatTag 0x0001#define MPEG1FormatTag 0x0050#define MP3FormatTag 0x0055#define AC3FormatTag 0x2000#define DTSFormatTag 0x2001#define WMAFormatTag 0x161#define WMAPROFormatTag 0x162#define GSM_AMRCBRFormatTag 0x7A21#define GSM_AMRVBRFormatTag 0x7A22#define I_FRAME 0#define P_FRAME 1#define B_FRAME 2// for flags above#define RMAVI_FLAG_CHUNK_START 0x1#define RMAVI_FLAG_CHUNK_END 0x2// chunk: pointer to data// chunkLength: length of data// flags: indicates start and end of chunk (cf below)// context: user contexttypedef void (*moviCallback)(RMuint8 chunkid[4], RMuint8 *chunk, RMuint32 chunkLength, RMuint32 flags, void *context);// progress: progress valuetypedef void (*progressCallback)(RMuint32 progress);typedef struct tagStreamHeader { RMuint32 fccType; RMuint32 fccHandler; RMuint32 flags; RMuint16 priority; RMuint16 language; RMuint32 initialFrames; RMuint32 scale; RMuint32 rate; RMuint32 start; RMuint32 length; RMuint32 suggestedBufferSize; RMuint32 quality; RMuint32 sampleSize; RMuint16 frameTop; RMuint16 frameLeft; RMuint16 frameBottom; RMuint16 frameRight; } RMAviStreamHeader;typedef struct tagAudioFormat{ RMuint16 formatTag; RMuint16 nChannels; RMuint32 nSamplesPerSec; RMuint32 nAvgBytesPerSec; RMuint16 nBlockAlign; RMuint16 wBitsPerSample; RMuint16 cbSize;} RMAviAudioFormat;typedef struct tagVideoFormat{ RMuint32 size; RMuint32 width; RMuint32 height; RMuint16 planes; RMuint16 bitCount; RMuint32 compression; RMuint32 sizeImage; RMuint32 XPelsPerMeter; RMuint32 YPelsPerMeter; RMuint32 ClrUsed; RMuint32 ClrImportant; RMuint32 Colors[1]; RMuint8 *extraData; RMuint32 extraDataSize;} RMAviVideoFormat;typedef enum{ RMAVI_VIDEO_STREAM =0, RMAVI_VIDEO_DIVX3_STREAM, RMAVI_AUDIO_STREAM, RMAVI_UNKNOWN_STREAM}typeStream;typedef struct tagAviHeader{ RMuint32 microSecPerFrame; RMuint32 maxBytesPerSec; RMuint32 paddingGranularity; RMuint32 flags; RMuint32 totalFrames; RMuint32 initialFrames; RMuint32 streams; RMuint32 suggestedBufferSize; RMuint32 width; RMuint32 height; RMuint32 reserved[4];}RMAviHeader;typedef struct tagAVIINDEX{ RMuint16 id_stream; RMuint32 flags; RMuint32 offset; RMuint32 size; RMreal timeStamp;}RMAVIIndex;typedef struct tagRMAviIndexEntry{ RMuint32 offset; RMuint32 offsetInIndexTable; RMuint64 timeStamp; RMuint32 numFrame;} RMAviIndexEntry;#endif //__RMAVITYPES_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -