Release 20040914.
[wine/multimedia.git] / include / aviriff.h
blobe053feafb4e0806ec4212a66d752d6084c0f4b6d
1 /*
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 typedef struct _riffchunk
21 FOURCC fcc;
22 DWORD cb;
23 } RIFFCHUNK, * LPRIFFCHUNK;
25 typedef struct _rifflist
27 FOURCC fcc;
28 DWORD cb;
29 FOURCC fccListType;
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
45 FOURCC fcc;
46 DWORD cb;
47 DWORD dwMicroSecPerFrame;
48 DWORD dwMaxBytesPerSec;
49 DWORD dwPaddingGranularity;
50 DWORD dwFlags;
51 DWORD dwTotalFrames;
52 DWORD dwInitialFrames;
53 DWORD dwStreams;
54 DWORD dwSuggestedBufferSize;
55 DWORD dwWidth;
56 DWORD dwHeight;
57 DWORD dwReserved[4];
58 } AVIMAINHEADER;
60 typedef struct _aviextheader
62 FOURCC fcc;
63 DWORD cb;
64 DWORD dwGrandFrames;
65 DWORD dwFuture[61];
66 } AVIEXTHEADER;
69 /* flags for dwFlags member of AVISTREAMHEADER */
70 #define AVISF_DISABLED 0x00000001
71 #define AVISF_VIDEO_PALCHANGES 0x00010000
73 typedef struct _avistreamheader
75 FOURCC fcc;
76 DWORD cb;
77 FOURCC fccType;
78 FOURCC fccHandler;
79 DWORD dwFlags;
80 WORD wPriority;
81 WORD wLanguage;
82 DWORD dwInitialFrames;
83 DWORD dwScale;
84 DWORD dwRate;
85 DWORD dwStart;
86 DWORD dwLength;
87 DWORD dwSuggestedBufferSize;
88 DWORD dwQuality;
89 DWORD dwSampleSize;
90 struct
92 short int left;
93 short int top;
94 short int right;
95 short int bottom;
96 } rcFrame;
97 } AVISTREAMHEADER;
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
107 FOURCC fcc;
108 DWORD cb;
109 struct _avioldindex_entry
111 DWORD dwChunkId;
112 DWORD dwFlags;
113 DWORD dwOffset;
114 DWORD dwSize;
115 } aIndex[0];
116 } AVIOLDINDEX;
118 typedef union _timecode
120 struct
122 WORD wFrameRate;
123 WORD wFrameFract;
124 LONG cFrames;
125 } DUMMYSTRUCTNAME;
126 DWORDLONG qw;
127 } 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
137 TIMECODE time;
138 DWORD dwSMPTEflags;
139 DWORD dwUser;
140 } 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
153 FOURCC fcc;
154 UINT cb;
155 WORD wLongsPerEntry;
156 BYTE bIndexSubType;
157 BYTE bIndexType;
158 DWORD nEntriesInUse;
159 DWORD dwChunkId;
160 DWORD dwReserved[3];
161 DWORD adwIndex[0];
162 } AVIMETAINDEX;
164 /* FIXME: index structures missing */