xref: /reactos/sdk/include/psdk/mmreg.h (revision dc0774d8)
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20 
21 #ifndef __WIDL__
22 
23 #ifndef __WINE_MMREG_H
24 #define __WINE_MMREG_H
25 
26 #ifndef RC_INVOKED
27 #include <pshpack1.h>
28 #endif
29 
30 
31 /***********************************************************************
32  * Defines/Enums
33  */
34 
35 #define  MM_MSFT_WDMAUDIO_WAVEOUT 0x64
36 #define  MM_MSFT_WDMAUDIO_WAVEIN 0x65
37 #define  MM_MSFT_WDMAUDIO_MIDIOUT 0x66
38 #define  MM_MSFT_WDMAUDIO_MIDIIN 0x67
39 #define  MM_MSFT_WDMAUDIO_MIXER 0x68
40 #define  MM_MSFT_WDMAUDIO_AUX 0x69
41 
42 #ifndef _ACM_WAVEFILTER
43 #define _ACM_WAVEFILTER
44 
45 #define WAVE_FILTER_UNKNOWN     0x0000
46 #define WAVE_FILTER_DEVELOPMENT 0xFFFF
47 
48 typedef struct _WAVEFILTER {
49   DWORD   cbStruct;
50   DWORD   dwFilterTag;
51   DWORD   fdwFilter;
52   DWORD   dwReserved[5];
53 } WAVEFILTER, *PWAVEFILTER, *NPWAVEFILTER, *LPWAVEFILTER;
54 #endif /* _ACM_WAVEFILTER */
55 
56 #ifndef WAVE_FILTER_VOLUME
57 #define WAVE_FILTER_VOLUME      0x0001
58 
59 typedef struct _WAVEFILTER_VOLUME {
60    WAVEFILTER      wfltr;
61    DWORD           dwVolume;
62 } VOLUMEWAVEFILTER, *PVOLUMEWAVEFILTER, *NPVOLUMEWAVEFILTER, *LPVOLUMEWAVEFILTER;
63 #endif  /* WAVE_FILTER_VOLUME */
64 
65 #ifndef WAVE_FILTER_ECHO
66 #define WAVE_FILTER_ECHO        0x0002
67 
68 typedef struct WAVEFILTER_ECHO {
69    WAVEFILTER      wfltr;
70    DWORD           dwVolume;
71    DWORD           dwDelay;
72 } ECHOWAVEFILTER, *PECHOWAVEFILTER, *NPECHOWAVEFILTER, *LPECHOWAVEFILTER;
73 #endif  /* WAVEFILTER_ECHO */
74 
75 #ifndef _WAVEFORMATEX_
76 #define _WAVEFORMATEX_
77 typedef struct _WAVEFORMATEX {
78   WORD   wFormatTag;
79   WORD   nChannels;
80   DWORD  nSamplesPerSec;
81   DWORD  nAvgBytesPerSec;
82   WORD   nBlockAlign;
83   WORD   wBitsPerSample;
84   WORD   cbSize;
85 } WAVEFORMATEX, *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX;
86 
87 typedef const struct _WAVEFORMATEX *LPCWAVEFORMATEX;
88 #endif /* _WAVEFORMATEX_ */
89 
90 #ifndef WAVE_FORMAT_PCM
91 #define WAVE_FORMAT_PCM					0x0001
92 #endif
93 
94 /* WAVE form wFormatTag IDs */
95 #define  WAVE_FORMAT_UNKNOWN			0x0000	/*  Microsoft Corporation  */
96 #define  WAVE_FORMAT_ADPCM			0x0002	/*  Microsoft Corporation  */
97 #define  WAVE_FORMAT_IEEE_FLOAT			0x0003	/*  Microsoft Corporation  */
98 #define  WAVE_FORMAT_IBM_CVSD			0x0005	/*  IBM Corporation  */
99 #define  WAVE_FORMAT_ALAW			0x0006	/*  Microsoft Corporation  */
100 #define  WAVE_FORMAT_MULAW			0x0007	/*  Microsoft Corporation  */
101 #define  WAVE_FORMAT_OKI_ADPCM			0x0010	/*  OKI  */
102 #define  WAVE_FORMAT_DVI_ADPCM			0x0011	/*  Intel Corporation  */
103 #define  WAVE_FORMAT_IMA_ADPCM			(WAVE_FORMAT_DVI_ADPCM)	/*  Intel Corporation  */
104 #define  WAVE_FORMAT_MEDIASPACE_ADPCM		0x0012	/*  Videologic  */
105 #define  WAVE_FORMAT_SIERRA_ADPCM		0x0013	/*  Sierra Semiconductor Corp  */
106 #define  WAVE_FORMAT_G723_ADPCM			0x0014	/*  Antex Electronics Corporation  */
107 #define  WAVE_FORMAT_DIGISTD			0x0015	/*  DSP Solutions, Inc.  */
108 #define  WAVE_FORMAT_DIGIFIX			0x0016	/*  DSP Solutions, Inc.  */
109 #define  WAVE_FORMAT_DIALOGIC_OKI_ADPCM		0x0017	/*  Dialogic Corporation  */
110 #define  WAVE_FORMAT_YAMAHA_ADPCM		0x0020	/*  Yamaha Corporation of America  */
111 #define  WAVE_FORMAT_SONARC			0x0021	/*  Speech Compression  */
112 #define  WAVE_FORMAT_DSPGROUP_TRUESPEECH	0x0022	/*  DSP Group, Inc  */
113 #define  WAVE_FORMAT_ECHOSC1			0x0023	/*  Echo Speech Corporation  */
114 #define  WAVE_FORMAT_AUDIOFILE_AF36		0x0024	/*    */
115 #define  WAVE_FORMAT_APTX			0x0025	/*  Audio Processing Technology  */
116 #define  WAVE_FORMAT_AUDIOFILE_AF10		0x0026	/*    */
117 #define  WAVE_FORMAT_DOLBY_AC2			0x0030	/*  Dolby Laboratories  */
118 #define  WAVE_FORMAT_GSM610			0x0031	/*  Microsoft Corporation  */
119 #define  WAVE_FORMAT_ANTEX_ADPCME		0x0033	/*  Antex Electronics Corporation  */
120 #define  WAVE_FORMAT_CONTROL_RES_VQLPC		0x0034	/*  Control Resources Limited  */
121 #define  WAVE_FORMAT_DIGIREAL			0x0035	/*  DSP Solutions, Inc.  */
122 #define  WAVE_FORMAT_DIGIADPCM			0x0036	/*  DSP Solutions, Inc.  */
123 #define  WAVE_FORMAT_CONTROL_RES_CR10		0x0037	/*  Control Resources Limited  */
124 #define  WAVE_FORMAT_NMS_VBXADPCM		0x0038	/*  Natural MicroSystems  */
125 #define  WAVE_FORMAT_G721_ADPCM			0x0040	/*  Antex Electronics Corporation  */
126 #define  WAVE_FORMAT_MPEG			0x0050	/*  Microsoft Corporation  */
127 #define  WAVE_FORMAT_MPEGLAYER3			0x0055
128 #define  WAVE_FORMAT_MSRT24			0x0082  /*  Microsoft Corporation */
129 #define  WAVE_FORMAT_DOLBY_AC3_SPDIF	0x0092 /* Sonic Foundry */
130 #define  WAVE_FORMAT_CREATIVE_ADPCM		0x0200	/*  Creative Labs, Inc  */
131 #define  WAVE_FORMAT_CREATIVE_FASTSPEECH8	0x0202	/*  Creative Labs, Inc  */
132 #define  WAVE_FORMAT_CREATIVE_FASTSPEECH10	0x0203	/*  Creative Labs, Inc  */
133 #define  WAVE_FORMAT_FM_TOWNS_SND		0x0300	/*  Fujitsu Corp.  */
134 #define  WAVE_FORMAT_OLIGSM			0x1000	/*  Ing C. Olivetti & C., S.p.A.  */
135 #define  WAVE_FORMAT_OLIADPCM			0x1001	/*  Ing C. Olivetti & C., S.p.A.  */
136 #define  WAVE_FORMAT_OLICELP			0x1002	/*  Ing C. Olivetti & C., S.p.A.  */
137 #define  WAVE_FORMAT_OLISBC			0x1003	/*  Ing C. Olivetti & C., S.p.A.  */
138 #define  WAVE_FORMAT_OLIOPR			0x1004	/*  Ing C. Olivetti & C., S.p.A.  */
139 
140 #define   MM_UNMAPPED                   0xffff
141 #define   MM_PID_UNMAPPED               MM_UNMAPPED
142 
143 #ifndef MM_MICROSOFT
144 #define MM_MICROSOFT 0x01
145 #endif
146 #define MM_MSFT_ACM_MSADPCM 0x21
147 #define MM_MSFT_ACM_IMAADPCM 0x22
148 #define MM_MSFT_ACM_GSM610 0x24
149 #define MM_MSFT_ACM_G711 0x25
150 #define MM_MSFT_ACM_PCM 0x26
151 
152 #define MM_FRAUNHOFER_IIS 0xAC
153 #define MM_FHGIIS_MPEGLAYER3_DECODE 0x09
154 #define MM_FHGIIS_MPEGLAYER3_PROFESSIONAL 0x0d
155 
156 #if !defined(WAVE_FORMAT_EXTENSIBLE)
157 #define  WAVE_FORMAT_EXTENSIBLE			0xFFFE  /* Microsoft */
158 #endif
159 
160 #define WAVE_FORMAT_DEVELOPMENT         	(0xFFFF)
161 
162 typedef struct adpcmcoef_tag {
163 	short   iCoef1;
164 	short   iCoef2;
165 } ADPCMCOEFSET;
166 typedef ADPCMCOEFSET *PADPCMCOEFSET,
167 	*NPADPCMCOEFSET, *LPADPCMCOEFSET;
168 
169 typedef struct adpcmwaveformat_tag {
170 	WAVEFORMATEX    wfx;
171 	WORD            wSamplesPerBlock;
172 	WORD            wNumCoef;
173 	/* FIXME: this should be aCoef[0] */
174 	ADPCMCOEFSET    aCoef[1];
175 } ADPCMWAVEFORMAT;
176 typedef ADPCMWAVEFORMAT *PADPCMWAVEFORMAT,
177 	*NPADPCMWAVEFORMAT, *LPADPCMWAVEFORMAT;
178 
179 typedef struct dvi_adpcmwaveformat_tag {
180 	WAVEFORMATEX    wfx;
181 	WORD            wSamplesPerBlock;
182 } DVIADPCMWAVEFORMAT;
183 typedef DVIADPCMWAVEFORMAT *PDVIADPCMWAVEFORMAT,
184 	*NPDVIADPCMWAVEFORMAT, *LPDVIADPCMWAVEFORMAT;
185 
186 typedef struct ima_adpcmwaveformat_tag {
187 	WAVEFORMATEX    wfx;
188 	WORD            wSamplesPerBlock;
189 } IMAADPCMWAVEFORMAT;
190 typedef IMAADPCMWAVEFORMAT *PIMAADPCMWAVEFORMAT, *NPIMAADPCMWAVEFORMAT,
191 	*LPIMAADPCMWAVEFORMAT;
192 
193 typedef struct mediaspace_adpcmwaveformat_tag {
194 	WAVEFORMATEX    wfx;
195 	WORD            wRevision;
196 } MEDIASPACEADPCMWAVEFORMAT;
197 typedef MEDIASPACEADPCMWAVEFORMAT *PMEDIASPACEADPCMWAVEFORMAT,
198 	*NPMEDIASPACEADPCMWAVEFORMAT, *LPMEDIASPACEADPCMWAVEFORMAT;
199 
200 typedef struct sierra_adpcmwaveformat_tag {
201 	WAVEFORMATEX    wfx;
202 	WORD            wRevision;
203 } SIERRAADPCMWAVEFORMAT;
204 typedef SIERRAADPCMWAVEFORMAT *PSIERRAADPCMWAVEFORMAT,
205 	*NPSIERRAADPCMWAVEFORMAT, *LPSIERRAADPCMWAVEFORMAT;
206 
207 typedef struct g723_adpcmwaveformat_tag {
208 	WAVEFORMATEX    wfx;
209 	WORD            cbExtraSize;
210 	WORD            nAuxBlockSize;
211 } G723_ADPCMWAVEFORMAT;
212 typedef G723_ADPCMWAVEFORMAT *PG723_ADPCMWAVEFORMAT,
213 	*NPG723_ADPCMWAVEFORMAT, *LPG723_ADPCMWAVEFORMAT;
214 
215 typedef struct digistdwaveformat_tag {
216 	WAVEFORMATEX    wfx;
217 } DIGISTDWAVEFORMAT;
218 typedef DIGISTDWAVEFORMAT *PDIGISTDWAVEFORMAT,
219 	*NPDIGISTDWAVEFORMAT, *LPDIGISTDWAVEFORMAT;
220 
221 typedef struct digifixwaveformat_tag {
222 	WAVEFORMATEX    wfx;
223 } DIGIFIXWAVEFORMAT;
224 typedef DIGIFIXWAVEFORMAT *PDIGIFIXWAVEFORMAT,
225 	*NPDIGIFIXWAVEFORMAT, *LPDIGIFIXWAVEFORMAT;
226 
227 typedef struct creative_fastspeechformat_tag {
228 	WAVEFORMATEX    ewf;
229 } DIALOGICOKIADPCMWAVEFORMAT;
230 typedef DIALOGICOKIADPCMWAVEFORMAT *PDIALOGICOKIADPCMWAVEFORMAT,
231 	*NPDIALOGICOKIADPCMWAVEFORMAT, *LPDIALOGICOKIADPCMWAVEFORMAT;
232 
233 typedef struct yamaha_adpmcwaveformat_tag {
234 	WAVEFORMATEX    wfx;
235 } YAMAHA_ADPCMWAVEFORMAT;
236 typedef YAMAHA_ADPCMWAVEFORMAT *PYAMAHA_ADPCMWAVEFORMAT,
237 	*NPYAMAHA_ADPCMWAVEFORMAT, *LPYAMAHA_ADPCMWAVEFORMAT;
238 
239 typedef struct sonarcwaveformat_tag {
240 	WAVEFORMATEX    wfx;
241 	WORD            wCompType;
242 } SONARCWAVEFORMAT;
243 typedef SONARCWAVEFORMAT *PSONARCWAVEFORMAT,
244 	*NPSONARCWAVEFORMAT,*LPSONARCWAVEFORMAT;
245 
246 typedef struct truespeechwaveformat_tag {
247 	WAVEFORMATEX    wfx;
248 	WORD            wRevision;
249 	WORD            nSamplesPerBlock;
250 	BYTE            abReserved[28];
251 } TRUESPEECHWAVEFORMAT;
252 typedef TRUESPEECHWAVEFORMAT *PTRUESPEECHWAVEFORMAT,
253 	*NPTRUESPEECHWAVEFORMAT, *LPTRUESPEECHWAVEFORMAT;
254 
255 typedef struct echosc1waveformat_tag {
256 	WAVEFORMATEX    wfx;
257 } ECHOSC1WAVEFORMAT;
258 typedef ECHOSC1WAVEFORMAT *PECHOSC1WAVEFORMAT,
259 	*NPECHOSC1WAVEFORMAT, *LPECHOSC1WAVEFORMAT;
260 
261 typedef struct audiofile_af36waveformat_tag {
262 	WAVEFORMATEX    wfx;
263 } AUDIOFILE_AF36WAVEFORMAT;
264 typedef AUDIOFILE_AF36WAVEFORMAT *PAUDIOFILE_AF36WAVEFORMAT,
265 	*NPAUDIOFILE_AF36WAVEFORMAT, *LPAUDIOFILE_AF36WAVEFORMAT;
266 
267 typedef struct aptxwaveformat_tag {
268 	WAVEFORMATEX    wfx;
269 } APTXWAVEFORMAT;
270 typedef APTXWAVEFORMAT *PAPTXWAVEFORMAT,
271 	*NPAPTXWAVEFORMAT, *LPAPTXWAVEFORMAT;
272 
273 typedef struct audiofile_af10waveformat_tag {
274 	WAVEFORMATEX    wfx;
275 } AUDIOFILE_AF10WAVEFORMAT;
276 typedef AUDIOFILE_AF10WAVEFORMAT *PAUDIOFILE_AF10WAVEFORMAT,
277 	*NPAUDIOFILE_AF10WAVEFORMAT,  *LPAUDIOFILE_AF10WAVEFORMAT;
278 
279 typedef struct dolbyac2waveformat_tag {
280 	WAVEFORMATEX    wfx;
281 	WORD            nAuxBitsCode;
282 } DOLBYAC2WAVEFORMAT;
283 
284 typedef struct gsm610waveformat_tag {
285 	WAVEFORMATEX    wfx;
286 	WORD            wSamplesPerBlock;
287 } GSM610WAVEFORMAT;
288 typedef GSM610WAVEFORMAT *PGSM610WAVEFORMAT,
289 	*NPGSM610WAVEFORMAT, *LPGSM610WAVEFORMAT;
290 
291 typedef struct adpcmewaveformat_tag {
292 	WAVEFORMATEX    wfx;
293 	WORD            wSamplesPerBlock;
294 } ADPCMEWAVEFORMAT;
295 typedef ADPCMEWAVEFORMAT *PADPCMEWAVEFORMAT,
296 	*NPADPCMEWAVEFORMAT, *LPADPCMEWAVEFORMAT;
297 
298 typedef struct contres_vqlpcwaveformat_tag {
299 	WAVEFORMATEX    wfx;
300 	WORD            wSamplesPerBlock;
301 } CONTRESVQLPCWAVEFORMAT;
302 typedef CONTRESVQLPCWAVEFORMAT *PCONTRESVQLPCWAVEFORMAT,
303 	*NPCONTRESVQLPCWAVEFORMAT, *LPCONTRESVQLPCWAVEFORMAT;
304 
305 typedef struct digirealwaveformat_tag {
306 	WAVEFORMATEX    wfx;
307 	WORD            wSamplesPerBlock;
308 } DIGIREALWAVEFORMAT;
309 typedef DIGIREALWAVEFORMAT *PDIGIREALWAVEFORMAT,
310 	*NPDIGIREALWAVEFORMAT, *LPDIGIREALWAVEFORMAT;
311 
312 typedef struct digiadpcmmwaveformat_tag {
313 	WAVEFORMATEX    wfx;
314 	WORD            wSamplesPerBlock;
315 } DIGIADPCMWAVEFORMAT;
316 typedef DIGIADPCMWAVEFORMAT *PDIGIADPCMWAVEFORMAT,
317 	*NPDIGIADPCMWAVEFORMAT, *LPDIGIADPCMWAVEFORMAT;
318 
319 typedef struct contres_cr10waveformat_tag {
320 	WAVEFORMATEX    wfx;
321 	WORD            wSamplesPerBlock;
322 } CONTRESCR10WAVEFORMAT;
323 typedef CONTRESCR10WAVEFORMAT *PCONTRESCR10WAVEFORMAT,
324 	*NPCONTRESCR10WAVEFORMAT, *LPCONTRESCR10WAVEFORMAT;
325 
326 typedef struct nms_vbxadpcmmwaveformat_tag {
327 	WAVEFORMATEX    wfx;
328 	WORD            wSamplesPerBlock;
329 } NMS_VBXADPCMWAVEFORMAT;
330 typedef NMS_VBXADPCMWAVEFORMAT *PNMS_VBXADPCMWAVEFORMAT,
331 	*NPNMS_VBXADPCMWAVEFORMAT, *LPNMS_VBXADPCMWAVEFORMAT;
332 
333 typedef struct g721_adpcmwaveformat_tag {
334 	WAVEFORMATEX    wfx;
335 	WORD            nAuxBlockSize;
336 } G721_ADPCMWAVEFORMAT;
337 typedef G721_ADPCMWAVEFORMAT *PG721_ADPCMWAVEFORMAT,
338 	*NG721_ADPCMWAVEFORMAT, *LPG721_ADPCMWAVEFORMAT;
339 
340 typedef struct creative_adpcmwaveformat_tag {
341 	WAVEFORMATEX    wfx;
342 	WORD            wRevision;
343 } CREATIVEADPCMWAVEFORMAT;
344 typedef CREATIVEADPCMWAVEFORMAT *PCREATIVEADPCMWAVEFORMAT,
345 	*NPCREATIVEADPCMWAVEFORMAT, *LPCREATIVEADPCMWAVEFORMAT;
346 
347 typedef struct creative_fastspeech8format_tag {
348 	WAVEFORMATEX    wfx;
349 	WORD wRevision;
350 } CREATIVEFASTSPEECH8WAVEFORMAT;
351 typedef CREATIVEFASTSPEECH8WAVEFORMAT *PCREATIVEFASTSPEECH8WAVEFORMAT,
352 	*NPCREATIVEFASTSPEECH8WAVEFORMAT, *LPCREATIVEFASTSPEECH8WAVEFORMAT;
353 
354 typedef struct creative_fastspeech10format_tag {
355 	WAVEFORMATEX    wfx;
356 	WORD wRevision;
357 } CREATIVEFASTSPEECH10WAVEFORMAT;
358 typedef CREATIVEFASTSPEECH10WAVEFORMAT *PCREATIVEFASTSPEECH10WAVEFORMAT,
359 	*NPCREATIVEFASTSPEECH10WAVEFORMAT, *LPCREATIVEFASTSPEECH10WAVEFORMAT;
360 
361 typedef struct fmtowns_snd_waveformat_tag {
362 	WAVEFORMATEX    wfx;
363 	WORD            wRevision;
364 } FMTOWNS_SND_WAVEFORMAT;
365 typedef FMTOWNS_SND_WAVEFORMAT *PFMTOWNS_SND_WAVEFORMAT,
366 	*NPFMTOWNS_SND_WAVEFORMAT, *LPFMTOWNS_SND_WAVEFORMAT;
367 
368 typedef struct oligsmwaveformat_tag {
369 	WAVEFORMATEX    wfx;
370 } OLIGSMWAVEFORMAT;
371 typedef OLIGSMWAVEFORMAT *POLIGSMWAVEFORMAT,
372 	*NPOLIGSMWAVEFORMAT, *LPOLIGSMWAVEFORMAT;
373 
374 typedef struct oliadpcmwaveformat_tag {
375 	WAVEFORMATEX    wfx;
376 } OLIADPCMWAVEFORMAT;
377 typedef OLIADPCMWAVEFORMAT *POLIADPCMWAVEFORMAT,
378 	*NPOLIADPCMWAVEFORMAT, *LPOLIADPCMWAVEFORMAT;
379 
380 typedef struct olicelpwaveformat_tag {
381 	WAVEFORMATEX    wfx;
382 } OLICELPWAVEFORMAT;
383 typedef OLICELPWAVEFORMAT *POLICELPWAVEFORMAT,
384 	*NPOLICELPWAVEFORMAT, *LPOLICELPWAVEFORMAT;
385 
386 typedef struct olisbcwaveformat_tag {
387 	WAVEFORMATEX    wfx;
388 } OLISBCWAVEFORMAT;
389 typedef OLISBCWAVEFORMAT *POLISBCWAVEFORMAT,
390 	*NPOLISBCWAVEFORMAT, *LPOLISBCWAVEFORMAT;
391 
392 typedef struct olioprwaveformat_tag {
393 	WAVEFORMATEX    wfx;
394 } OLIOPRWAVEFORMAT;
395 typedef OLIOPRWAVEFORMAT *POLIOPRWAVEFORMAT,
396 	*NPOLIOPRWAVEFORMAT, *LPOLIOPRWAVEFORMAT;
397 
398 typedef struct csimaadpcmwaveformat_tag {
399 	WAVEFORMATEX    wfx;
400 } CSIMAADPCMWAVEFORMAT;
401 typedef CSIMAADPCMWAVEFORMAT *PCSIMAADPCMWAVEFORMAT,
402 	*NPCSIMAADPCMWAVEFORMAT, *LPCSIMAADPCMWAVEFORMAT;
403 
404 typedef struct mpeg1waveformat_tag {
405 	WAVEFORMATEX	wfx;
406 	WORD		fwHeadLayer;
407 	DWORD		dwHeadBitrate;
408 	WORD		fwHeadMode;
409 	WORD		fwHeadModeExt;
410 	WORD		wHeadEmphasis;
411 	WORD		fwHeadFlags;
412 	DWORD		dwPTSLow;
413 	DWORD		dwPTSHigh;
414 } MPEG1WAVEFORMAT,* PMPEG1WAVEFORMAT;
415 
416 #define	ACM_MPEG_LAYER1		0x0001
417 #define	ACM_MPEG_LAYER2		0x0002
418 #define	ACM_MPEG_LAYER3		0x0004
419 
420 #define	ACM_MPEG_STEREO		0x0001
421 #define	ACM_MPEG_JOINTSTEREO	0x0002
422 #define	ACM_MPEG_DUALCHANNEL	0x0004
423 #define	ACM_MPEG_SINGLECHANNEL	0x0008
424 #define	ACM_MPEG_PRIVATEBIT	0x0001
425 #define	ACM_MPEG_COPYRIGHT	0x0002
426 #define	ACM_MPEG_ORIGINALHOME	0x0004
427 #define	ACM_MPEG_PROTECTIONBIT	0x0008
428 #define	ACM_MPEG_ID_MPEG1	0x0010
429 
430 typedef struct mpeglayer3waveformat_tag {
431 	WAVEFORMATEX	wfx;
432 	WORD		wID;
433 	DWORD		fdwFlags;
434 	WORD		nBlockSize;
435 	WORD		nFramesPerBlock;
436 	WORD		nCodecDelay;
437 } MPEGLAYER3WAVEFORMAT;
438 
439 #define MPEGLAYER3_WFX_EXTRA_BYTES   12
440 
441 #define MPEGLAYER3_ID_UNKNOWN           0
442 #define MPEGLAYER3_ID_MPEG		1
443 #define MPEGLAYER3_ID_CONSTANTFRAMESIZE	2
444 
445 #define MPEGLAYER3_FLAG_PADDING_ISO	0x00000000
446 #define MPEGLAYER3_FLAG_PADDING_ON	0x00000001
447 #define MPEGLAYER3_FLAG_PADDING_OFF	0x00000002
448 
449 #ifdef GUID_DEFINED
450 
451 #ifndef _WAVEFORMATEXTENSIBLE_
452 #define _WAVEFORMATEXTENSIBLE_
453 typedef struct {
454     WAVEFORMATEX    Format;
455     union {
456         WORD        wValidBitsPerSample;
457         WORD        wSamplesPerBlock;
458         WORD        wReserved;
459     } Samples;
460     DWORD           dwChannelMask;
461     GUID            SubFormat;
462 } WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
463 #endif /* _WAVEFORMATEXTENSIBLE_ */
464 
465 #endif /* GUID_DEFINED */
466 
467 typedef WAVEFORMATEXTENSIBLE    WAVEFORMATPCMEX;
468 typedef WAVEFORMATPCMEX*        PWAVEFORMATPCMEX;
469 typedef WAVEFORMATPCMEX*        NPWAVEFORMATPCMEX;
470 typedef WAVEFORMATPCMEX*        LPWAVEFORMATPCMEX;
471 
472 typedef WAVEFORMATEXTENSIBLE    WAVEFORMATIEEEFLOATEX;
473 typedef WAVEFORMATIEEEFLOATEX*  PWAVEFORMATIEEEFLOATEX;
474 typedef WAVEFORMATIEEEFLOATEX*  NPWAVEFORMATIEEEFLOATEX;
475 typedef WAVEFORMATIEEEFLOATEX*  LPWAVEFORMATIEEEFLOATEX;
476 
477 #ifndef _SPEAKER_POSITIONS_
478 #define _SPEAKER_POSITIONS_
479 
480 #define SPEAKER_FRONT_LEFT              0x00000001
481 #define SPEAKER_FRONT_RIGHT             0x00000002
482 #define SPEAKER_FRONT_CENTER            0x00000004
483 #define SPEAKER_LOW_FREQUENCY           0x00000008
484 #define SPEAKER_BACK_LEFT               0x00000010
485 #define SPEAKER_BACK_RIGHT              0x00000020
486 #define SPEAKER_FRONT_LEFT_OF_CENTER    0x00000040
487 #define SPEAKER_FRONT_RIGHT_OF_CENTER   0x00000080
488 #define SPEAKER_BACK_CENTER             0x00000100
489 #define SPEAKER_SIDE_LEFT               0x00000200
490 #define SPEAKER_SIDE_RIGHT              0x00000400
491 #define SPEAKER_TOP_CENTER              0x00000800
492 #define SPEAKER_TOP_FRONT_LEFT          0x00001000
493 #define SPEAKER_TOP_FRONT_CENTER        0x00002000
494 #define SPEAKER_TOP_FRONT_RIGHT         0x00004000
495 #define SPEAKER_TOP_BACK_LEFT           0x00008000
496 #define SPEAKER_TOP_BACK_CENTER         0x00010000
497 #define SPEAKER_TOP_BACK_RIGHT          0x00020000
498 #define SPEAKER_RESERVED                0x7FFC0000
499 #define SPEAKER_ALL                     0x80000000
500 
501 #endif /* _SPEAKER_POSITIONS_ */
502 
503 
504 /* DIB stuff */
505 
506 #ifndef BI_BITFIELDS
507 #define BI_BITFIELDS     3
508 #endif
509 
510 #ifndef QUERYDIBSUPPORT
511 #define	QUERYDIBSUPPORT		3073
512 #define	QDI_SETDIBITS		1
513 #define	QDI_GETDIBITS		2
514 #define	QDI_DIBTOSCREEN		4
515 #define	QDI_STRETCHDIB		8
516 #endif
517 
518 #ifndef NOBITMAP
519 typedef struct tagEXBMINFOHEADER {
520     BITMAPINFOHEADER bmi;
521     DWORD biExtDataOffset;
522 } EXBMINFOHEADER;
523 #endif
524 
525 
526 /* Video stuff */
527 
528 #ifndef NONEWIC
529 
530 #ifndef ICTYPE_VIDEO
531 #define ICTYPE_VIDEO		mmioFOURCC('v', 'i', 'd', 'c')
532 #define ICTYPE_AUDIO		mmioFOURCC('a', 'u', 'd', 'c')
533 #endif
534 
535 #endif
536 
537 #ifndef RC_INVOKED
538 #include <poppack.h>
539 #endif
540 
541 #endif /* __WINE_MMREG_H */
542 
543 #else /* __WIDL__ */
544 
545 cpp_quote("#if 0")
546 #pragma pack(push, 1)
547 
548 typedef struct tWAVEFORMATEX {
549     WORD wFormatTag;
550     WORD nChannels;
551     DWORD nSamplesPerSec;
552     DWORD nAvgBytesPerSec;
553     WORD nBlockAlign;
554     WORD wBitsPerSample;
555     WORD cbSize;
556     [size_is(cbSize)] BYTE pExtraBytes[];
557 } WAVEFORMATEX, *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX;
558 
559 typedef struct {
560     WORD wFormatTag;
561     WORD nChannels;
562     DWORD nSamplesPerSec;
563     DWORD nAvgBytesPerSec;
564     WORD nBlockAlign;
565     WORD wBitsPerSample;
566     WORD cbSize;
567     WORD wValidBitsPerSample;
568     DWORD dwChannelMask;
569     GUID SubFormat;
570 } WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
571 
572 #pragma pack(pop)
573 cpp_quote("#endif")
574 
575 #endif /* __WIDL__ */
576