| /** | |
| * This file is part of the mingw-w64 runtime package. | |
| * No warranty is given; refer to the file DISCLAIMER within this package. | |
| */ | |
| #include <winapifamily.h> | |
| #ifndef AVIRIFF_H | |
| #define AVIRIFF_H | |
| #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) | |
| #ifndef NUMELMS | |
| #define NUMELMS (aa) (sizeof (aa) / sizeof ((aa)[0])) | |
| #endif | |
| #define FCC(ch4) ((((DWORD)(ch4) & 0xff) << 24) | (((DWORD)(ch4) & 0xff00) << 8) | (((DWORD)(ch4) & 0xff0000) >> 8) | (((DWORD)(ch4) & 0xff000000) >> 24)) | |
| #include <pshpack2.h> | |
| typedef struct _riffchunk { | |
| FOURCC fcc; | |
| DWORD cb; | |
| } RIFFCHUNK,*LPRIFFCHUNK; | |
| typedef struct _rifflist { | |
| FOURCC fcc; | |
| DWORD cb; | |
| FOURCC fccListType; | |
| } RIFFLIST,*LPRIFFLIST; | |
| #define RIFFROUND(cb) ((cb) + ((cb) & 1)) | |
| #define RIFFNEXT(pChunk) (LPRIFFCHUNK) ((LPBYTE) (pChunk) + sizeof (RIFFCHUNK) + RIFFROUND (((LPRIFFCHUNK)pChunk)->cb)) | |
| #define ckidMAINAVIHEADER FCC('avih') | |
| #define ckidAVIEXTHEADER FCC('dmlh') | |
| #define ckidAVIOLDINDEX FCC('idx1') | |
| #define ckidAVISUPERINDEX FCC('indx') | |
| #define ckidODML FCC('odml') | |
| #ifndef ckidSTREAMFORMAT | |
| #define ckidSTREAMFORMAT FCC('strf') | |
| #endif | |
| #ifndef ckidSTREAMHEADER | |
| #define ckidSTREAMHEADER FCC('strh') | |
| #endif | |
| #define ckidSTREAMLIST FCC('strl') | |
| #ifndef streamtypeVIDEO | |
| #define streamtypeAUDIO FCC('auds') | |
| #define streamtypeMIDI FCC('mids') | |
| #define streamtypeTEXT FCC('txts') | |
| #define streamtypeVIDEO FCC('vids') | |
| #endif | |
| #define AVIF_HASINDEX 0x00000010 | |
| #define AVIF_MUSTUSEINDEX 0x00000020 | |
| #define AVIF_ISINTERLEAVED 0x00000100 | |
| #define AVIF_TRUSTCKTYPE 0x00000800 | |
| #define AVIF_WASCAPTUREFILE 0x00010000 | |
| #define AVIF_COPYRIGHTED 0x00020000 | |
| #ifndef AVIIF_LIST | |
| #define AVIIF_LIST 0x1 | |
| #define AVIIF_KEYFRAME 0x10 | |
| #endif | |
| #define AVIIF_NO_TIME 0x100 | |
| #define AVIIF_COMPRESSOR 0xfff0000 | |
| #define AVISF_DISABLED 0x00000001 | |
| #define AVISF_VIDEO_PALCHANGES 0x00010000 | |
| #define TIMECODE_RATE_30DROP 0 | |
| #define TIMECODE_SMPTE_BINARY_GROUP 0x7 | |
| #define TIMECODE_SMPTE_COLOR_FRAME 0x8 | |
| #define AVI_INDEX_OF_INDEXES 0x0 | |
| #define AVI_INDEX_OF_CHUNKS 0x1 | |
| #define AVI_INDEX_OF_TIMED_CHUNKS 0x2 | |
| #define AVI_INDEX_OF_SUB_2FIELD 0x3 | |
| #define AVI_INDEX_IS_DATA 0x80 | |
| #define AVI_INDEX_SUB_DEFAULT 0x0 | |
| #define AVI_INDEX_SUB_2FIELD 0x1 | |
| #define STDINDEXSIZE 0x4000 | |
| #define NUMINDEX(wLongsPerEntry) ((STDINDEXSIZE - 32) / 4 / (wLongsPerEntry)) | |
| #define NUMINDEXFILL(wLongsPerEntry) ((STDINDEXSIZE / 4) - NUMINDEX (wLongsPerEntry)) | |
| #define Valid_SUPERINDEX(pi) (*(DWORD *) (&((pi)->wLongsPerEntry)) == 4) | |
| typedef struct _avimainheader { | |
| FOURCC fcc; | |
| DWORD cb; | |
| DWORD dwMicroSecPerFrame; | |
| DWORD dwMaxBytesPerSec; | |
| DWORD dwPaddingGranularity; | |
| DWORD dwFlags; | |
| DWORD dwTotalFrames; | |
| DWORD dwInitialFrames; | |
| DWORD dwStreams; | |
| DWORD dwSuggestedBufferSize; | |
| DWORD dwWidth; | |
| DWORD dwHeight; | |
| DWORD dwReserved[4]; | |
| } AVIMAINHEADER; | |
| typedef struct _aviextheader { | |
| FOURCC fcc; | |
| DWORD cb; | |
| DWORD dwGrandFrames; | |
| DWORD dwFuture[61]; | |
| } AVIEXTHEADER; | |
| typedef struct _avistreamheader { | |
| FOURCC fcc; | |
| DWORD cb; | |
| FOURCC fccType; | |
| FOURCC fccHandler; | |
| DWORD dwFlags; | |
| WORD wPriority; | |
| WORD wLanguage; | |
| DWORD dwInitialFrames; | |
| DWORD dwScale; | |
| DWORD dwRate; | |
| DWORD dwStart; | |
| DWORD dwLength; | |
| DWORD dwSuggestedBufferSize; | |
| DWORD dwQuality; | |
| DWORD dwSampleSize; | |
| struct { | |
| short int left; | |
| short int top; | |
| short int right; | |
| short int bottom; | |
| } rcFrame; | |
| } AVISTREAMHEADER; | |
| typedef struct _avioldindex { | |
| FOURCC fcc; | |
| DWORD cb; | |
| struct _avioldindex_entry { | |
| DWORD dwChunkId; | |
| DWORD dwFlags; | |
| DWORD dwOffset; | |
| DWORD dwSize; | |
| } aIndex[]; | |
| } AVIOLDINDEX; | |
| #ifndef TIMECODE_DEFINED | |
| #define TIMECODE_DEFINED | |
| typedef union _timecode { | |
| __C89_NAMELESS struct { | |
| WORD wFrameRate; | |
| WORD wFrameFract; | |
| LONG cFrames; | |
| }; | |
| DWORDLONG qw; | |
| } TIMECODE; | |
| #endif | |
| typedef struct _timecodedata { | |
| TIMECODE time; | |
| DWORD dwSMPTEflags; | |
| DWORD dwUser; | |
| } TIMECODEDATA; | |
| typedef struct _avimetaindex { | |
| FOURCC fcc; | |
| UINT cb; | |
| WORD wLongsPerEntry; | |
| BYTE bIndexSubType; | |
| BYTE bIndexType; | |
| DWORD nEntriesInUse; | |
| DWORD dwChunkId; | |
| DWORD dwReserved[3]; | |
| DWORD adwIndex[]; | |
| } AVIMETAINDEX; | |
| typedef struct _avisuperindex { | |
| FOURCC fcc; | |
| UINT cb; | |
| WORD wLongsPerEntry; | |
| BYTE bIndexSubType; | |
| BYTE bIndexType; | |
| DWORD nEntriesInUse; | |
| DWORD dwChunkId; | |
| DWORD dwReserved[3]; | |
| struct _avisuperindex_entry { | |
| DWORDLONG qwOffset; | |
| DWORD dwSize; | |
| DWORD dwDuration; | |
| } aIndex[NUMINDEX (4)]; | |
| } AVISUPERINDEX; | |
| typedef struct _avistdindex_entry { | |
| DWORD dwOffset; | |
| DWORD dwSize; | |
| } AVISTDINDEX_ENTRY; | |
| #define AVISTDINDEX_DELTAFRAME (0x80000000) | |
| #define AVISTDINDEX_SIZEMASK (~0x80000000) | |
| typedef struct _avistdindex { | |
| FOURCC fcc; | |
| UINT cb; | |
| WORD wLongsPerEntry; | |
| BYTE bIndexSubType; | |
| BYTE bIndexType; | |
| DWORD nEntriesInUse; | |
| DWORD dwChunkId; | |
| DWORDLONG qwBaseOffset; | |
| DWORD dwReserved_3; | |
| AVISTDINDEX_ENTRY aIndex[NUMINDEX (2)]; | |
| } AVISTDINDEX; | |
| typedef struct _avitimedindex_entry { | |
| DWORD dwOffset; | |
| DWORD dwSize; | |
| DWORD dwDuration; | |
| } AVITIMEDINDEX_ENTRY; | |
| typedef struct _avitimedindex { | |
| FOURCC fcc; | |
| UINT cb; | |
| WORD wLongsPerEntry; | |
| BYTE bIndexSubType; | |
| BYTE bIndexType; | |
| DWORD nEntriesInUse; | |
| DWORD dwChunkId; | |
| DWORDLONG qwBaseOffset; | |
| DWORD dwReserved_3; | |
| AVITIMEDINDEX_ENTRY aIndex[NUMINDEX (3)]; | |
| DWORD adwTrailingFill[NUMINDEXFILL (3)]; | |
| } AVITIMEDINDEX; | |
| typedef struct _avitimecodeindex { | |
| FOURCC fcc; | |
| UINT cb; | |
| WORD wLongsPerEntry; | |
| BYTE bIndexSubType; | |
| BYTE bIndexType; | |
| DWORD nEntriesInUse; | |
| DWORD dwChunkId; | |
| DWORD dwReserved[3]; | |
| TIMECODEDATA aIndex[NUMINDEX (sizeof (TIMECODEDATA)/sizeof (LONG))]; | |
| } AVITIMECODEINDEX; | |
| typedef struct _avitcdlindex_entry { | |
| DWORD dwTick; | |
| TIMECODE time; | |
| DWORD dwSMPTEflags; | |
| DWORD dwUser; | |
| TCHAR szReelId[12]; | |
| } AVITCDLINDEX_ENTRY; | |
| typedef struct _avitcdlindex { | |
| FOURCC fcc; | |
| UINT cb; | |
| WORD wLongsPerEntry; | |
| BYTE bIndexSubType; | |
| BYTE bIndexType; | |
| DWORD nEntriesInUse; | |
| DWORD dwChunkId; | |
| DWORD dwReserved[3]; | |
| AVITCDLINDEX_ENTRY aIndex[NUMINDEX (7)]; | |
| DWORD adwTrailingFill[NUMINDEXFILL (7)]; | |
| } AVITCDLINDEX; | |
| typedef struct _avifieldindex_chunk { | |
| FOURCC fcc; | |
| DWORD cb; | |
| WORD wLongsPerEntry; | |
| BYTE bIndexSubType; | |
| BYTE bIndexType; | |
| DWORD nEntriesInUse; | |
| DWORD dwChunkId; | |
| DWORDLONG qwBaseOffset; | |
| DWORD dwReserved3; | |
| struct _avifieldindex_entry { | |
| DWORD dwOffset; | |
| DWORD dwSize; | |
| DWORD dwOffsetField2; | |
| } aIndex[]; | |
| } AVIFIELDINDEX,*PAVIFIELDINDEX; | |
| #include <poppack.h> | |
| #endif | |
| #endif |