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