2 * Copyright (C) 2003 Robert Shearman
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 typedef struct _riffchunk
23 } RIFFCHUNK, * LPRIFFCHUNK;
25 typedef struct _rifflist
30 } RIFFLIST, * LPRIFFLIST;
32 #define RIFFROUND(cb) ((cb) + ((cb)&1))
33 #define RIFFNEXT(pChunk) (LPRIFFCHUNK)((LPBYTE)(pChunk)+sizeof(RIFFCHUNK)+RIFFROUND(((LPRIFFCHUNK)pChunk)->cb))
35 /* flags for dwFlags member of AVIMAINHEADER */
36 #define AVIF_HASINDEX 0x00000010
37 #define AVIF_MUSTUSEINDEX 0x00000020
38 #define AVIF_ISINTERLEAVED 0x00000100
39 #define AVIF_TRUSTCKTYPE 0x00000800
40 #define AVIF_WASCAPTUREFILE 0x00010000
41 #define AVIF_COPYRIGHTED 0x00020000
43 typedef struct _avimainheader
47 DWORD dwMicroSecPerFrame;
48 DWORD dwMaxBytesPerSec;
49 DWORD dwPaddingGranularity;
52 DWORD dwInitialFrames;
54 DWORD dwSuggestedBufferSize;
60 typedef struct _aviextheader
69 /* flags for dwFlags member of AVISTREAMHEADER */
70 #define AVISF_DISABLED 0x00000001
71 #define AVISF_VIDEO_PALCHANGES 0x00010000
73 typedef struct _avistreamheader
82 DWORD dwInitialFrames;
87 DWORD dwSuggestedBufferSize;
99 /* flags for dwFlags member of _avioldindex_entry */
100 #define AVIIF_LIST 0x00000001
101 #define AVIIF_KEYFRAME 0x00000010
102 #define AVIIF_NO_TIME 0x00000100
103 #define AVIIF_COMPRESSOR 0x0FFF0000
105 typedef struct _avioldindex
109 struct _avioldindex_entry
118 typedef union _timecode
129 #define TIMECODE_RATE_30DROP 0
131 /* flags for dwSMPTEflags member of TIMECODEDATA */
132 #define TIMECODE_SMPTE_BINARY_GROUP 0x07
133 #define TIMECODE_SMPTE_COLOR_FRAME 0x08
135 typedef struct _timecodedata
142 #define AVI_INDEX_OF_INDEXES 0x00
143 #define AVI_INDEX_OF_CHUNKS 0x01
144 #define AVI_INDEX_OF_TIMED_CHUNKS 0x02
145 #define AVI_INDEX_OF_SUB_2FIELD 0x03
146 #define AVI_INDEX_IS_DATA 0x80
148 #define AVI_INDEX_SUB_DEFAULT 0x00
149 #define AVI_INDEX_SUB_2FIELD 0x01
151 typedef struct _avimetaindex
164 /* FIXME: index structures missing */