| /* | |
| * Copyright (C) 2003 Robert Shearman | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | |
| 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)) | |
| /* flags for dwFlags member of AVIMAINHEADER */ | |
| #define AVIF_HASINDEX 0x00000010 | |
| #define AVIF_MUSTUSEINDEX 0x00000020 | |
| #define AVIF_ISINTERLEAVED 0x00000100 | |
| #define AVIF_TRUSTCKTYPE 0x00000800 | |
| #define AVIF_WASCAPTUREFILE 0x00010000 | |
| #define AVIF_COPYRIGHTED 0x00020000 | |
| 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; | |
| /* flags for dwFlags member of AVISTREAMHEADER */ | |
| #define AVISF_DISABLED 0x00000001 | |
| #define AVISF_VIDEO_PALCHANGES 0x00010000 | |
| 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; | |
| /* flags for dwFlags member of _avioldindex_entry */ | |
| #define AVIIF_LIST 0x00000001 | |
| #define AVIIF_KEYFRAME 0x00000010 | |
| #define AVIIF_NO_TIME 0x00000100 | |
| #define AVIIF_COMPRESSOR 0x0FFF0000 | |
| typedef struct _avioldindex | |
| { | |
| FOURCC fcc; | |
| DWORD cb; | |
| struct _avioldindex_entry | |
| { | |
| DWORD dwChunkId; | |
| DWORD dwFlags; | |
| DWORD dwOffset; | |
| DWORD dwSize; | |
| } aIndex[0]; | |
| } AVIOLDINDEX; | |
| typedef union _timecode | |
| { | |
| struct | |
| { | |
| WORD wFrameRate; | |
| WORD wFrameFract; | |
| LONG cFrames; | |
| } DUMMYSTRUCTNAME; | |
| DWORDLONG qw; | |
| } TIMECODE; | |
| #define TIMECODE_RATE_30DROP 0 | |
| /* flags for dwSMPTEflags member of TIMECODEDATA */ | |
| #define TIMECODE_SMPTE_BINARY_GROUP 0x07 | |
| #define TIMECODE_SMPTE_COLOR_FRAME 0x08 | |
| typedef struct _timecodedata | |
| { | |
| TIMECODE time; | |
| DWORD dwSMPTEflags; | |
| DWORD dwUser; | |
| } TIMECODEDATA; | |
| #define AVI_INDEX_OF_INDEXES 0x00 | |
| #define AVI_INDEX_OF_CHUNKS 0x01 | |
| #define AVI_INDEX_OF_TIMED_CHUNKS 0x02 | |
| #define AVI_INDEX_OF_SUB_2FIELD 0x03 | |
| #define AVI_INDEX_IS_DATA 0x80 | |
| #define AVI_INDEX_SUB_DEFAULT 0x00 | |
| #define AVI_INDEX_SUB_2FIELD 0x01 | |
| typedef struct _avimetaindex | |
| { | |
| FOURCC fcc; | |
| UINT cb; | |
| WORD wLongsPerEntry; | |
| BYTE bIndexSubType; | |
| BYTE bIndexType; | |
| DWORD nEntriesInUse; | |
| DWORD dwChunkId; | |
| DWORD dwReserved[3]; | |
| DWORD adwIndex[0]; | |
| } AVIMETAINDEX; | |
| /* FIXME: index structures missing */ |