dsound: Reimplement capturing devices on mmdevapi.
[wine] / include / 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, 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_IEEE_FLOAT                 0x0003  /*  Microsoft Corporation  */
78 #define  WAVE_FORMAT_IBM_CVSD                   0x0005  /*  IBM Corporation  */
79 #define  WAVE_FORMAT_ALAW                       0x0006  /*  Microsoft Corporation  */
80 #define  WAVE_FORMAT_MULAW                      0x0007  /*  Microsoft Corporation  */
81 #define  WAVE_FORMAT_OKI_ADPCM                  0x0010  /*  OKI  */
82 #define  WAVE_FORMAT_DVI_ADPCM                  0x0011  /*  Intel Corporation  */
83 #define  WAVE_FORMAT_IMA_ADPCM                  (WAVE_FORMAT_DVI_ADPCM) /*  Intel Corporation  */
84 #define  WAVE_FORMAT_MEDIASPACE_ADPCM           0x0012  /*  Videologic  */
85 #define  WAVE_FORMAT_SIERRA_ADPCM               0x0013  /*  Sierra Semiconductor Corp  */
86 #define  WAVE_FORMAT_G723_ADPCM                 0x0014  /*  Antex Electronics Corporation  */
87 #define  WAVE_FORMAT_DIGISTD                    0x0015  /*  DSP Solutions, Inc.  */
88 #define  WAVE_FORMAT_DIGIFIX                    0x0016  /*  DSP Solutions, Inc.  */
89 #define  WAVE_FORMAT_DIALOGIC_OKI_ADPCM         0x0017  /*  Dialogic Corporation  */
90 #define  WAVE_FORMAT_YAMAHA_ADPCM               0x0020  /*  Yamaha Corporation of America  */
91 #define  WAVE_FORMAT_SONARC                     0x0021  /*  Speech Compression  */
92 #define  WAVE_FORMAT_DSPGROUP_TRUESPEECH        0x0022  /*  DSP Group, Inc  */
93 #define  WAVE_FORMAT_ECHOSC1                    0x0023  /*  Echo Speech Corporation  */
94 #define  WAVE_FORMAT_AUDIOFILE_AF36             0x0024  /*    */
95 #define  WAVE_FORMAT_APTX                       0x0025  /*  Audio Processing Technology  */
96 #define  WAVE_FORMAT_AUDIOFILE_AF10             0x0026  /*    */
97 #define  WAVE_FORMAT_DOLBY_AC2                  0x0030  /*  Dolby Laboratories  */
98 #define  WAVE_FORMAT_GSM610                     0x0031  /*  Microsoft Corporation  */
99 #define  WAVE_FORMAT_ANTEX_ADPCME               0x0033  /*  Antex Electronics Corporation  */
100 #define  WAVE_FORMAT_CONTROL_RES_VQLPC          0x0034  /*  Control Resources Limited  */
101 #define  WAVE_FORMAT_DIGIREAL                   0x0035  /*  DSP Solutions, Inc.  */
102 #define  WAVE_FORMAT_DIGIADPCM                  0x0036  /*  DSP Solutions, Inc.  */
103 #define  WAVE_FORMAT_CONTROL_RES_CR10           0x0037  /*  Control Resources Limited  */
104 #define  WAVE_FORMAT_NMS_VBXADPCM               0x0038  /*  Natural MicroSystems  */
105 #define  WAVE_FORMAT_G721_ADPCM                 0x0040  /*  Antex Electronics Corporation  */
106 #define  WAVE_FORMAT_MPEG                       0x0050  /*  Microsoft Corporation  */
107 #define  WAVE_FORMAT_MPEGLAYER3                 0x0055
108 #define  WAVE_FORMAT_CREATIVE_ADPCM             0x0200  /*  Creative Labs, Inc  */
109 #define  WAVE_FORMAT_CREATIVE_FASTSPEECH8       0x0202  /*  Creative Labs, Inc  */
110 #define  WAVE_FORMAT_CREATIVE_FASTSPEECH10      0x0203  /*  Creative Labs, Inc  */
111 #define  WAVE_FORMAT_FM_TOWNS_SND               0x0300  /*  Fujitsu Corp.  */
112 #define  WAVE_FORMAT_OLIGSM                     0x1000  /*  Ing C. Olivetti & C., S.p.A.  */
113 #define  WAVE_FORMAT_OLIADPCM                   0x1001  /*  Ing C. Olivetti & C., S.p.A.  */
114 #define  WAVE_FORMAT_OLICELP                    0x1002  /*  Ing C. Olivetti & C., S.p.A.  */
115 #define  WAVE_FORMAT_OLISBC                     0x1003  /*  Ing C. Olivetti & C., S.p.A.  */
116 #define  WAVE_FORMAT_OLIOPR                     0x1004  /*  Ing C. Olivetti & C., S.p.A.  */
117
118 #if !defined(WAVE_FORMAT_EXTENSIBLE)
119 #define  WAVE_FORMAT_EXTENSIBLE                 0xFFFE  /* Microsoft */
120 #endif
121
122 #define WAVE_FORMAT_DEVELOPMENT                 (0xFFFF)
123
124 typedef struct adpcmcoef_tag {
125         short   iCoef1;
126         short   iCoef2;
127 } ADPCMCOEFSET;
128 typedef ADPCMCOEFSET *PADPCMCOEFSET,
129         *NPADPCMCOEFSET, *LPADPCMCOEFSET;
130
131 typedef struct adpcmwaveformat_tag {
132         WAVEFORMATEX    wfx;
133         WORD            wSamplesPerBlock;
134         WORD            wNumCoef;
135         /* FIXME: this should be aCoef[0] */
136         ADPCMCOEFSET    aCoef[1];
137 } ADPCMWAVEFORMAT;
138 typedef ADPCMWAVEFORMAT *PADPCMWAVEFORMAT,
139         *NPADPCMWAVEFORMAT, *LPADPCMWAVEFORMAT;
140
141 typedef struct dvi_adpcmwaveformat_tag {
142         WAVEFORMATEX    wfx;
143         WORD            wSamplesPerBlock;
144 } DVIADPCMWAVEFORMAT;
145 typedef DVIADPCMWAVEFORMAT *PDVIADPCMWAVEFORMAT,
146         *NPDVIADPCMWAVEFORMAT, *LPDVIADPCMWAVEFORMAT;
147
148 typedef struct ima_adpcmwaveformat_tag {
149         WAVEFORMATEX    wfx;
150         WORD            wSamplesPerBlock;
151 } IMAADPCMWAVEFORMAT;
152 typedef IMAADPCMWAVEFORMAT *PIMAADPCMWAVEFORMAT, *NPIMAADPCMWAVEFORMAT,
153         *LPIMAADPCMWAVEFORMAT;
154
155 typedef struct mediaspace_adpcmwaveformat_tag {
156         WAVEFORMATEX    wfx;
157         WORD            wRevision;
158 } MEDIASPACEADPCMWAVEFORMAT;
159 typedef MEDIASPACEADPCMWAVEFORMAT *PMEDIASPACEADPCMWAVEFORMAT,
160         *NPMEDIASPACEADPCMWAVEFORMAT, *LPMEDIASPACEADPCMWAVEFORMAT;
161
162 typedef struct sierra_adpcmwaveformat_tag {
163         WAVEFORMATEX    wfx;
164         WORD            wRevision;
165 } SIERRAADPCMWAVEFORMAT;
166 typedef SIERRAADPCMWAVEFORMAT *PSIERRAADPCMWAVEFORMAT,
167         *NPSIERRAADPCMWAVEFORMAT, *LPSIERRAADPCMWAVEFORMAT;
168
169 typedef struct g723_adpcmwaveformat_tag {
170         WAVEFORMATEX    wfx;
171         WORD            cbExtraSize;
172         WORD            nAuxBlockSize;
173 } G723_ADPCMWAVEFORMAT;
174 typedef G723_ADPCMWAVEFORMAT *PG723_ADPCMWAVEFORMAT,
175         *NPG723_ADPCMWAVEFORMAT, *LPG723_ADPCMWAVEFORMAT;
176
177 typedef struct digistdwaveformat_tag {
178         WAVEFORMATEX    wfx;
179 } DIGISTDWAVEFORMAT;
180 typedef DIGISTDWAVEFORMAT *PDIGISTDWAVEFORMAT,
181         *NPDIGISTDWAVEFORMAT, *LPDIGISTDWAVEFORMAT;
182
183 typedef struct digifixwaveformat_tag {
184         WAVEFORMATEX    wfx;
185 } DIGIFIXWAVEFORMAT;
186 typedef DIGIFIXWAVEFORMAT *PDIGIFIXWAVEFORMAT,
187         *NPDIGIFIXWAVEFORMAT, *LPDIGIFIXWAVEFORMAT;
188
189 typedef struct creative_fastspeechformat_tag {
190         WAVEFORMATEX    ewf;
191 } DIALOGICOKIADPCMWAVEFORMAT;
192 typedef DIALOGICOKIADPCMWAVEFORMAT *PDIALOGICOKIADPCMWAVEFORMAT,
193         *NPDIALOGICOKIADPCMWAVEFORMAT, *LPDIALOGICOKIADPCMWAVEFORMAT;
194
195 typedef struct yamaha_adpmcwaveformat_tag {
196         WAVEFORMATEX    wfx;
197 } YAMAHA_ADPCMWAVEFORMAT;
198 typedef YAMAHA_ADPCMWAVEFORMAT *PYAMAHA_ADPCMWAVEFORMAT,
199         *NPYAMAHA_ADPCMWAVEFORMAT, *LPYAMAHA_ADPCMWAVEFORMAT;
200
201 typedef struct sonarcwaveformat_tag {
202         WAVEFORMATEX    wfx;
203         WORD            wCompType;
204 } SONARCWAVEFORMAT;
205 typedef SONARCWAVEFORMAT *PSONARCWAVEFORMAT,
206         *NPSONARCWAVEFORMAT,*LPSONARCWAVEFORMAT;
207
208 typedef struct truespeechwaveformat_tag {
209         WAVEFORMATEX    wfx;
210         WORD            wRevision;
211         WORD            nSamplesPerBlock;
212         BYTE            abReserved[28];
213 } TRUESPEECHWAVEFORMAT;
214 typedef TRUESPEECHWAVEFORMAT *PTRUESPEECHWAVEFORMAT,
215         *NPTRUESPEECHWAVEFORMAT, *LPTRUESPEECHWAVEFORMAT;
216
217 typedef struct echosc1waveformat_tag {
218         WAVEFORMATEX    wfx;
219 } ECHOSC1WAVEFORMAT;
220 typedef ECHOSC1WAVEFORMAT *PECHOSC1WAVEFORMAT,
221         *NPECHOSC1WAVEFORMAT, *LPECHOSC1WAVEFORMAT;
222
223 typedef struct audiofile_af36waveformat_tag {
224         WAVEFORMATEX    wfx;
225 } AUDIOFILE_AF36WAVEFORMAT;
226 typedef AUDIOFILE_AF36WAVEFORMAT *PAUDIOFILE_AF36WAVEFORMAT,
227         *NPAUDIOFILE_AF36WAVEFORMAT, *LPAUDIOFILE_AF36WAVEFORMAT;
228
229 typedef struct aptxwaveformat_tag {
230         WAVEFORMATEX    wfx;
231 } APTXWAVEFORMAT;
232 typedef APTXWAVEFORMAT *PAPTXWAVEFORMAT,
233         *NPAPTXWAVEFORMAT, *LPAPTXWAVEFORMAT;
234
235 typedef struct audiofile_af10waveformat_tag {
236         WAVEFORMATEX    wfx;
237 } AUDIOFILE_AF10WAVEFORMAT;
238 typedef AUDIOFILE_AF10WAVEFORMAT *PAUDIOFILE_AF10WAVEFORMAT,
239         *NPAUDIOFILE_AF10WAVEFORMAT,  *LPAUDIOFILE_AF10WAVEFORMAT;
240
241 typedef struct dolbyac2waveformat_tag {
242         WAVEFORMATEX    wfx;
243         WORD            nAuxBitsCode;
244 } DOLBYAC2WAVEFORMAT;
245
246 typedef struct gsm610waveformat_tag {
247         WAVEFORMATEX    wfx;
248         WORD            wSamplesPerBlock;
249 } GSM610WAVEFORMAT;
250 typedef GSM610WAVEFORMAT *PGSM610WAVEFORMAT,
251         *NPGSM610WAVEFORMAT, *LPGSM610WAVEFORMAT;
252
253 typedef struct adpcmewaveformat_tag {
254         WAVEFORMATEX    wfx;
255         WORD            wSamplesPerBlock;
256 } ADPCMEWAVEFORMAT;
257 typedef ADPCMEWAVEFORMAT *PADPCMEWAVEFORMAT,
258         *NPADPCMEWAVEFORMAT, *LPADPCMEWAVEFORMAT;
259
260 typedef struct contres_vqlpcwaveformat_tag {
261         WAVEFORMATEX    wfx;
262         WORD            wSamplesPerBlock;
263 } CONTRESVQLPCWAVEFORMAT;
264 typedef CONTRESVQLPCWAVEFORMAT *PCONTRESVQLPCWAVEFORMAT,
265         *NPCONTRESVQLPCWAVEFORMAT, *LPCONTRESVQLPCWAVEFORMAT;
266
267 typedef struct digirealwaveformat_tag {
268         WAVEFORMATEX    wfx;
269         WORD            wSamplesPerBlock;
270 } DIGIREALWAVEFORMAT;
271 typedef DIGIREALWAVEFORMAT *PDIGIREALWAVEFORMAT,
272         *NPDIGIREALWAVEFORMAT, *LPDIGIREALWAVEFORMAT;
273
274 typedef struct digiadpcmmwaveformat_tag {
275         WAVEFORMATEX    wfx;
276         WORD            wSamplesPerBlock;
277 } DIGIADPCMWAVEFORMAT;
278 typedef DIGIADPCMWAVEFORMAT *PDIGIADPCMWAVEFORMAT,
279         *NPDIGIADPCMWAVEFORMAT, *LPDIGIADPCMWAVEFORMAT;
280
281 typedef struct contres_cr10waveformat_tag {
282         WAVEFORMATEX    wfx;
283         WORD            wSamplesPerBlock;
284 } CONTRESCR10WAVEFORMAT;
285 typedef CONTRESCR10WAVEFORMAT *PCONTRESCR10WAVEFORMAT,
286         *NPCONTRESCR10WAVEFORMAT, *LPCONTRESCR10WAVEFORMAT;
287
288 typedef struct nms_vbxadpcmmwaveformat_tag {
289         WAVEFORMATEX    wfx;
290         WORD            wSamplesPerBlock;
291 } NMS_VBXADPCMWAVEFORMAT;
292 typedef NMS_VBXADPCMWAVEFORMAT *PNMS_VBXADPCMWAVEFORMAT,
293         *NPNMS_VBXADPCMWAVEFORMAT, *LPNMS_VBXADPCMWAVEFORMAT;
294
295 typedef struct g721_adpcmwaveformat_tag {
296         WAVEFORMATEX    wfx;
297         WORD            nAuxBlockSize;
298 } G721_ADPCMWAVEFORMAT;
299 typedef G721_ADPCMWAVEFORMAT *PG721_ADPCMWAVEFORMAT,
300         *NG721_ADPCMWAVEFORMAT, *LPG721_ADPCMWAVEFORMAT;
301
302 typedef struct creative_adpcmwaveformat_tag {
303         WAVEFORMATEX    wfx;
304         WORD            wRevision;
305 } CREATIVEADPCMWAVEFORMAT;
306 typedef CREATIVEADPCMWAVEFORMAT *PCREATIVEADPCMWAVEFORMAT,
307         *NPCREATIVEADPCMWAVEFORMAT, *LPCREATIVEADPCMWAVEFORMAT;
308
309 typedef struct creative_fastspeech8format_tag {
310         WAVEFORMATEX    wfx;
311         WORD wRevision;
312 } CREATIVEFASTSPEECH8WAVEFORMAT;
313 typedef CREATIVEFASTSPEECH8WAVEFORMAT *PCREATIVEFASTSPEECH8WAVEFORMAT,
314         *NPCREATIVEFASTSPEECH8WAVEFORMAT, *LPCREATIVEFASTSPEECH8WAVEFORMAT;
315
316 typedef struct creative_fastspeech10format_tag {
317         WAVEFORMATEX    wfx;
318         WORD wRevision;
319 } CREATIVEFASTSPEECH10WAVEFORMAT;
320 typedef CREATIVEFASTSPEECH10WAVEFORMAT *PCREATIVEFASTSPEECH10WAVEFORMAT,
321         *NPCREATIVEFASTSPEECH10WAVEFORMAT, *LPCREATIVEFASTSPEECH10WAVEFORMAT;
322
323 typedef struct fmtowns_snd_waveformat_tag {
324         WAVEFORMATEX    wfx;
325         WORD            wRevision;
326 } FMTOWNS_SND_WAVEFORMAT;
327 typedef FMTOWNS_SND_WAVEFORMAT *PFMTOWNS_SND_WAVEFORMAT,
328         *NPFMTOWNS_SND_WAVEFORMAT, *LPFMTOWNS_SND_WAVEFORMAT;
329
330 typedef struct oligsmwaveformat_tag {
331         WAVEFORMATEX    wfx;
332 } OLIGSMWAVEFORMAT;
333 typedef OLIGSMWAVEFORMAT *POLIGSMWAVEFORMAT,
334         *NPOLIGSMWAVEFORMAT, *LPOLIGSMWAVEFORMAT;
335
336 typedef struct oliadpcmwaveformat_tag {
337         WAVEFORMATEX    wfx;
338 } OLIADPCMWAVEFORMAT;
339 typedef OLIADPCMWAVEFORMAT *POLIADPCMWAVEFORMAT,
340         *NPOLIADPCMWAVEFORMAT, *LPOLIADPCMWAVEFORMAT;
341
342 typedef struct olicelpwaveformat_tag {
343         WAVEFORMATEX    wfx;
344 } OLICELPWAVEFORMAT;
345 typedef OLICELPWAVEFORMAT *POLICELPWAVEFORMAT,
346         *NPOLICELPWAVEFORMAT, *LPOLICELPWAVEFORMAT;
347
348 typedef struct olisbcwaveformat_tag {
349         WAVEFORMATEX    wfx;
350 } OLISBCWAVEFORMAT;
351 typedef OLISBCWAVEFORMAT *POLISBCWAVEFORMAT,
352         *NPOLISBCWAVEFORMAT, *LPOLISBCWAVEFORMAT;
353
354 typedef struct olioprwaveformat_tag {
355         WAVEFORMATEX    wfx;
356 } OLIOPRWAVEFORMAT;
357 typedef OLIOPRWAVEFORMAT *POLIOPRWAVEFORMAT,
358         *NPOLIOPRWAVEFORMAT, *LPOLIOPRWAVEFORMAT;
359
360 typedef struct csimaadpcmwaveformat_tag {
361         WAVEFORMATEX    wfx;
362 } CSIMAADPCMWAVEFORMAT;
363 typedef CSIMAADPCMWAVEFORMAT *PCSIMAADPCMWAVEFORMAT,
364         *NPCSIMAADPCMWAVEFORMAT, *LPCSIMAADPCMWAVEFORMAT;
365
366 typedef struct mpeg1waveformat_tag {
367         WAVEFORMATEX    wfx;
368         WORD            fwHeadLayer;
369         DWORD           dwHeadBitrate;
370         WORD            fwHeadMode;
371         WORD            fwHeadModeExt;
372         WORD            wHeadEmphasis;
373         WORD            fwHeadFlags;
374         DWORD           dwPTSLow;
375         DWORD           dwPTSHigh;
376 } MPEG1WAVEFORMAT,* PMPEG1WAVEFORMAT;
377
378 #define ACM_MPEG_LAYER1         0x0001
379 #define ACM_MPEG_LAYER2         0x0002
380 #define ACM_MPEG_LAYER3         0x0004
381
382 #define ACM_MPEG_STEREO         0x0001
383 #define ACM_MPEG_JOINTSTEREO    0x0002
384 #define ACM_MPEG_DUALCHANNEL    0x0004
385 #define ACM_MPEG_SINGLECHANNEL  0x0008
386 #define ACM_MPEG_PRIVATEBIT     0x0001
387 #define ACM_MPEG_COPYRIGHT      0x0002
388 #define ACM_MPEG_ORIGINALHOME   0x0004
389 #define ACM_MPEG_PROTECTIONBIT  0x0008
390 #define ACM_MPEG_ID_MPEG1       0x0010
391
392 typedef struct mpeglayer3waveformat_tag {
393         WAVEFORMATEX    wfx;
394         WORD            wID;
395         DWORD           fdwFlags;
396         WORD            nBlockSize;
397         WORD            nFramesPerBlock;
398         WORD            nCodecDelay;
399 } MPEGLAYER3WAVEFORMAT;
400
401 #define MPEGLAYER3_WFX_EXTRA_BYTES   12
402
403 #define MPEGLAYER3_ID_UNKNOWN           0
404 #define MPEGLAYER3_ID_MPEG              1
405 #define MPEGLAYER3_ID_CONSTANTFRAMESIZE 2
406
407 #define MPEGLAYER3_FLAG_PADDING_ISO     0x00000000
408 #define MPEGLAYER3_FLAG_PADDING_ON      0x00000001
409 #define MPEGLAYER3_FLAG_PADDING_OFF     0x00000002
410
411 #ifdef GUID_DEFINED
412
413 #ifndef _WAVEFORMATEXTENSIBLE_
414 #define _WAVEFORMATEXTENSIBLE_
415 typedef struct {
416     WAVEFORMATEX    Format;
417     union {
418         WORD        wValidBitsPerSample;
419         WORD        wSamplesPerBlock;
420         WORD        wReserved;
421     } Samples;
422     DWORD           dwChannelMask;
423     GUID            SubFormat;
424 } WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
425 #endif /* _WAVEFORMATEXTENSIBLE_ */
426
427 #endif /* GUID_DEFINED */
428
429 typedef WAVEFORMATEXTENSIBLE    WAVEFORMATPCMEX;
430 typedef WAVEFORMATPCMEX*        PWAVEFORMATPCMEX;
431 typedef WAVEFORMATPCMEX*        NPWAVEFORMATPCMEX;
432 typedef WAVEFORMATPCMEX*        LPWAVEFORMATPCMEX;
433
434 typedef WAVEFORMATEXTENSIBLE    WAVEFORMATIEEEFLOATEX;
435 typedef WAVEFORMATIEEEFLOATEX*  PWAVEFORMATIEEEFLOATEX;
436 typedef WAVEFORMATIEEEFLOATEX*  NPWAVEFORMATIEEEFLOATEX;
437 typedef WAVEFORMATIEEEFLOATEX*  LPWAVEFORMATIEEEFLOATEX;
438
439 #ifndef _SPEAKER_POSITIONS_
440 #define _SPEAKER_POSITIONS_
441
442 #define SPEAKER_FRONT_LEFT              0x00000001
443 #define SPEAKER_FRONT_RIGHT             0x00000002
444 #define SPEAKER_FRONT_CENTER            0x00000004
445 #define SPEAKER_LOW_FREQUENCY           0x00000008
446 #define SPEAKER_BACK_LEFT               0x00000010
447 #define SPEAKER_BACK_RIGHT              0x00000020
448 #define SPEAKER_FRONT_LEFT_OF_CENTER    0x00000040
449 #define SPEAKER_FRONT_RIGHT_OF_CENTER   0x00000080
450 #define SPEAKER_BACK_CENTER             0x00000100
451 #define SPEAKER_SIDE_LEFT               0x00000200
452 #define SPEAKER_SIDE_RIGHT              0x00000400
453 #define SPEAKER_TOP_CENTER              0x00000800
454 #define SPEAKER_TOP_FRONT_LEFT          0x00001000
455 #define SPEAKER_TOP_FRONT_CENTER        0x00002000
456 #define SPEAKER_TOP_FRONT_RIGHT         0x00004000
457 #define SPEAKER_TOP_BACK_LEFT           0x00008000
458 #define SPEAKER_TOP_BACK_CENTER         0x00010000
459 #define SPEAKER_TOP_BACK_RIGHT          0x00020000
460 #define SPEAKER_RESERVED                0x7FFC0000
461 #define SPEAKER_ALL                     0x80000000
462
463 #endif /* _SPEAKER_POSITIONS_ */
464
465
466 /* DIB stuff */
467
468 #ifndef BI_BITFIELDS
469 #define BI_BITFIELDS     3
470 #endif
471
472 #ifndef QUERYDIBSUPPORT
473 #define QUERYDIBSUPPORT         3073
474 #define QDI_SETDIBITS           1
475 #define QDI_GETDIBITS           2
476 #define QDI_DIBTOSCREEN         4
477 #define QDI_STRETCHDIB          8
478 #endif
479
480 #ifndef NOBITMAP
481 typedef struct tagEXBMINFOHEADER {
482     BITMAPINFOHEADER bmi;
483     DWORD biExtDataOffset;
484 } EXBMINFOHEADER;
485 #endif
486
487
488 /* Video stuff */
489
490 #ifndef NONEWIC
491
492 #ifndef ICTYPE_VIDEO
493 #define ICTYPE_VIDEO            mmioFOURCC('v', 'i', 'd', 'c')
494 #define ICTYPE_AUDIO            mmioFOURCC('a', 'u', 'd', 'c')
495 #endif
496
497 #endif
498
499 #endif /* __WINE_MMREG_H */