⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avidef.h

📁 台湾凌阳方案300万数码相机源代码
💻 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 + -