richedit: WM_SETTEXT - Clear modify step flag before any notifications can be sent.
[wine] / include / aviriff.h
1 /*
2  * Copyright (C) 2003 Robert Shearman
3  * Copyright (C) 2008 Maarten Lankhorst
4  *
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.
9  *
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.
14  *
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
18  */
19
20 typedef struct _riffchunk
21 {
22     FOURCC fcc;
23     DWORD cb;
24 } RIFFCHUNK, * LPRIFFCHUNK;
25
26 typedef struct _rifflist
27 {
28     FOURCC fcc;
29     DWORD cb;
30     FOURCC fccListType;
31 } RIFFLIST, * LPRIFFLIST;
32
33 #define FCC( ch0, ch1, ch2, ch3 ) \
34     ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) <<  8 ) | \
35     ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
36
37 #define RIFFROUND(cb) ((cb) + ((cb)&1))
38 #define RIFFNEXT(pChunk) (LPRIFFCHUNK)((LPBYTE)(pChunk)+sizeof(RIFFCHUNK)+RIFFROUND(((LPRIFFCHUNK)pChunk)->cb))
39
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
47
48 #define ckidMAINAVIHEADER FCC('a','v','i','h')
49 typedef struct _avimainheader
50 {
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;
65
66 #define ckidODML FCC('o','d','m','l')
67 #define ckidAVIEXTHEADER  FCC('d','m','l','h')
68 typedef struct _aviextheader
69 {
70     FOURCC fcc;
71     DWORD cb;
72     DWORD dwGrandFrames;
73     DWORD dwFuture[61];
74 } AVIEXTHEADER;
75
76 #define ckidSTREAMLIST FCC('s','t','r','l')
77
78 /* flags for dwFlags member of AVISTREAMHEADER */
79 #define AVISF_DISABLED         0x00000001
80 #define AVISF_VIDEO_PALCHANGES 0x00010000
81
82 #ifndef ckidSTREAMHEADER
83 #define ckidSTREAMHEADER FCC('s','t','r','h')
84 #endif
85
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
92
93 typedef struct _avistreamheader
94 {
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
111     {
112         short int left;
113         short int top;
114         short int right;
115         short int bottom;
116     } rcFrame;
117 } AVISTREAMHEADER;
118
119 #ifndef ckidSTREAMFORMAT
120 #define ckidSTREAMFORMAT FCC('s','t','r','f')
121 #endif
122 #define ckidAVIOLDINDEX FCC('i','d','x','1')
123
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
129
130 typedef struct _avioldindex
131 {
132     FOURCC fcc;
133     DWORD cb;
134     struct _avioldindex_entry
135     {
136         DWORD dwChunkId;
137         DWORD dwFlags;
138         DWORD dwOffset;
139         DWORD dwSize;
140     } aIndex[ANYSIZE_ARRAY];
141 } AVIOLDINDEX;
142
143 typedef union _timecode
144 {
145     struct
146     {
147         WORD wFrameRate;
148         WORD wFrameFract;
149         LONG cFrames;
150     } DUMMYSTRUCTNAME;
151     DWORDLONG qw;
152 } TIMECODE;
153
154 #define TIMECODE_RATE_30DROP 0
155
156 /* flags for dwSMPTEflags member of TIMECODEDATA */
157 #define TIMECODE_SMPTE_BINARY_GROUP 0x07
158 #define TIMECODE_SMPTE_COLOR_FRAME  0x08
159
160 typedef struct _timecodedata
161 {
162     TIMECODE time;
163     DWORD dwSMPTEflags;
164     DWORD dwUser;
165 } TIMECODEDATA;
166
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
172
173 #define AVI_INDEX_SUB_DEFAULT     0x00
174 #define AVI_INDEX_SUB_2FIELD      0x01
175
176 typedef struct _avimetaindex
177 {
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;
188
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;
205
206 #define AVISTDINDEX_DELTAFRAME (0x80000000)
207 #define AVISTDINDEX_SIZEMASK (~0x80000000)
208
209 typedef struct _avistdindex_entry {
210     DWORD dwOffset;
211     DWORD dwSize;
212 } AVISTDINDEX_ENTRY;
213
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;
226
227 typedef struct _avitimedindex_entry {
228     DWORD dwOffset;
229     DWORD dwSize;
230     DWORD dwDuration;
231 } AVITIMEDINDEX_ENTRY;
232
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;
246
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;
258
259 typedef struct _avitcdlindex_entryA {
260     DWORD dwTick;
261     TIMECODE time;
262     DWORD dwSMPTEflags;
263     DWORD dwUser;
264     CHAR szReelId[12];
265 } AVITCDLINDEX_ENTRYA;
266
267 typedef struct _avitcdlindex_entryW {
268     DWORD dwTick;
269     TIMECODE time;
270     DWORD dwSMPTEflags;
271     DWORD dwUser;
272     WCHAR szReelId[12];
273 } AVITCDLINDEX_ENTRYW;
274
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;
287
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;
300
301 #define AVITCDLINDEX_ENTRY WINELIB_NAME_AW(AVITCDLINDEX_ENTRY)
302 #define AVITCDLINDEX WINELIB_NAME_AW(AVITCDLINDEX)
303
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;