123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
- /**
- * 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
|