Avoid using uninitialized variables
[reactos.git] / reactos / include / wine / mmreg.h
1 /*
2 * Declarations for MultiMedia-REGistration
3 *
4 * Copyright (C) 1999 Eric Pouech
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21 #ifndef __WINE_MMREG_H
22 #define __WINE_MMREG_H
23
24 /***********************************************************************
25 * Defines/Enums
26 */
27
28 #ifndef _ACM_WAVEFILTER
29 #define _ACM_WAVEFILTER
30
31 #define WAVE_FILTER_UNKNOWN 0x0000
32 #define WAVE_FILTER_DEVELOPMENT 0xFFFF
33
34 typedef struct _WAVEFILTER {
35 DWORD cbStruct;
36 DWORD dwFilterTag;
37 DWORD fdwFilter;
38 DWORD dwReserved[5];
39 } WAVEFILTER, *PWAVEFILTER, *NPWAVEFILTER, *LPWAVEFILTER;
40 #endif /* _ACM_WAVEFILTER */
41
42 #ifndef WAVE_FILTER_VOLUME
43 #define WAVE_FILTER_VOLUME 0x0001
44
45 typedef struct _WAVEFILTER_VOLUME {
46 WAVEFILTER wfltr;
47 DWORD dwVolume;
48 } VOLUMEWAVEFILTER, *PVOLUMEWAVEFILTER, *NPVOLUMEWAVEFILTER, *LPVOLUMEWAVEFILTER;
49 #endif /* WAVE_FILTER_VOLUME */
50
51 #ifndef WAVE_FILTER_ECHO
52 #define WAVE_FILTER_ECHO 0x0002
53
54 typedef struct WAVEFILTER_ECHO {
55 WAVEFILTER wfltr;
56 DWORD dwVolume;
57 DWORD dwDelay;
58 } ECHOWAVEFILTER, *PECHOWAVEFILTER, *NPECHOWAVEFILTER, *LPECHOWAVEFILTER;
59 #endif /* WAVEFILTER_ECHO */
60
61 #ifndef _WAVEFORMATEX_
62 #define _WAVEFORMATEX_
63 typedef struct _WAVEFORMATEX {
64 WORD wFormatTag;
65 WORD nChannels;
66 DWORD nSamplesPerSec;
67 DWORD nAvgBytesPerSec;
68 WORD nBlockAlign;
69 WORD wBitsPerSample;
70 WORD cbSize;
71 } WAVEFORMATEX, *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX;
72 #endif /* _WAVEFORMATEX_ */
73
74 /* WAVE form wFormatTag IDs */
75 #define WAVE_FORMAT_UNKNOWN 0x0000 /* Microsoft Corporation */
76 #define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */
77 #define WAVE_FORMAT_IBM_CVSD 0x0005 /* IBM Corporation */
78 #define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */
79 #define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */
80 #define WAVE_FORMAT_OKI_ADPCM 0x0010 /* OKI */
81 #define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */
82 #define WAVE_FORMAT_IMA_ADPCM (WAVE_FORMAT_DVI_ADPCM) /* Intel Corporation */
83 #define WAVE_FORMAT_MEDIASPACE_ADPCM 0x0012 /* Videologic */
84 #define WAVE_FORMAT_SIERRA_ADPCM 0x0013 /* Sierra Semiconductor Corp */
85 #define WAVE_FORMAT_G723_ADPCM 0x0014 /* Antex Electronics Corporation */
86 #define WAVE_FORMAT_DIGISTD 0x0015 /* DSP Solutions, Inc. */
87 #define WAVE_FORMAT_DIGIFIX 0x0016 /* DSP Solutions, Inc. */
88 #define WAVE_FORMAT_DIALOGIC_OKI_ADPCM 0x0017 /* Dialogic Corporation */
89 #define WAVE_FORMAT_YAMAHA_ADPCM 0x0020 /* Yamaha Corporation of America */
90 #define WAVE_FORMAT_SONARC 0x0021 /* Speech Compression */
91 #define WAVE_FORMAT_DSPGROUP_TRUESPEECH 0x0022 /* DSP Group, Inc */
92 #define WAVE_FORMAT_ECHOSC1 0x0023 /* Echo Speech Corporation */
93 #define WAVE_FORMAT_AUDIOFILE_AF36 0x0024 /* */
94 #define WAVE_FORMAT_APTX 0x0025 /* Audio Processing Technology */
95 #define WAVE_FORMAT_AUDIOFILE_AF10 0x0026 /* */
96 #define WAVE_FORMAT_DOLBY_AC2 0x0030 /* Dolby Laboratories */
97 #define WAVE_FORMAT_GSM610 0x0031 /* Microsoft Corporation */
98 #define WAVE_FORMAT_ANTEX_ADPCME 0x0033 /* Antex Electronics Corporation */
99 #define WAVE_FORMAT_CONTROL_RES_VQLPC 0x0034 /* Control Resources Limited */
100 #define WAVE_FORMAT_DIGIREAL 0x0035 /* DSP Solutions, Inc. */
101 #define WAVE_FORMAT_DIGIADPCM 0x0036 /* DSP Solutions, Inc. */
102 #define WAVE_FORMAT_CONTROL_RES_CR10 0x0037 /* Control Resources Limited */
103 #define WAVE_FORMAT_NMS_VBXADPCM 0x0038 /* Natural MicroSystems */
104 #define WAVE_FORMAT_G721_ADPCM 0x0040 /* Antex Electronics Corporation */
105 #define WAVE_FORMAT_MPEG 0x0050 /* Microsoft Corporation */
106 #define WAVE_FORMAT_MPEGLAYER3 0x0055
107 #define WAVE_FORMAT_CREATIVE_ADPCM 0x0200 /* Creative Labs, Inc */
108 #define WAVE_FORMAT_CREATIVE_FASTSPEECH8 0x0202 /* Creative Labs, Inc */
109 #define WAVE_FORMAT_CREATIVE_FASTSPEECH10 0x0203 /* Creative Labs, Inc */
110 #define WAVE_FORMAT_FM_TOWNS_SND 0x0300 /* Fujitsu Corp. */
111 #define WAVE_FORMAT_OLIGSM 0x1000 /* Ing C. Olivetti & C., S.p.A. */
112 #define WAVE_FORMAT_OLIADPCM 0x1001 /* Ing C. Olivetti & C., S.p.A. */
113 #define WAVE_FORMAT_OLICELP 0x1002 /* Ing C. Olivetti & C., S.p.A. */
114 #define WAVE_FORMAT_OLISBC 0x1003 /* Ing C. Olivetti & C., S.p.A. */
115 #define WAVE_FORMAT_OLIOPR 0x1004 /* Ing C. Olivetti & C., S.p.A. */
116
117 #define WAVE_FORMAT_DEVELOPMENT (0xFFFF)
118
119 typedef struct adpcmcoef_tag {
120 short iCoef1;
121 short iCoef2;
122 } ADPCMCOEFSET;
123 typedef ADPCMCOEFSET *PADPCMCOEFSET,
124 *NPADPCMCOEFSET, *LPADPCMCOEFSET;
125
126 typedef struct adpcmwaveformat_tag {
127 WAVEFORMATEX wfx;
128 WORD wSamplesPerBlock;
129 WORD wNumCoef;
130 /* FIXME: this should be aCoef[0] */
131 ADPCMCOEFSET aCoef[1];
132 } ADPCMWAVEFORMAT;
133 typedef ADPCMWAVEFORMAT *PADPCMWAVEFORMAT,
134 *NPADPCMWAVEFORMAT, *LPADPCMWAVEFORMAT;
135
136 typedef struct dvi_adpcmwaveformat_tag {
137 WAVEFORMATEX wfx;
138 WORD wSamplesPerBlock;
139 } DVIADPCMWAVEFORMAT;
140 typedef DVIADPCMWAVEFORMAT *PDVIADPCMWAVEFORMAT,
141 *NPDVIADPCMWAVEFORMAT, *LPDVIADPCMWAVEFORMAT;
142
143 typedef struct ima_adpcmwaveformat_tag {
144 WAVEFORMATEX wfx;
145 WORD wSamplesPerBlock;
146 } IMAADPCMWAVEFORMAT;
147 typedef IMAADPCMWAVEFORMAT *PIMAADPCMWAVEFORMAT, *NPIMAADPCMWAVEFORMAT,
148 *LPIMAADPCMWAVEFORMAT;
149
150 typedef struct mediaspace_adpcmwaveformat_tag {
151 WAVEFORMATEX wfx;
152 WORD wRevision;
153 } MEDIASPACEADPCMWAVEFORMAT;
154 typedef MEDIASPACEADPCMWAVEFORMAT *PMEDIASPACEADPCMWAVEFORMAT,
155 *NPMEDIASPACEADPCMWAVEFORMAT, *LPMEDIASPACEADPCMWAVEFORMAT;
156
157 typedef struct sierra_adpcmwaveformat_tag {
158 WAVEFORMATEX wfx;
159 WORD wRevision;
160 } SIERRAADPCMWAVEFORMAT;
161 typedef SIERRAADPCMWAVEFORMAT *PSIERRAADPCMWAVEFORMAT,
162 *NPSIERRAADPCMWAVEFORMAT, *LPSIERRAADPCMWAVEFORMAT;
163
164 typedef struct g723_adpcmwaveformat_tag {
165 WAVEFORMATEX wfx;
166 WORD cbExtraSize;
167 WORD nAuxBlockSize;
168 } G723_ADPCMWAVEFORMAT;
169 typedef G723_ADPCMWAVEFORMAT *PG723_ADPCMWAVEFORMAT,
170 *NPG723_ADPCMWAVEFORMAT, *LPG723_ADPCMWAVEFORMAT;
171
172 typedef struct digistdwaveformat_tag {
173 WAVEFORMATEX wfx;
174 } DIGISTDWAVEFORMAT;
175 typedef DIGISTDWAVEFORMAT *PDIGISTDWAVEFORMAT,
176 *NPDIGISTDWAVEFORMAT, *LPDIGISTDWAVEFORMAT;
177
178 typedef struct digifixwaveformat_tag {
179 WAVEFORMATEX wfx;
180 } DIGIFIXWAVEFORMAT;
181 typedef DIGIFIXWAVEFORMAT *PDIGIFIXWAVEFORMAT,
182 *NPDIGIFIXWAVEFORMAT, *LPDIGIFIXWAVEFORMAT;
183
184 typedef struct creative_fastspeechformat_tag {
185 WAVEFORMATEX ewf;
186 } DIALOGICOKIADPCMWAVEFORMAT;
187 typedef DIALOGICOKIADPCMWAVEFORMAT *PDIALOGICOKIADPCMWAVEFORMAT,
188 *NPDIALOGICOKIADPCMWAVEFORMAT, *LPDIALOGICOKIADPCMWAVEFORMAT;
189
190 typedef struct yamaha_adpmcwaveformat_tag {
191 WAVEFORMATEX wfx;
192 } YAMAHA_ADPCMWAVEFORMAT;
193 typedef YAMAHA_ADPCMWAVEFORMAT *PYAMAHA_ADPCMWAVEFORMAT,
194 *NPYAMAHA_ADPCMWAVEFORMAT, *LPYAMAHA_ADPCMWAVEFORMAT;
195
196 typedef struct sonarcwaveformat_tag {
197 WAVEFORMATEX wfx;
198 WORD wCompType;
199 } SONARCWAVEFORMAT;
200 typedef SONARCWAVEFORMAT *PSONARCWAVEFORMAT,
201 *NPSONARCWAVEFORMAT,*LPSONARCWAVEFORMAT;
202
203 typedef struct truespeechwaveformat_tag {
204 WAVEFORMATEX wfx;
205 WORD wRevision;
206 WORD nSamplesPerBlock;
207 BYTE abReserved[28];
208 } TRUESPEECHWAVEFORMAT;
209 typedef TRUESPEECHWAVEFORMAT *PTRUESPEECHWAVEFORMAT,
210 *NPTRUESPEECHWAVEFORMAT, *LPTRUESPEECHWAVEFORMAT;
211
212 typedef struct echosc1waveformat_tag {
213 WAVEFORMATEX wfx;
214 } ECHOSC1WAVEFORMAT;
215 typedef ECHOSC1WAVEFORMAT *PECHOSC1WAVEFORMAT,
216 *NPECHOSC1WAVEFORMAT, *LPECHOSC1WAVEFORMAT;
217
218 typedef struct audiofile_af36waveformat_tag {
219 WAVEFORMATEX wfx;
220 } AUDIOFILE_AF36WAVEFORMAT;
221 typedef AUDIOFILE_AF36WAVEFORMAT *PAUDIOFILE_AF36WAVEFORMAT,
222 *NPAUDIOFILE_AF36WAVEFORMAT, *LPAUDIOFILE_AF36WAVEFORMAT;
223
224 typedef struct aptxwaveformat_tag {
225 WAVEFORMATEX wfx;
226 } APTXWAVEFORMAT;
227 typedef APTXWAVEFORMAT *PAPTXWAVEFORMAT,
228 *NPAPTXWAVEFORMAT, *LPAPTXWAVEFORMAT;
229
230 typedef struct audiofile_af10waveformat_tag {
231 WAVEFORMATEX wfx;
232 } AUDIOFILE_AF10WAVEFORMAT;
233 typedef AUDIOFILE_AF10WAVEFORMAT *PAUDIOFILE_AF10WAVEFORMAT,
234 *NPAUDIOFILE_AF10WAVEFORMAT, *LPAUDIOFILE_AF10WAVEFORMAT;
235
236 typedef struct dolbyac2waveformat_tag {
237 WAVEFORMATEX wfx;
238 WORD nAuxBitsCode;
239 } DOLBYAC2WAVEFORMAT;
240
241 typedef struct gsm610waveformat_tag {
242 WAVEFORMATEX wfx;
243 WORD wSamplesPerBlock;
244 } GSM610WAVEFORMAT;
245 typedef GSM610WAVEFORMAT *PGSM610WAVEFORMAT,
246 *NPGSM610WAVEFORMAT, *LPGSM610WAVEFORMAT;
247
248 typedef struct adpcmewaveformat_tag {
249 WAVEFORMATEX wfx;
250 WORD wSamplesPerBlock;
251 } ADPCMEWAVEFORMAT;
252 typedef ADPCMEWAVEFORMAT *PADPCMEWAVEFORMAT,
253 *NPADPCMEWAVEFORMAT, *LPADPCMEWAVEFORMAT;
254
255 typedef struct contres_vqlpcwaveformat_tag {
256 WAVEFORMATEX wfx;
257 WORD wSamplesPerBlock;
258 } CONTRESVQLPCWAVEFORMAT;
259 typedef CONTRESVQLPCWAVEFORMAT *PCONTRESVQLPCWAVEFORMAT,
260 *NPCONTRESVQLPCWAVEFORMAT, *LPCONTRESVQLPCWAVEFORMAT;
261
262 typedef struct digirealwaveformat_tag {
263 WAVEFORMATEX wfx;
264 WORD wSamplesPerBlock;
265 } DIGIREALWAVEFORMAT;
266 typedef DIGIREALWAVEFORMAT *PDIGIREALWAVEFORMAT,
267 *NPDIGIREALWAVEFORMAT, *LPDIGIREALWAVEFORMAT;
268
269 typedef struct digiadpcmmwaveformat_tag {
270 WAVEFORMATEX wfx;
271 WORD wSamplesPerBlock;
272 } DIGIADPCMWAVEFORMAT;
273 typedef DIGIADPCMWAVEFORMAT *PDIGIADPCMWAVEFORMAT,
274 *NPDIGIADPCMWAVEFORMAT, *LPDIGIADPCMWAVEFORMAT;
275
276 typedef struct contres_cr10waveformat_tag {
277 WAVEFORMATEX wfx;
278 WORD wSamplesPerBlock;
279 } CONTRESCR10WAVEFORMAT;
280 typedef CONTRESCR10WAVEFORMAT *PCONTRESCR10WAVEFORMAT,
281 *NPCONTRESCR10WAVEFORMAT, *LPCONTRESCR10WAVEFORMAT;
282
283 typedef struct nms_vbxadpcmmwaveformat_tag {
284 WAVEFORMATEX wfx;
285 WORD wSamplesPerBlock;
286 } NMS_VBXADPCMWAVEFORMAT;
287 typedef NMS_VBXADPCMWAVEFORMAT *PNMS_VBXADPCMWAVEFORMAT,
288 *NPNMS_VBXADPCMWAVEFORMAT, *LPNMS_VBXADPCMWAVEFORMAT;
289
290 typedef struct g721_adpcmwaveformat_tag {
291 WAVEFORMATEX wfx;
292 WORD nAuxBlockSize;
293 } G721_ADPCMWAVEFORMAT;
294 typedef G721_ADPCMWAVEFORMAT *PG721_ADPCMWAVEFORMAT,
295 *NG721_ADPCMWAVEFORMAT, *LPG721_ADPCMWAVEFORMAT;
296
297 typedef struct creative_adpcmwaveformat_tag {
298 WAVEFORMATEX wfx;
299 WORD wRevision;
300 } CREATIVEADPCMWAVEFORMAT;
301 typedef CREATIVEADPCMWAVEFORMAT *PCREATIVEADPCMWAVEFORMAT,
302 *NPCREATIVEADPCMWAVEFORMAT, *LPCREATIVEADPCMWAVEFORMAT;
303
304 typedef struct creative_fastspeech8format_tag {
305 WAVEFORMATEX wfx;
306 WORD wRevision;
307 } CREATIVEFASTSPEECH8WAVEFORMAT;
308 typedef CREATIVEFASTSPEECH8WAVEFORMAT *PCREATIVEFASTSPEECH8WAVEFORMAT,
309 *NPCREATIVEFASTSPEECH8WAVEFORMAT, *LPCREATIVEFASTSPEECH8WAVEFORMAT;
310
311 typedef struct creative_fastspeech10format_tag {
312 WAVEFORMATEX wfx;
313 WORD wRevision;
314 } CREATIVEFASTSPEECH10WAVEFORMAT;
315 typedef CREATIVEFASTSPEECH10WAVEFORMAT *PCREATIVEFASTSPEECH10WAVEFORMAT,
316 *NPCREATIVEFASTSPEECH10WAVEFORMAT, *LPCREATIVEFASTSPEECH10WAVEFORMAT;
317
318 typedef struct fmtowns_snd_waveformat_tag {
319 WAVEFORMATEX wfx;
320 WORD wRevision;
321 } FMTOWNS_SND_WAVEFORMAT;
322 typedef FMTOWNS_SND_WAVEFORMAT *PFMTOWNS_SND_WAVEFORMAT,
323 *NPFMTOWNS_SND_WAVEFORMAT, *LPFMTOWNS_SND_WAVEFORMAT;
324
325 typedef struct oligsmwaveformat_tag {
326 WAVEFORMATEX wfx;
327 } OLIGSMWAVEFORMAT;
328 typedef OLIGSMWAVEFORMAT *POLIGSMWAVEFORMAT,
329 *NPOLIGSMWAVEFORMAT, *LPOLIGSMWAVEFORMAT;
330
331 typedef struct oliadpcmwaveformat_tag {
332 WAVEFORMATEX wfx;
333 } OLIADPCMWAVEFORMAT;
334 typedef OLIADPCMWAVEFORMAT *POLIADPCMWAVEFORMAT,
335 *NPOLIADPCMWAVEFORMAT, *LPOLIADPCMWAVEFORMAT;
336
337 typedef struct olicelpwaveformat_tag {
338 WAVEFORMATEX wfx;
339 } OLICELPWAVEFORMAT;
340 typedef OLICELPWAVEFORMAT *POLICELPWAVEFORMAT,
341 *NPOLICELPWAVEFORMAT, *LPOLICELPWAVEFORMAT;
342
343 typedef struct olisbcwaveformat_tag {
344 WAVEFORMATEX wfx;
345 } OLISBCWAVEFORMAT;
346 typedef OLISBCWAVEFORMAT *POLISBCWAVEFORMAT,
347 *NPOLISBCWAVEFORMAT, *LPOLISBCWAVEFORMAT;
348
349 typedef struct olioprwaveformat_tag {
350 WAVEFORMATEX wfx;
351 } OLIOPRWAVEFORMAT;
352 typedef OLIOPRWAVEFORMAT *POLIOPRWAVEFORMAT,
353 *NPOLIOPRWAVEFORMAT, *LPOLIOPRWAVEFORMAT;
354
355 typedef struct csimaadpcmwaveformat_tag {
356 WAVEFORMATEX wfx;
357 } CSIMAADPCMWAVEFORMAT;
358 typedef CSIMAADPCMWAVEFORMAT *PCSIMAADPCMWAVEFORMAT,
359 *NPCSIMAADPCMWAVEFORMAT, *LPCSIMAADPCMWAVEFORMAT;
360
361 typedef struct
362 {
363 WAVEFORMATEX wfx;
364 WORD fwHeadLayer;
365 DWORD dwHeadBitrate;
366 WORD fwHeadMode;
367 WORD fwHeadModeExt;
368 WORD wHeadEmphasis;
369 WORD fwHeadFlags;
370 DWORD dwPTSLow;
371 DWORD dwPTSHigh;
372 } MPEG1WAVEFORMAT,* PMPEG1WAVEFORMAT;
373
374 #define ACM_MPEG_LAYER1 0x0001
375 #define ACM_MPEG_LAYER2 0x0002
376 #define ACM_MPEG_LAYER3 0x0004
377
378 #define ACM_MPEG_STEREO 0x0001
379 #define ACM_MPEG_JOINTSTEREO 0x0002
380 #define ACM_MPEG_DUALCHANNEL 0x0004
381 #define ACM_MPEG_SINGLECHANNEL 0x0008
382 #define ACM_MPEG_PRIVATEBIT 0x0001
383 #define ACM_MPEG_COPYRIGHT 0x0002
384 #define ACM_MPEG_ORIGINALHOME 0x0004
385 #define ACM_MPEG_PROTECTIONBIT 0x0008
386 #define ACM_MPEG_ID_MPEG1 0x0010
387
388 typedef struct
389 {
390 WAVEFORMATEX wfx;
391 WORD wID;
392 DWORD fdwFlags;
393 WORD nBlockSize;
394 WORD nFramesPerBlock;
395 WORD nCodecDelay;
396 } MPEGLAYER3WAVEFORMAT;
397
398 #define MPEGLAYER3_WFX_EXTRA_BYTES 12
399
400 #define MPEGLAYER3_ID_UNKNOWN 0
401 #define MPEGLAYER3_ID_MPEG 1
402 #define MPEGLAYER3_ID_CONSTANTFRAMESIZE 2
403
404 #define MPEGLAYER3_FLAG_PADDING_ISO 0x00000000
405 #define MPEGLAYER3_FLAG_PADDING_ON 0x00000001
406 #define MPEGLAYER3_FLAG_PADDING_OFF 0x00000002
407
408 #endif /* __WINE_MMREG_H */