dinput: Avoid deadlock when CS are acquired in different order.
[wine.git] / include / mmreg.h
blob323f5ac7a7c9ddb780fe319d69f6db78afd7b809
1 /*
2 * Declarations for MultiMedia-REGistration
4 * Copyright (C) 1999 Eric Pouech
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.
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.
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #ifndef __WIDL__
23 #ifndef __WINE_MMREG_H
24 #define __WINE_MMREG_H
26 #include <pshpack1.h>
28 /***********************************************************************
29 * Defines/Enums
32 #ifndef _ACM_WAVEFILTER
33 #define _ACM_WAVEFILTER
35 #define WAVE_FILTER_UNKNOWN 0x0000
36 #define WAVE_FILTER_DEVELOPMENT 0xFFFF
38 typedef struct _WAVEFILTER {
39 DWORD cbStruct;
40 DWORD dwFilterTag;
41 DWORD fdwFilter;
42 DWORD dwReserved[5];
43 } WAVEFILTER, *PWAVEFILTER, *NPWAVEFILTER, *LPWAVEFILTER;
44 #endif /* _ACM_WAVEFILTER */
46 #ifndef WAVE_FILTER_VOLUME
47 #define WAVE_FILTER_VOLUME 0x0001
49 typedef struct _WAVEFILTER_VOLUME {
50 WAVEFILTER wfltr;
51 DWORD dwVolume;
52 } VOLUMEWAVEFILTER, *PVOLUMEWAVEFILTER, *NPVOLUMEWAVEFILTER, *LPVOLUMEWAVEFILTER;
53 #endif /* WAVE_FILTER_VOLUME */
55 #ifndef WAVE_FILTER_ECHO
56 #define WAVE_FILTER_ECHO 0x0002
58 typedef struct WAVEFILTER_ECHO {
59 WAVEFILTER wfltr;
60 DWORD dwVolume;
61 DWORD dwDelay;
62 } ECHOWAVEFILTER, *PECHOWAVEFILTER, *NPECHOWAVEFILTER, *LPECHOWAVEFILTER;
63 #endif /* WAVEFILTER_ECHO */
65 #ifndef _WAVEFORMATEX_
66 #define _WAVEFORMATEX_
67 typedef struct _WAVEFORMATEX {
68 WORD wFormatTag;
69 WORD nChannels;
70 DWORD nSamplesPerSec;
71 DWORD nAvgBytesPerSec;
72 WORD nBlockAlign;
73 WORD wBitsPerSample;
74 WORD cbSize;
75 } WAVEFORMATEX, *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX;
76 #endif /* _WAVEFORMATEX_ */
78 #ifndef WAVE_FORMAT_PCM
79 typedef struct waveformat_tag {
80 WORD wFormatTag;
81 WORD nChannels;
82 DWORD nSamplesPerSec;
83 DWORD nAvgBytesPerSec;
84 WORD nBlockAlign;
85 } WAVEFORMAT, *PWAVEFORMAT, *NPWAVEFORMAT, *LPWAVEFORMAT;
87 typedef struct pcmwaveformat_tag {
88 WAVEFORMAT wf;
89 WORD wBitsPerSample;
90 } PCMWAVEFORMAT, *PPCMWAVEFORMAT, *NPPCMWAVEFORMAT, *LPPCMWAVEFORMAT;
91 #endif /* WAVE_FORMAT_PCM */
93 /* WAVE form wFormatTag IDs */
94 #define WAVE_FORMAT_UNKNOWN 0x0000 /* Microsoft Corporation */
95 #ifndef WAVE_FORMAT_PCM
96 #define WAVE_FORMAT_PCM 0x0001
97 #endif
98 #define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */
99 #define WAVE_FORMAT_IEEE_FLOAT 0x0003 /* Microsoft Corporation */
100 #define WAVE_FORMAT_IBM_CVSD 0x0005 /* IBM Corporation */
101 #define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */
102 #define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */
103 #define WAVE_FORMAT_DTS 0x0008
104 #define WAVE_FORMAT_DRM 0x0009
105 #define WAVE_FORMAT_WMAVOICE9 0x000a
106 #define WAVE_FORMAT_OKI_ADPCM 0x0010 /* OKI */
107 #define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */
108 #define WAVE_FORMAT_IMA_ADPCM (WAVE_FORMAT_DVI_ADPCM) /* Intel Corporation */
109 #define WAVE_FORMAT_MEDIASPACE_ADPCM 0x0012 /* Videologic */
110 #define WAVE_FORMAT_SIERRA_ADPCM 0x0013 /* Sierra Semiconductor Corp */
111 #define WAVE_FORMAT_G723_ADPCM 0x0014 /* Antex Electronics Corporation */
112 #define WAVE_FORMAT_DIGISTD 0x0015 /* DSP Solutions, Inc. */
113 #define WAVE_FORMAT_DIGIFIX 0x0016 /* DSP Solutions, Inc. */
114 #define WAVE_FORMAT_DIALOGIC_OKI_ADPCM 0x0017 /* Dialogic Corporation */
115 #define WAVE_FORMAT_YAMAHA_ADPCM 0x0020 /* Yamaha Corporation of America */
116 #define WAVE_FORMAT_SONARC 0x0021 /* Speech Compression */
117 #define WAVE_FORMAT_DSPGROUP_TRUESPEECH 0x0022 /* DSP Group, Inc */
118 #define WAVE_FORMAT_ECHOSC1 0x0023 /* Echo Speech Corporation */
119 #define WAVE_FORMAT_AUDIOFILE_AF36 0x0024 /* */
120 #define WAVE_FORMAT_APTX 0x0025 /* Audio Processing Technology */
121 #define WAVE_FORMAT_AUDIOFILE_AF10 0x0026 /* */
122 #define WAVE_FORMAT_DOLBY_AC2 0x0030 /* Dolby Laboratories */
123 #define WAVE_FORMAT_GSM610 0x0031 /* Microsoft Corporation */
124 #define WAVE_FORMAT_ANTEX_ADPCME 0x0033 /* Antex Electronics Corporation */
125 #define WAVE_FORMAT_CONTROL_RES_VQLPC 0x0034 /* Control Resources Limited */
126 #define WAVE_FORMAT_DIGIREAL 0x0035 /* DSP Solutions, Inc. */
127 #define WAVE_FORMAT_DIGIADPCM 0x0036 /* DSP Solutions, Inc. */
128 #define WAVE_FORMAT_CONTROL_RES_CR10 0x0037 /* Control Resources Limited */
129 #define WAVE_FORMAT_NMS_VBXADPCM 0x0038 /* Natural MicroSystems */
130 #define WAVE_FORMAT_G721_ADPCM 0x0040 /* Antex Electronics Corporation */
131 #define WAVE_FORMAT_MPEG 0x0050 /* Microsoft Corporation */
132 #define WAVE_FORMAT_MPEGLAYER3 0x0055
133 #define WAVE_FORMAT_MSRT24 0x0082 /* Microsoft Corporation */
134 #define WAVE_FORMAT_DOLBY_AC3_SPDIF 0x0092
135 #define WAVE_FORMAT_RAW_AAC1 0x00FF
136 #define WAVE_FORMAT_MSAUDIO1 0x0160
137 #define WAVE_FORMAT_WMAUDIO2 0x0161
138 #define WAVE_FORMAT_WMAUDIO3 0x0162
139 #define WAVE_FORMAT_WMAUDIO_LOSSLESS 0x0163
140 #define WAVE_FORMAT_WMASPDIF 0x0164
141 #define WAVE_FORMAT_CREATIVE_ADPCM 0x0200 /* Creative Labs, Inc */
142 #define WAVE_FORMAT_CREATIVE_FASTSPEECH8 0x0202 /* Creative Labs, Inc */
143 #define WAVE_FORMAT_CREATIVE_FASTSPEECH10 0x0203 /* Creative Labs, Inc */
144 #define WAVE_FORMAT_GENERIC_PASSTHRU 0x0249
145 #define WAVE_FORMAT_FM_TOWNS_SND 0x0300 /* Fujitsu Corp. */
146 #define WAVE_FORMAT_OLIGSM 0x1000 /* Ing C. Olivetti & C., S.p.A. */
147 #define WAVE_FORMAT_OLIADPCM 0x1001 /* Ing C. Olivetti & C., S.p.A. */
148 #define WAVE_FORMAT_OLICELP 0x1002 /* Ing C. Olivetti & C., S.p.A. */
149 #define WAVE_FORMAT_OLISBC 0x1003 /* Ing C. Olivetti & C., S.p.A. */
150 #define WAVE_FORMAT_OLIOPR 0x1004 /* Ing C. Olivetti & C., S.p.A. */
151 #define WAVE_FORMAT_MPEG_ADTS_AAC 0x1600
152 #define WAVE_FORMAT_MPEG_RAW_AAC 0x1601
153 #define WAVE_FORMAT_MPEG_LOAS 0x1602
154 #define WAVE_FORMAT_MPEG_HEAAC 0x1610
155 #define WAVE_FORMAT_DTS2 0x2001
156 #define WAVE_FORMAT_ALAC 0x6c61
157 #define WAVE_FORMAT_OPUS 0x704f
158 #define WAVE_FORMAT_AMR_NB 0x7361
159 #define WAVE_FORMAT_AMR_WB 0x7362
160 #define WAVE_FORMAT_AMR_WP 0x7363
161 #define WAVE_FORMAT_MPEG_AAC 0xa106
162 #define WAVE_FORMAT_FLAC 0xf1ac
165 #ifndef MM_MICROSOFT
166 #define MM_MICROSOFT 0x01
167 #endif
168 #define MM_MSFT_ACM_MSADPCM 0x21
169 #define MM_MSFT_ACM_IMAADPCM 0x22
170 #define MM_MSFT_ACM_GSM610 0x24
171 #define MM_MSFT_ACM_G711 0x25
172 #define MM_MSFT_ACM_PCM 0x26
173 #define MM_MSFT_ACM_WMAUDIO 39
174 #define MM_MSFT_ACM_MSAUDIO1 39
175 #define MM_MSFT_ACM_WMAUDIO2 101
177 #define MM_FRAUNHOFER_IIS 0xAC
178 #define MM_FHGIIS_MPEGLAYER3_DECODE 0x09
179 #define MM_FHGIIS_MPEGLAYER3_PROFESSIONAL 0x0d
181 #if !defined(WAVE_FORMAT_EXTENSIBLE)
182 #define WAVE_FORMAT_EXTENSIBLE 0xFFFE /* Microsoft */
183 #endif
185 #define WAVE_FORMAT_DEVELOPMENT (0xFFFF)
187 typedef struct adpcmcoef_tag {
188 short iCoef1;
189 short iCoef2;
190 } ADPCMCOEFSET;
191 typedef ADPCMCOEFSET *PADPCMCOEFSET,
192 *NPADPCMCOEFSET, *LPADPCMCOEFSET;
194 typedef struct adpcmwaveformat_tag {
195 WAVEFORMATEX wfx;
196 WORD wSamplesPerBlock;
197 WORD wNumCoef;
198 /* FIXME: this should be aCoef[0] */
199 ADPCMCOEFSET aCoef[1];
200 } ADPCMWAVEFORMAT;
201 typedef ADPCMWAVEFORMAT *PADPCMWAVEFORMAT,
202 *NPADPCMWAVEFORMAT, *LPADPCMWAVEFORMAT;
204 typedef struct drmwaveformat_tag {
205 WAVEFORMATEX wfx;
206 WORD wReserved;
207 ULONG ulContentId;
208 WAVEFORMATEX wfxSecure;
209 } DRMWAVEFORMAT;
210 typedef DRMWAVEFORMAT *PDRMWAVEFORMAT, *NPDRMWAVEFORMAT,
211 *LPDRMWAVEFORMAT;
213 typedef struct dvi_adpcmwaveformat_tag {
214 WAVEFORMATEX wfx;
215 WORD wSamplesPerBlock;
216 } DVIADPCMWAVEFORMAT;
217 typedef DVIADPCMWAVEFORMAT *PDVIADPCMWAVEFORMAT,
218 *NPDVIADPCMWAVEFORMAT, *LPDVIADPCMWAVEFORMAT;
220 typedef struct ima_adpcmwaveformat_tag {
221 WAVEFORMATEX wfx;
222 WORD wSamplesPerBlock;
223 } IMAADPCMWAVEFORMAT;
224 typedef IMAADPCMWAVEFORMAT *PIMAADPCMWAVEFORMAT, *NPIMAADPCMWAVEFORMAT,
225 *LPIMAADPCMWAVEFORMAT;
227 typedef struct mediaspace_adpcmwaveformat_tag {
228 WAVEFORMATEX wfx;
229 WORD wRevision;
230 } MEDIASPACEADPCMWAVEFORMAT;
231 typedef MEDIASPACEADPCMWAVEFORMAT *PMEDIASPACEADPCMWAVEFORMAT,
232 *NPMEDIASPACEADPCMWAVEFORMAT, *LPMEDIASPACEADPCMWAVEFORMAT;
234 typedef struct sierra_adpcmwaveformat_tag {
235 WAVEFORMATEX wfx;
236 WORD wRevision;
237 } SIERRAADPCMWAVEFORMAT;
238 typedef SIERRAADPCMWAVEFORMAT *PSIERRAADPCMWAVEFORMAT,
239 *NPSIERRAADPCMWAVEFORMAT, *LPSIERRAADPCMWAVEFORMAT;
241 typedef struct g723_adpcmwaveformat_tag {
242 WAVEFORMATEX wfx;
243 WORD cbExtraSize;
244 WORD nAuxBlockSize;
245 } G723_ADPCMWAVEFORMAT;
246 typedef G723_ADPCMWAVEFORMAT *PG723_ADPCMWAVEFORMAT,
247 *NPG723_ADPCMWAVEFORMAT, *LPG723_ADPCMWAVEFORMAT;
249 typedef struct digistdwaveformat_tag {
250 WAVEFORMATEX wfx;
251 } DIGISTDWAVEFORMAT;
252 typedef DIGISTDWAVEFORMAT *PDIGISTDWAVEFORMAT,
253 *NPDIGISTDWAVEFORMAT, *LPDIGISTDWAVEFORMAT;
255 typedef struct digifixwaveformat_tag {
256 WAVEFORMATEX wfx;
257 } DIGIFIXWAVEFORMAT;
258 typedef DIGIFIXWAVEFORMAT *PDIGIFIXWAVEFORMAT,
259 *NPDIGIFIXWAVEFORMAT, *LPDIGIFIXWAVEFORMAT;
261 typedef struct creative_fastspeechformat_tag {
262 WAVEFORMATEX ewf;
263 } DIALOGICOKIADPCMWAVEFORMAT;
264 typedef DIALOGICOKIADPCMWAVEFORMAT *PDIALOGICOKIADPCMWAVEFORMAT,
265 *NPDIALOGICOKIADPCMWAVEFORMAT, *LPDIALOGICOKIADPCMWAVEFORMAT;
267 typedef struct yamaha_adpmcwaveformat_tag {
268 WAVEFORMATEX wfx;
269 } YAMAHA_ADPCMWAVEFORMAT;
270 typedef YAMAHA_ADPCMWAVEFORMAT *PYAMAHA_ADPCMWAVEFORMAT,
271 *NPYAMAHA_ADPCMWAVEFORMAT, *LPYAMAHA_ADPCMWAVEFORMAT;
273 typedef struct sonarcwaveformat_tag {
274 WAVEFORMATEX wfx;
275 WORD wCompType;
276 } SONARCWAVEFORMAT;
277 typedef SONARCWAVEFORMAT *PSONARCWAVEFORMAT,
278 *NPSONARCWAVEFORMAT,*LPSONARCWAVEFORMAT;
280 typedef struct truespeechwaveformat_tag {
281 WAVEFORMATEX wfx;
282 WORD wRevision;
283 WORD nSamplesPerBlock;
284 BYTE abReserved[28];
285 } TRUESPEECHWAVEFORMAT;
286 typedef TRUESPEECHWAVEFORMAT *PTRUESPEECHWAVEFORMAT,
287 *NPTRUESPEECHWAVEFORMAT, *LPTRUESPEECHWAVEFORMAT;
289 typedef struct echosc1waveformat_tag {
290 WAVEFORMATEX wfx;
291 } ECHOSC1WAVEFORMAT;
292 typedef ECHOSC1WAVEFORMAT *PECHOSC1WAVEFORMAT,
293 *NPECHOSC1WAVEFORMAT, *LPECHOSC1WAVEFORMAT;
295 typedef struct audiofile_af36waveformat_tag {
296 WAVEFORMATEX wfx;
297 } AUDIOFILE_AF36WAVEFORMAT;
298 typedef AUDIOFILE_AF36WAVEFORMAT *PAUDIOFILE_AF36WAVEFORMAT,
299 *NPAUDIOFILE_AF36WAVEFORMAT, *LPAUDIOFILE_AF36WAVEFORMAT;
301 typedef struct aptxwaveformat_tag {
302 WAVEFORMATEX wfx;
303 } APTXWAVEFORMAT;
304 typedef APTXWAVEFORMAT *PAPTXWAVEFORMAT,
305 *NPAPTXWAVEFORMAT, *LPAPTXWAVEFORMAT;
307 typedef struct audiofile_af10waveformat_tag {
308 WAVEFORMATEX wfx;
309 } AUDIOFILE_AF10WAVEFORMAT;
310 typedef AUDIOFILE_AF10WAVEFORMAT *PAUDIOFILE_AF10WAVEFORMAT,
311 *NPAUDIOFILE_AF10WAVEFORMAT, *LPAUDIOFILE_AF10WAVEFORMAT;
313 typedef struct dolbyac2waveformat_tag {
314 WAVEFORMATEX wfx;
315 WORD nAuxBitsCode;
316 } DOLBYAC2WAVEFORMAT;
318 typedef struct gsm610waveformat_tag {
319 WAVEFORMATEX wfx;
320 WORD wSamplesPerBlock;
321 } GSM610WAVEFORMAT;
322 typedef GSM610WAVEFORMAT *PGSM610WAVEFORMAT,
323 *NPGSM610WAVEFORMAT, *LPGSM610WAVEFORMAT;
325 typedef struct adpcmewaveformat_tag {
326 WAVEFORMATEX wfx;
327 WORD wSamplesPerBlock;
328 } ADPCMEWAVEFORMAT;
329 typedef ADPCMEWAVEFORMAT *PADPCMEWAVEFORMAT,
330 *NPADPCMEWAVEFORMAT, *LPADPCMEWAVEFORMAT;
332 typedef struct contres_vqlpcwaveformat_tag {
333 WAVEFORMATEX wfx;
334 WORD wSamplesPerBlock;
335 } CONTRESVQLPCWAVEFORMAT;
336 typedef CONTRESVQLPCWAVEFORMAT *PCONTRESVQLPCWAVEFORMAT,
337 *NPCONTRESVQLPCWAVEFORMAT, *LPCONTRESVQLPCWAVEFORMAT;
339 typedef struct digirealwaveformat_tag {
340 WAVEFORMATEX wfx;
341 WORD wSamplesPerBlock;
342 } DIGIREALWAVEFORMAT;
343 typedef DIGIREALWAVEFORMAT *PDIGIREALWAVEFORMAT,
344 *NPDIGIREALWAVEFORMAT, *LPDIGIREALWAVEFORMAT;
346 typedef struct digiadpcmmwaveformat_tag {
347 WAVEFORMATEX wfx;
348 WORD wSamplesPerBlock;
349 } DIGIADPCMWAVEFORMAT;
350 typedef DIGIADPCMWAVEFORMAT *PDIGIADPCMWAVEFORMAT,
351 *NPDIGIADPCMWAVEFORMAT, *LPDIGIADPCMWAVEFORMAT;
353 typedef struct contres_cr10waveformat_tag {
354 WAVEFORMATEX wfx;
355 WORD wSamplesPerBlock;
356 } CONTRESCR10WAVEFORMAT;
357 typedef CONTRESCR10WAVEFORMAT *PCONTRESCR10WAVEFORMAT,
358 *NPCONTRESCR10WAVEFORMAT, *LPCONTRESCR10WAVEFORMAT;
360 typedef struct nms_vbxadpcmmwaveformat_tag {
361 WAVEFORMATEX wfx;
362 WORD wSamplesPerBlock;
363 } NMS_VBXADPCMWAVEFORMAT;
364 typedef NMS_VBXADPCMWAVEFORMAT *PNMS_VBXADPCMWAVEFORMAT,
365 *NPNMS_VBXADPCMWAVEFORMAT, *LPNMS_VBXADPCMWAVEFORMAT;
367 typedef struct g721_adpcmwaveformat_tag {
368 WAVEFORMATEX wfx;
369 WORD nAuxBlockSize;
370 } G721_ADPCMWAVEFORMAT;
371 typedef G721_ADPCMWAVEFORMAT *PG721_ADPCMWAVEFORMAT,
372 *NG721_ADPCMWAVEFORMAT, *LPG721_ADPCMWAVEFORMAT;
374 typedef struct creative_adpcmwaveformat_tag {
375 WAVEFORMATEX wfx;
376 WORD wRevision;
377 } CREATIVEADPCMWAVEFORMAT;
378 typedef CREATIVEADPCMWAVEFORMAT *PCREATIVEADPCMWAVEFORMAT,
379 *NPCREATIVEADPCMWAVEFORMAT, *LPCREATIVEADPCMWAVEFORMAT;
381 typedef struct creative_fastspeech8format_tag {
382 WAVEFORMATEX wfx;
383 WORD wRevision;
384 } CREATIVEFASTSPEECH8WAVEFORMAT;
385 typedef CREATIVEFASTSPEECH8WAVEFORMAT *PCREATIVEFASTSPEECH8WAVEFORMAT,
386 *NPCREATIVEFASTSPEECH8WAVEFORMAT, *LPCREATIVEFASTSPEECH8WAVEFORMAT;
388 typedef struct creative_fastspeech10format_tag {
389 WAVEFORMATEX wfx;
390 WORD wRevision;
391 } CREATIVEFASTSPEECH10WAVEFORMAT;
392 typedef CREATIVEFASTSPEECH10WAVEFORMAT *PCREATIVEFASTSPEECH10WAVEFORMAT,
393 *NPCREATIVEFASTSPEECH10WAVEFORMAT, *LPCREATIVEFASTSPEECH10WAVEFORMAT;
395 typedef struct fmtowns_snd_waveformat_tag {
396 WAVEFORMATEX wfx;
397 WORD wRevision;
398 } FMTOWNS_SND_WAVEFORMAT;
399 typedef FMTOWNS_SND_WAVEFORMAT *PFMTOWNS_SND_WAVEFORMAT,
400 *NPFMTOWNS_SND_WAVEFORMAT, *LPFMTOWNS_SND_WAVEFORMAT;
402 typedef struct oligsmwaveformat_tag {
403 WAVEFORMATEX wfx;
404 } OLIGSMWAVEFORMAT;
405 typedef OLIGSMWAVEFORMAT *POLIGSMWAVEFORMAT,
406 *NPOLIGSMWAVEFORMAT, *LPOLIGSMWAVEFORMAT;
408 typedef struct oliadpcmwaveformat_tag {
409 WAVEFORMATEX wfx;
410 } OLIADPCMWAVEFORMAT;
411 typedef OLIADPCMWAVEFORMAT *POLIADPCMWAVEFORMAT,
412 *NPOLIADPCMWAVEFORMAT, *LPOLIADPCMWAVEFORMAT;
414 typedef struct olicelpwaveformat_tag {
415 WAVEFORMATEX wfx;
416 } OLICELPWAVEFORMAT;
417 typedef OLICELPWAVEFORMAT *POLICELPWAVEFORMAT,
418 *NPOLICELPWAVEFORMAT, *LPOLICELPWAVEFORMAT;
420 typedef struct olisbcwaveformat_tag {
421 WAVEFORMATEX wfx;
422 } OLISBCWAVEFORMAT;
423 typedef OLISBCWAVEFORMAT *POLISBCWAVEFORMAT,
424 *NPOLISBCWAVEFORMAT, *LPOLISBCWAVEFORMAT;
426 typedef struct olioprwaveformat_tag {
427 WAVEFORMATEX wfx;
428 } OLIOPRWAVEFORMAT;
429 typedef OLIOPRWAVEFORMAT *POLIOPRWAVEFORMAT,
430 *NPOLIOPRWAVEFORMAT, *LPOLIOPRWAVEFORMAT;
432 typedef struct csimaadpcmwaveformat_tag {
433 WAVEFORMATEX wfx;
434 } CSIMAADPCMWAVEFORMAT;
435 typedef CSIMAADPCMWAVEFORMAT *PCSIMAADPCMWAVEFORMAT,
436 *NPCSIMAADPCMWAVEFORMAT, *LPCSIMAADPCMWAVEFORMAT;
438 typedef struct mpeg1waveformat_tag {
439 WAVEFORMATEX wfx;
440 WORD fwHeadLayer;
441 DWORD dwHeadBitrate;
442 WORD fwHeadMode;
443 WORD fwHeadModeExt;
444 WORD wHeadEmphasis;
445 WORD fwHeadFlags;
446 DWORD dwPTSLow;
447 DWORD dwPTSHigh;
448 } MPEG1WAVEFORMAT;
449 typedef MPEG1WAVEFORMAT *PMPEG1WAVEFORMAT,
450 *NPMPEG1WAVEFORMAT, *LPMPEG1WAVEFORMAT;
452 #define ACM_MPEG_LAYER1 0x0001
453 #define ACM_MPEG_LAYER2 0x0002
454 #define ACM_MPEG_LAYER3 0x0004
456 #define ACM_MPEG_STEREO 0x0001
457 #define ACM_MPEG_JOINTSTEREO 0x0002
458 #define ACM_MPEG_DUALCHANNEL 0x0004
459 #define ACM_MPEG_SINGLECHANNEL 0x0008
460 #define ACM_MPEG_PRIVATEBIT 0x0001
461 #define ACM_MPEG_COPYRIGHT 0x0002
462 #define ACM_MPEG_ORIGINALHOME 0x0004
463 #define ACM_MPEG_PROTECTIONBIT 0x0008
464 #define ACM_MPEG_ID_MPEG1 0x0010
466 typedef struct mpeglayer3waveformat_tag {
467 WAVEFORMATEX wfx;
468 WORD wID;
469 DWORD fdwFlags;
470 WORD nBlockSize;
471 WORD nFramesPerBlock;
472 WORD nCodecDelay;
473 } MPEGLAYER3WAVEFORMAT;
474 typedef MPEGLAYER3WAVEFORMAT *PMPEGLAYER3WAVEFORMAT,
475 *NPMPEGLAYER3WAVEFORMAT, *LPMPEGLAYER3WAVEFORMAT;
477 #define MPEGLAYER3_WFX_EXTRA_BYTES 12
479 #define MPEGLAYER3_ID_UNKNOWN 0
480 #define MPEGLAYER3_ID_MPEG 1
481 #define MPEGLAYER3_ID_CONSTANTFRAMESIZE 2
483 #define MPEGLAYER3_FLAG_PADDING_ISO 0x00000000
484 #define MPEGLAYER3_FLAG_PADDING_ON 0x00000001
485 #define MPEGLAYER3_FLAG_PADDING_OFF 0x00000002
487 typedef struct msaudio1waveformat_tag {
488 WAVEFORMATEX wfx;
489 WORD wSamplesPerBlock;
490 WORD wEncodeOptions;
491 } MSAUDIO1WAVEFORMAT, *LPMSAUDIO1WAVEFORMAT;
493 #define WMAUDIO_BITS_PER_SAMPLE 16
494 #define WMAUDIO_MAX_CHANNELS 2
496 #define MSAUDIO1_BITS_PER_SAMPLE WMAUDIO_BITS_PER_SAMPLE
497 #define MSAUDIO1_MAX_CHANNELS WMAUDIO_MAX_CHANNELS
498 #define MSAUDIO1_WFX_EXTRA_BYTES (sizeof(MSAUDIO1WAVEFORMAT) - sizeof(WAVEFORMATEX))
500 typedef struct wmaudio2waveformat_tag {
501 WAVEFORMATEX wfx;
502 DWORD dwSamplesPerBlock;
503 WORD wEncodeOptions;
504 DWORD dwSuperBlockAlign;
505 } WMAUDIO2WAVEFORMAT, *LPWMAUDIO2WAVEFORMAT;
507 #define WMAUDIO2_BITS_PER_SAMPLE WMAUDIO_BITS_PER_SAMPLE
508 #define WMAUDIO2_MAX_CHANNELS WMAUDIO_MAX_CHANNELS
509 #define WMAUDIO2_WFX_EXTRA_BYTES (sizeof(WMAUDIO2WAVEFORMAT) - sizeof(WAVEFORMATEX))
511 typedef struct wmaudio3waveformat_tag {
512 WAVEFORMATEX wfx;
513 WORD wValidBitsPerSample;
514 DWORD dwChannelMask;
515 DWORD dwReserved1;
516 DWORD dwReserved2;
517 WORD wEncodeOptions;
518 WORD wReserved3;
519 } WMAUDIO3WAVEFORMAT, *LPWMAUDIO3WAVEFORMAT;
521 #define WMAUDIO3_WFX_EXTRA_BYTES (sizeof(WMAUDIO3WAVEFORMAT) - sizeof(WAVEFORMATEX))
523 #ifdef GUID_DEFINED
525 #ifndef _WAVEFORMATEXTENSIBLE_
526 #define _WAVEFORMATEXTENSIBLE_
527 typedef struct {
528 WAVEFORMATEX Format;
529 union {
530 WORD wValidBitsPerSample;
531 WORD wSamplesPerBlock;
532 WORD wReserved;
533 } Samples;
534 DWORD dwChannelMask;
535 GUID SubFormat;
536 } WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
537 #endif /* _WAVEFORMATEXTENSIBLE_ */
539 #endif /* GUID_DEFINED */
541 typedef WAVEFORMATEXTENSIBLE WAVEFORMATPCMEX;
542 typedef WAVEFORMATPCMEX* PWAVEFORMATPCMEX;
543 typedef WAVEFORMATPCMEX* NPWAVEFORMATPCMEX;
544 typedef WAVEFORMATPCMEX* LPWAVEFORMATPCMEX;
546 typedef WAVEFORMATEXTENSIBLE WAVEFORMATIEEEFLOATEX;
547 typedef WAVEFORMATIEEEFLOATEX* PWAVEFORMATIEEEFLOATEX;
548 typedef WAVEFORMATIEEEFLOATEX* NPWAVEFORMATIEEEFLOATEX;
549 typedef WAVEFORMATIEEEFLOATEX* LPWAVEFORMATIEEEFLOATEX;
551 #ifndef _SPEAKER_POSITIONS_
552 #define _SPEAKER_POSITIONS_
554 #define SPEAKER_FRONT_LEFT 0x00000001
555 #define SPEAKER_FRONT_RIGHT 0x00000002
556 #define SPEAKER_FRONT_CENTER 0x00000004
557 #define SPEAKER_LOW_FREQUENCY 0x00000008
558 #define SPEAKER_BACK_LEFT 0x00000010
559 #define SPEAKER_BACK_RIGHT 0x00000020
560 #define SPEAKER_FRONT_LEFT_OF_CENTER 0x00000040
561 #define SPEAKER_FRONT_RIGHT_OF_CENTER 0x00000080
562 #define SPEAKER_BACK_CENTER 0x00000100
563 #define SPEAKER_SIDE_LEFT 0x00000200
564 #define SPEAKER_SIDE_RIGHT 0x00000400
565 #define SPEAKER_TOP_CENTER 0x00000800
566 #define SPEAKER_TOP_FRONT_LEFT 0x00001000
567 #define SPEAKER_TOP_FRONT_CENTER 0x00002000
568 #define SPEAKER_TOP_FRONT_RIGHT 0x00004000
569 #define SPEAKER_TOP_BACK_LEFT 0x00008000
570 #define SPEAKER_TOP_BACK_CENTER 0x00010000
571 #define SPEAKER_TOP_BACK_RIGHT 0x00020000
572 #define SPEAKER_RESERVED 0x7FFC0000
573 #define SPEAKER_ALL 0x80000000
575 #endif /* _SPEAKER_POSITIONS_ */
577 /* DIB stuff */
579 #ifndef BI_BITFIELDS
580 #define BI_BITFIELDS 3
581 #endif
583 #ifndef QUERYDIBSUPPORT
584 #define QUERYDIBSUPPORT 3073
585 #define QDI_SETDIBITS 1
586 #define QDI_GETDIBITS 2
587 #define QDI_DIBTOSCREEN 4
588 #define QDI_STRETCHDIB 8
589 #endif
591 #ifndef NOBITMAP
592 typedef struct tagEXBMINFOHEADER {
593 BITMAPINFOHEADER bmi;
594 DWORD biExtDataOffset;
595 } EXBMINFOHEADER;
596 #endif
599 /* Video stuff */
601 #ifndef NONEWIC
603 #ifndef ICTYPE_VIDEO
604 #define ICTYPE_VIDEO mmioFOURCC('v', 'i', 'd', 'c')
605 #define ICTYPE_AUDIO mmioFOURCC('a', 'u', 'd', 'c')
606 #endif
608 #endif
610 #include <poppack.h>
612 #endif /* __WINE_MMREG_H */
614 #else /* __WIDL__ */
616 cpp_quote("#if 0")
617 #pragma pack(push, 1)
619 typedef struct tWAVEFORMATEX {
620 WORD wFormatTag;
621 WORD nChannels;
622 DWORD nSamplesPerSec;
623 DWORD nAvgBytesPerSec;
624 WORD nBlockAlign;
625 WORD wBitsPerSample;
626 WORD cbSize;
627 [size_is(cbSize)] BYTE pExtraBytes[];
628 } WAVEFORMATEX, *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX;
630 typedef struct {
631 WORD wFormatTag;
632 WORD nChannels;
633 DWORD nSamplesPerSec;
634 DWORD nAvgBytesPerSec;
635 WORD nBlockAlign;
636 WORD wBitsPerSample;
637 WORD cbSize;
638 WORD wValidBitsPerSample;
639 DWORD dwChannelMask;
640 GUID SubFormat;
641 } WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
643 #pragma pack(pop)
644 cpp_quote("#endif")
646 #endif /* __WIDL__ */