gdiplus: Implemented GdipMultiplyWorldTransform.
[wine/wine64.git] / include / aviriff.h
blobeb8170d24511b609357afca0d7254a16b79458e9
1 /*
2 * Copyright (C) 2003 Robert Shearman
3 * Copyright (C) 2008 Maarten Lankhorst
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 typedef struct _riffchunk
22 FOURCC fcc;
23 DWORD cb;
24 } RIFFCHUNK, * LPRIFFCHUNK;
26 typedef struct _rifflist
28 FOURCC fcc;
29 DWORD cb;
30 FOURCC fccListType;
31 } RIFFLIST, * LPRIFFLIST;
33 #define FCC( ch0, ch1, ch2, ch3 ) \
34 ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
35 ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
37 #define RIFFROUND(cb) ((cb) + ((cb)&1))
38 #define RIFFNEXT(pChunk) (LPRIFFCHUNK)((LPBYTE)(pChunk)+sizeof(RIFFCHUNK)+RIFFROUND(((LPRIFFCHUNK)pChunk)->cb))
40 /* flags for dwFlags member of AVIMAINHEADER */
41 #define AVIF_HASINDEX 0x00000010
42 #define AVIF_MUSTUSEINDEX 0x00000020
43 #define AVIF_ISINTERLEAVED 0x00000100
44 #define AVIF_TRUSTCKTYPE 0x00000800
45 #define AVIF_WASCAPTUREFILE 0x00010000
46 #define AVIF_COPYRIGHTED 0x00020000
48 #define ckidMAINAVIHEADER FCC('a','v','i','h')
49 typedef struct _avimainheader
51 FOURCC fcc;
52 DWORD cb;
53 DWORD dwMicroSecPerFrame;
54 DWORD dwMaxBytesPerSec;
55 DWORD dwPaddingGranularity;
56 DWORD dwFlags;
57 DWORD dwTotalFrames;
58 DWORD dwInitialFrames;
59 DWORD dwStreams;
60 DWORD dwSuggestedBufferSize;
61 DWORD dwWidth;
62 DWORD dwHeight;
63 DWORD dwReserved[4];
64 } AVIMAINHEADER;
66 #define ckidODML FCC('o','d','m','l')
67 #define ckidAVIEXTHEADER FCC('d','m','l','h')
68 typedef struct _aviextheader
70 FOURCC fcc;
71 DWORD cb;
72 DWORD dwGrandFrames;
73 DWORD dwFuture[61];
74 } AVIEXTHEADER;
76 #define ckidSTREAMLIST FCC('s','t','r','l')
78 /* flags for dwFlags member of AVISTREAMHEADER */
79 #define AVISF_DISABLED 0x00000001
80 #define AVISF_VIDEO_PALCHANGES 0x00010000
82 #ifndef ckidSTREAMHEADER
83 #define ckidSTREAMHEADER FCC('s','t','r','h')
84 #endif
86 #ifndef streamtypeVIDEO
87 #define streamtypeVIDEO FCC('v','i','d','s')
88 #define streamtypeAUDIO FCC('a','u','d','s')
89 #define streamtypeMIDI FCC('m','i','d','s')
90 #define streamtypeTEXT FCC('t','x','t','s')
91 #endif
93 typedef struct _avistreamheader
95 FOURCC fcc;
96 DWORD cb;
97 FOURCC fccType;
98 FOURCC fccHandler;
99 DWORD dwFlags;
100 WORD wPriority;
101 WORD wLanguage;
102 DWORD dwInitialFrames;
103 DWORD dwScale;
104 DWORD dwRate;
105 DWORD dwStart;
106 DWORD dwLength;
107 DWORD dwSuggestedBufferSize;
108 DWORD dwQuality;
109 DWORD dwSampleSize;
110 struct
112 short int left;
113 short int top;
114 short int right;
115 short int bottom;
116 } rcFrame;
117 } AVISTREAMHEADER;
119 #ifndef ckidSTREAMFORMAT
120 #define ckidSTREAMFORMAT FCC('s','t','r','f')
121 #endif
122 #define ckidAVIOLDINDEX FCC('i','d','x','1')
124 /* flags for dwFlags member of _avioldindex_entry */
125 #define AVIIF_LIST 0x00000001
126 #define AVIIF_KEYFRAME 0x00000010
127 #define AVIIF_NO_TIME 0x00000100
128 #define AVIIF_COMPRESSOR 0x0FFF0000
130 typedef struct _avioldindex
132 FOURCC fcc;
133 DWORD cb;
134 struct _avioldindex_entry
136 DWORD dwChunkId;
137 DWORD dwFlags;
138 DWORD dwOffset;
139 DWORD dwSize;
140 } aIndex[ANYSIZE_ARRAY];
141 } AVIOLDINDEX;
143 typedef union _timecode
145 struct
147 WORD wFrameRate;
148 WORD wFrameFract;
149 LONG cFrames;
150 } DUMMYSTRUCTNAME;
151 DWORDLONG qw;
152 } TIMECODE;
154 #define TIMECODE_RATE_30DROP 0
156 /* flags for dwSMPTEflags member of TIMECODEDATA */
157 #define TIMECODE_SMPTE_BINARY_GROUP 0x07
158 #define TIMECODE_SMPTE_COLOR_FRAME 0x08
160 typedef struct _timecodedata
162 TIMECODE time;
163 DWORD dwSMPTEflags;
164 DWORD dwUser;
165 } TIMECODEDATA;
167 #define AVI_INDEX_OF_INDEXES 0x00
168 #define AVI_INDEX_OF_CHUNKS 0x01
169 #define AVI_INDEX_OF_TIMED_CHUNKS 0x02
170 #define AVI_INDEX_OF_SUB_2FIELD 0x03
171 #define AVI_INDEX_IS_DATA 0x80
173 #define AVI_INDEX_SUB_DEFAULT 0x00
174 #define AVI_INDEX_SUB_2FIELD 0x01
176 typedef struct _avimetaindex
178 FOURCC fcc;
179 UINT cb;
180 WORD wLongsPerEntry;
181 BYTE bIndexSubType;
182 BYTE bIndexType;
183 DWORD nEntriesInUse;
184 DWORD dwChunkId;
185 DWORD dwReserved[3];
186 DWORD adwIndex[ANYSIZE_ARRAY];
187 } AVIMETAINDEX;
189 #define ckidAVISUPERINDEX FCC('i','n','d','x')
190 typedef struct _avisuperindex {
191 FOURCC fcc;
192 UINT cb;
193 WORD wLongsPerEntry;
194 BYTE bIndexSubType;
195 BYTE bIndexType;
196 DWORD nEntriesInUse;
197 DWORD dwChunkId;
198 DWORD dwReserved[3];
199 struct _avisuperindex_entry {
200 DWORDLONG qwOffset;
201 DWORD dwSize;
202 DWORD dwDuration;
203 } aIndex[ANYSIZE_ARRAY];
204 } AVISUPERINDEX;
206 #define AVISTDINDEX_DELTAFRAME (0x80000000)
207 #define AVISTDINDEX_SIZEMASK (~0x80000000)
209 typedef struct _avistdindex_entry {
210 DWORD dwOffset;
211 DWORD dwSize;
212 } AVISTDINDEX_ENTRY;
214 typedef struct _avistdindex {
215 FOURCC fcc;
216 UINT cb;
217 WORD wLongsPerEntry;
218 BYTE bIndexSubType;
219 BYTE bIndexType;
220 DWORD nEntriesInUse;
221 DWORD dwChunkId;
222 DWORDLONG qwBaseOffset;
223 DWORD dwReserved_3;
224 AVISTDINDEX_ENTRY aIndex[ANYSIZE_ARRAY];
225 } AVISTDINDEX;
227 typedef struct _avitimedindex_entry {
228 DWORD dwOffset;
229 DWORD dwSize;
230 DWORD dwDuration;
231 } AVITIMEDINDEX_ENTRY;
233 typedef struct _avitimedindex {
234 FOURCC fcc;
235 UINT cb;
236 WORD wLongsPerEntry;
237 BYTE bIndexSubType;
238 BYTE bIndexType;
239 DWORD nEntriesInUse;
240 DWORD dwChunkId;
241 DWORDLONG qwBaseOffset;
242 DWORD dwReserved_3;
243 AVITIMEDINDEX_ENTRY aIndex[ANYSIZE_ARRAY];
244 /* DWORD adwTrailingFill[ANYSIZE_ARRAY]; */
245 } AVITIMEDINDEX;
247 typedef struct _avitimecodeindex {
248 FOURCC fcc;
249 UINT cb;
250 WORD wLongsPerEntry;
251 BYTE bIndexSubType;
252 BYTE bIndexType;
253 DWORD nEntriesInUse;
254 DWORD dwChunkId;
255 DWORD dwReserved[3];
256 TIMECODEDATA aIndex[ANYSIZE_ARRAY];
257 } AVITIMECODEINDEX;
259 typedef struct _avitcdlindex_entryA {
260 DWORD dwTick;
261 TIMECODE time;
262 DWORD dwSMPTEflags;
263 DWORD dwUser;
264 CHAR szReelId[12];
265 } AVITCDLINDEX_ENTRYA;
267 typedef struct _avitcdlindex_entryW {
268 DWORD dwTick;
269 TIMECODE time;
270 DWORD dwSMPTEflags;
271 DWORD dwUser;
272 WCHAR szReelId[12];
273 } AVITCDLINDEX_ENTRYW;
275 typedef struct _avitcdlindexA {
276 FOURCC fcc;
277 UINT cb;
278 WORD wLongsPerEntry;
279 BYTE bIndexSubType;
280 BYTE bIndexType;
281 DWORD nEntriesInUse;
282 DWORD dwChunkId;
283 DWORD dwReserved[3];
284 AVITCDLINDEX_ENTRYA aIndex[ANYSIZE_ARRAY];
285 /* DWORD adwTrailingFill[ANYSIZE_ARRAY]; */
286 } AVITCDLINDEXA;
288 typedef struct _avitcdlindexW {
289 FOURCC fcc;
290 UINT cb;
291 WORD wLongsPerEntry;
292 BYTE bIndexSubType;
293 BYTE bIndexType;
294 DWORD nEntriesInUse;
295 DWORD dwChunkId;
296 DWORD dwReserved[3];
297 AVITCDLINDEX_ENTRYW aIndex[ANYSIZE_ARRAY];
298 /* DWORD adwTrailingFill[ANYSIZE_ARRAY]; */
299 } AVITCDLINDEXW;
301 #define AVITCDLINDEX_ENTRY WINELIB_NAME_AW(AVITCDLINDEX_ENTRY)
302 #define AVITCDLINDEX WINELIB_NAME_AW(AVITCDLINDEX)
304 typedef struct _avifieldindex_chunk {
305 FOURCC fcc;
306 DWORD cb;
307 WORD wLongsPerEntry;
308 BYTE bIndexSubType;
309 BYTE bIndexType;
310 DWORD nEntriesInUse;
311 DWORD dwChunkId;
312 DWORDLONG qwBaseOffset;
313 DWORD dwReserved3;
314 struct _avifieldindex_entry {
315 DWORD dwOffset;
316 DWORD dwSize;
317 DWORD dwOffsetField2;
318 } aIndex[ANYSIZE_ARRAY];
319 } AVIFIELDINDEX, * PAVIFIELDINDEX;