📄 avidef.h
字号:
/*++
Copyright (c) 2001 Sunplus Technology Co., Ltd.
Module Name:
avidef.h
Abstract:
Header file related to AVI header
Environment:
Keil C51 Compiler
Revision History:
08/28/2001 Chi-Yeh Tsai created
--*/
//------------------------------------------------------------------------------
//Type and Constant Definition
//------------------------------------------------------------------------------
//structure Chunk
#define K_CHUNK_SIZE ((ULONG)0x0000000c)
typedef struct _CHUNK
{
ULONG chunkId;
ULONG chunkSize;
ULONG chunkData;
} CHUNK, *PCHUNK;
//structure MainAVIHeader
#define K_MAIN_AVI_HEADER_SIZE ((ULONG)0x00000038)
typedef struct _MAIN_AVI_HEADER
{
ULONG dwMicroSecPerFrame;
ULONG dwMaxBytesPerSec;
ULONG dwReserved1;
ULONG dwFlags;
ULONG dwTotalFrames;
ULONG dwInitialFrames;
ULONG dwStreams;
ULONG dwSuggestedBufferSize;
ULONG dwWidth;
ULONG dwHeight;
ULONG dwScale;
ULONG dwRate;
ULONG dwStart;
ULONG dwLength;
} MAIN_AVI_HEADER, *PMAIN_AVI_HEADER;
#define AVIF_HASINDEX ((ULONG)0x00000010)
#define AVIF_MUSTUSEINDEX ((ULONG)0x00000020)
#define AVIF_ISINTERLEAVED ((ULONG)0x00000100)
#define AVIF_WASCAPTUREFILE ((ULONG)0x00010000)
#define AVIF_COPYRIGHTED ((ULONG)0x00020000)
#define AVIF_KNOWN_FLAGS ((ULONG)0x00030130)
//structure AVIStreamHeader
#define K_AVI_STREAM_HEADER_SIZE ((ULONG)0x00000038)
typedef struct _AVI_STREAM_HEADER
{
ULONG fccType;
ULONG fccHandler;
ULONG dwFlags;
ULONG dwReserved1;
ULONG dwInitialFrames;
ULONG dwScale;
ULONG dwRate;
ULONG dwStart;
ULONG dwLength;
ULONG dwSuggestedBufferSize;
ULONG dwQuality;
ULONG dwSampleSize;
ULONG dwReserved2;
ULONG dwReserved3;
} AVI_STREAM_HEADER, *PAVI_STREAM_HEADER;
#define AVISF_DISABLED ((ULONG)0x00000001)
#define AVISF_VIDEO_PALCHANGES ((ULONG)0x00010000)
#define AVISF_KNOWN_FLAGS ((ULONG)0x00010001)
//structure BITMAPINFOHEADER
#define K_BITMAPINFOHEADER_SIZE ((ULONG)0x00000028)
typedef struct _BITMAPINFOHEADER
{
ULONG biSize;
LONG biWidth;
LONG biHeight;
USHORT biPlanes;
USHORT biBitCount;
ULONG biCompression;
ULONG biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
ULONG biClrUsed;
ULONG biClrImportant;
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;
#if (AUDIO_OPTION == 1)
//structure WAVEFORMAT
#define K_WAVEFORMAT_SIZE ((ULONG)0x00000010)
typedef struct _WAVEFORMAT
{
USHORT wFormatTag;
USHORT nChannels;
ULONG nSamplesPerSec;
ULONG nAvgBytesPerSec;
USHORT nBlockAlign;
USHORT wBitsPerSample;
} WAVEFORMAT, *PWAVEFORMAT;
#endif
//structure AVIIndexEntry
#define K_AVI_INDEX_ENTRY_SIZE ((ULONG)0x00000010)
typedef struct _AVI_INDEX_ENTRY
{
ULONG ckid;
ULONG dwFlags;
ULONG dwChunkOffset;
ULONG dwChunkLength;
} AVI_INDEX_ENTRY, *PAVI_INDEX_ENTRY;
#define AVIIF_LIST ((ULONG)0x00000001)
#define AVIIF_KEYFRAME ((ULONG)0x00000010)
#define AVIIF_FIRSTPART ((ULONG)0x00000020)
#define AVIIF_LASTPART ((ULONG)0x00000040)
#define AVIIF_MIDPART (AVIIF_LASTPART | AVIIF_FIRSTPART)
#define AVIIF_NOTIME ((ULONG)0x00000100)
#define AVIIF_COMPUSE ((ULONG)0x0fff0000)
#define AVIIF_KNOWN_FLAGS ((ULONG)0x0fff0171)
//size of chunk
#define K_VIDEO_STREAM_HEADER_SIZE (0x04 + \
0x08 + K_AVI_STREAM_HEADER_SIZE + \
0x08 + K_BITMAPINFOHEADER_SIZE)
// WWWW
#if (SIMULATE)
#define K_AUDIO_STREAM_HEADER_SIZE (0x04 + 0x08 + K_AVI_STREAM_HEADER_SIZE + 0x08 + K_WAVEFORMAT_SIZE)
#if (AUDIO_OPTION == 1)
#define K_MAIN_HEADER_SIZE (0x04 + 0x08 + K_MAIN_AVI_HEADER_SIZE + 0x08 + K_VIDEO_STREAM_HEADER_SIZE + 0x08 + K_AUDIO_STREAM_HEADER_SIZE)
#else
#define K_MAIN_HEADER_SIZE (0x04 + 0x08 + K_MAIN_AVI_HEADER_SIZE + 0x08 + K_VIDEO_STREAM_HEADER_SIZE)
#endif
#else
#if (AUDIO_OPTION == 1)
#define K_AUDIO_STREAM_HEADER_SIZE (0x04 + \
0x08 + K_AVI_STREAM_HEADER_SIZE + \
0x08 + K_WAVEFORMAT_SIZE)
#define K_MAIN_HEADER_SIZE (0x04 + \
0x08 + K_MAIN_AVI_HEADER_SIZE + \
0x08 + K_VIDEO_STREAM_HEADER_SIZE + \
0x08 + K_AUDIO_STREAM_HEADER_SIZE)
#else
#define K_MAIN_HEADER_SIZE (0x04 + \
0x08 + K_MAIN_AVI_HEADER_SIZE + \
0x08 + K_VIDEO_STREAM_HEADER_SIZE)
#endif
#endif
#define K_HEADER_JUNK_SIZE ((ULONG) 0x200 - 0x0c - 0x08 - \
K_MAIN_HEADER_SIZE - 0x08 - 0x0c)
//fourCC of AVI
#define K_RiffId 0x52494646 //"RIFF"
#define K_AviData 0x41564920 //"AVI "
#define K_ListId 0x4c495354 //"LIST"
#define K_HdrlData 0x6864726c //"hdrl"
#define K_StrlData 0x7374726c //"strl"
#define K_AvihId 0x61766968 //"avih"
#define K_StrhId 0x73747268 //"strh"
#define K_StrfId 0x73747266 //"strf"
#define K_VidsId 0x76696473 //"vids"
#define K_MjpgId 0x4d4a5047 //"MJPG"
#if (AUDIO_OPTION == 1)
#define K_AudsId 0x61756473 //"auds"
#endif
#define K_MoviData 0x6d6f7669 //"movi"
#define K_00dcId 0x30306463 //"00dc"
#if (AUDIO_OPTION == 1)
#define K_01wbId 0x30317762 //"01wb"
#endif
#define K_JunkId 0x4a554e4b //"JUNK"
#define K_Idx1Id 0x69647831 //"idx1"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -