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