Implement CMP_Init_Detection, CMP_Report_LogOn, CM_Setup_DevNode[_Ex] and CM_Uninstal...
[reactos.git] / reactos / include / wine / msacm.h
1 /*
2 * Declarations for MSACM
3 *
4 * Copyright (C) the Wine project
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21 #ifndef __WINE_MSACM_H
22 #define __WINE_MSACM_H
23
24 #include <mmreg.h>
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif /* defined(__cplusplus) */
29
30 #define ACMAPI WINAPI
31
32 /***********************************************************************
33 * Defines/Enums
34 */
35 #define ACMERR_BASE 512
36 #define ACMERR_NOTPOSSIBLE (ACMERR_BASE + 0)
37 #define ACMERR_BUSY (ACMERR_BASE + 1)
38 #define ACMERR_UNPREPARED (ACMERR_BASE + 2)
39 #define ACMERR_CANCELED (ACMERR_BASE + 3)
40
41 #define MM_ACM_OPEN MM_STREAM_OPEN
42 #define MM_ACM_CLOSE MM_STREAM_CLOSE
43 #define MM_ACM_DONE MM_STREAM_DONE
44
45 #define ACM_DRIVERADDF_FUNCTION 0x00000003L
46 #define ACM_DRIVERADDF_NOTIFYHWND 0x00000004L
47 #define ACM_DRIVERADDF_TYPEMASK 0x00000007L
48 #define ACM_DRIVERADDF_LOCAL 0x00000000L
49 #define ACM_DRIVERADDF_GLOBAL 0x00000008L
50
51 #define ACMDRIVERDETAILS_SHORTNAME_CHARS 32
52 #define ACMDRIVERDETAILS_LONGNAME_CHARS 128
53 #define ACMDRIVERDETAILS_COPYRIGHT_CHARS 80
54 #define ACMDRIVERDETAILS_LICENSING_CHARS 128
55 #define ACMDRIVERDETAILS_FEATURES_CHARS 512
56
57 #define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
58 #define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED mmioFOURCC('\0', '\0', '\0', '\0')
59
60 #define ACMDRIVERDETAILS_SUPPORTF_CODEC 0x00000001L
61 #define ACMDRIVERDETAILS_SUPPORTF_CONVERTER 0x00000002L
62 #define ACMDRIVERDETAILS_SUPPORTF_FILTER 0x00000004L
63 #define ACMDRIVERDETAILS_SUPPORTF_HARDWARE 0x00000008L
64 #define ACMDRIVERDETAILS_SUPPORTF_ASYNC 0x00000010L
65 #define ACMDRIVERDETAILS_SUPPORTF_LOCAL 0x40000000L
66 #define ACMDRIVERDETAILS_SUPPORTF_DISABLED 0x80000000L
67
68 #define ACM_DRIVERENUMF_NOLOCAL 0x40000000L
69 #define ACM_DRIVERENUMF_DISABLED 0x80000000L
70
71 #define ACM_DRIVERPRIORITYF_ENABLE 0x00000001L
72 #define ACM_DRIVERPRIORITYF_DISABLE 0x00000002L
73 #define ACM_DRIVERPRIORITYF_ABLEMASK 0x00000003L
74 #define ACM_DRIVERPRIORITYF_BEGIN 0x00010000L
75 #define ACM_DRIVERPRIORITYF_END 0x00020000L
76 #define ACM_DRIVERPRIORITYF_DEFERMASK 0x00030000L
77
78 #define MM_ACM_FILTERCHOOSE 0x8000
79
80 #define FILTERCHOOSE_MESSAGE 0
81 #define FILTERCHOOSE_FILTERTAG_VERIFY (FILTERCHOOSE_MESSAGE+0)
82 #define FILTERCHOOSE_FILTER_VERIFY (FILTERCHOOSE_MESSAGE+1)
83 #define FILTERCHOOSE_CUSTOM_VERIFY (FILTERCHOOSE_MESSAGE+2)
84
85 #define ACMFILTERCHOOSE_STYLEF_SHOWHELP 0x00000004L
86 #define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK 0x00000008L
87 #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE 0x00000010L
88 #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
89 #define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT 0x00000040L
90 #define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP 0x00000080L
91
92 #define ACMFILTERDETAILS_FILTER_CHARS 128
93
94 #define ACM_FILTERDETAILSF_INDEX 0x00000000L
95 #define ACM_FILTERDETAILSF_FILTER 0x00000001L
96 #define ACM_FILTERDETAILSF_QUERYMASK 0x0000000FL
97
98 #define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48
99
100 #define ACM_FILTERTAGDETAILSF_INDEX 0x00000000L
101 #define ACM_FILTERTAGDETAILSF_FILTERTAG 0x00000001L
102 #define ACM_FILTERTAGDETAILSF_LARGESTSIZE 0x00000002L
103 #define ACM_FILTERTAGDETAILSF_QUERYMASK 0x0000000FL
104
105 #define ACM_FILTERENUMF_DWFILTERTAG 0x00010000L
106
107 #define ACMHELPMSGSTRINGA "acmchoose_help"
108 #if defined(__GNUC__)
109 # define ACMHELPMSGSTRINGW (const WCHAR []){ 'a','c','m', \
110 'c','h','o','o','s','e','_','h','e','l','p',0 }
111 #elif defined(_MSC_VER)
112 # define ACMHELPMSGSTRINGW L"acmchoose_help"
113 #else
114 static const WCHAR ACMHELPMSGSTRINGW[] = { 'a','c','m',
115 'c','h','o','o','s','e','_','h','e','l','p',0 };
116 #endif
117 #define ACMHELPMSGSTRING WINELIB_NAME_AW(ACMHELPMSGSTRING)
118
119 #define ACMHELPMSGCONTEXTMENUA "acmchoose_contextmenu"
120 #if defined(__GNUC__)
121 # define ACMHELPMSGCONTEXTMENUW (const WCHAR []){ 'a','c','m', \
122 'c','h','o','o','s','e','_','c','o','n','t','e','x','t','m','e','n','u',0 }
123 #elif defined(_MSC_VER)
124 # define ACMHELPMSGCONTEXTMENUW L"acmchoose_contextmenu"
125 #else
126 static const WCHAR ACMHELPMSGCONTEXTMENUW[] = { 'a','c','m',
127 'c','h','o','o','s','e','_','c','o','n','t','e','x','t','m','e','n','u',0 };
128 #endif
129 #define ACMHELPMSGCONTEXTMENU WINELIB_NAME_AW(ACMHELPMSGCONTEXTMENU)
130
131 #define ACMHELPMSGCONTEXTHELPA "acmchoose_contexthelp"
132 #if defined(__GNUC__)
133 # define ACMHELPMSGCONTEXTHELPW (const WCHAR []){ 'a','c','m', \
134 'c','h','o','o','s','e','_','c','o','n','t','e','x','t','h','e','l','p',0 }
135 #elif defined(_MSC_VER)
136 # define ACMHELPMSGCONTEXTHELPW L"acmchoose_contexthelp"
137 #else
138 static const WCHAR ACMHELPMSGCONTEXTHELPW[] = { 'a','c','m',
139 'c','h','o','o','s','e','_','c','o','n','t','e','x','t','h','e','l','p',0 };
140 #endif
141 #define ACMHELPMSGCONTEXTHELP WINELIB_NAME_AW(ACMHELPMSGCONTEXTHELP)
142
143 #define MM_ACM_FORMATCHOOSE 0x8000
144
145 #define FORMATCHOOSE_MESSAGE 0
146 #define FORMATCHOOSE_FORMATTAG_VERIFY (FORMATCHOOSE_MESSAGE+0)
147 #define FORMATCHOOSE_FORMAT_VERIFY (FORMATCHOOSE_MESSAGE+1)
148 #define FORMATCHOOSE_CUSTOM_VERIFY (FORMATCHOOSE_MESSAGE+2)
149
150 #define ACMFORMATCHOOSE_STYLEF_SHOWHELP 0x00000004L
151 #define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK 0x00000008L
152 #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE 0x00000010L
153 #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
154 #define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT 0x00000040L
155 #define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP 0x00000080L
156
157 #define ACMFORMATDETAILS_FORMAT_CHARS 128
158
159 #define ACM_FORMATDETAILSF_INDEX 0x00000000L
160 #define ACM_FORMATDETAILSF_FORMAT 0x00000001L
161 #define ACM_FORMATDETAILSF_QUERYMASK 0x0000000FL
162
163 #define ACM_FORMATENUMF_WFORMATTAG 0x00010000L
164 #define ACM_FORMATENUMF_NCHANNELS 0x00020000L
165 #define ACM_FORMATENUMF_NSAMPLESPERSEC 0x00040000L
166 #define ACM_FORMATENUMF_WBITSPERSAMPLE 0x00080000L
167 #define ACM_FORMATENUMF_CONVERT 0x00100000L
168 #define ACM_FORMATENUMF_SUGGEST 0x00200000L
169 #define ACM_FORMATENUMF_HARDWARE 0x00400000L
170 #define ACM_FORMATENUMF_INPUT 0x00800000L
171 #define ACM_FORMATENUMF_OUTPUT 0x01000000L
172
173 #define ACM_FORMATSUGGESTF_WFORMATTAG 0x00010000L
174 #define ACM_FORMATSUGGESTF_NCHANNELS 0x00020000L
175 #define ACM_FORMATSUGGESTF_NSAMPLESPERSEC 0x00040000L
176 #define ACM_FORMATSUGGESTF_WBITSPERSAMPLE 0x00080000L
177 #define ACM_FORMATSUGGESTF_TYPEMASK 0x00FF0000L
178
179 #define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48
180
181 #define ACM_FORMATTAGDETAILSF_INDEX 0x00000000L
182 #define ACM_FORMATTAGDETAILSF_FORMATTAG 0x00000001L
183 #define ACM_FORMATTAGDETAILSF_LARGESTSIZE 0x00000002L
184 #define ACM_FORMATTAGDETAILSF_QUERYMASK 0x0000000FL
185
186 #define ACM_METRIC_COUNT_DRIVERS 1
187 #define ACM_METRIC_COUNT_CODECS 2
188 #define ACM_METRIC_COUNT_CONVERTERS 3
189 #define ACM_METRIC_COUNT_FILTERS 4
190 #define ACM_METRIC_COUNT_DISABLED 5
191 #define ACM_METRIC_COUNT_HARDWARE 6
192 #define ACM_METRIC_COUNT_LOCAL_DRIVERS 20
193 #define ACM_METRIC_COUNT_LOCAL_CODECS 21
194 #define ACM_METRIC_COUNT_LOCAL_CONVERTERS 22
195 #define ACM_METRIC_COUNT_LOCAL_FILTERS 23
196 #define ACM_METRIC_COUNT_LOCAL_DISABLED 24
197 #define ACM_METRIC_HARDWARE_WAVE_INPUT 30
198 #define ACM_METRIC_HARDWARE_WAVE_OUTPUT 31
199 #define ACM_METRIC_MAX_SIZE_FORMAT 50
200 #define ACM_METRIC_MAX_SIZE_FILTER 51
201 #define ACM_METRIC_DRIVER_SUPPORT 100
202 #define ACM_METRIC_DRIVER_PRIORITY 101
203
204 #define ACM_STREAMCONVERTF_BLOCKALIGN 0x00000004
205 #define ACM_STREAMCONVERTF_START 0x00000010
206 #define ACM_STREAMCONVERTF_END 0x00000020
207
208 #define ACMSTREAMHEADER_STATUSF_DONE 0x00010000L
209 #define ACMSTREAMHEADER_STATUSF_PREPARED 0x00020000L
210 #define ACMSTREAMHEADER_STATUSF_INQUEUE 0x00100000L
211
212 #define ACM_STREAMOPENF_QUERY 0x00000001
213 #define ACM_STREAMOPENF_ASYNC 0x00000002
214 #define ACM_STREAMOPENF_NONREALTIME 0x00000004
215
216 #define ACM_STREAMSIZEF_SOURCE 0x00000000L
217 #define ACM_STREAMSIZEF_DESTINATION 0x00000001L
218 #define ACM_STREAMSIZEF_QUERYMASK 0x0000000FL
219
220 #define ACMDM_USER (DRV_USER + 0x0000)
221 #define ACMDM_RESERVED_LOW (DRV_USER + 0x2000)
222 #define ACMDM_RESERVED_HIGH (DRV_USER + 0x2FFF)
223
224 #define ACMDM_BASE ACMDM_RESERVED_LOW
225
226 #define ACMDM_DRIVER_ABOUT (ACMDM_BASE + 11)
227
228 /* handles */
229
230 DECLARE_HANDLE(HACMDRIVERID);
231 DECLARE_HANDLE(HACMDRIVER);
232 DECLARE_HANDLE(HACMSTREAM);
233 DECLARE_HANDLE(HACMOBJ);
234 typedef HACMDRIVERID *PHACMDRIVERID, *LPHACMDRIVERID;
235 typedef HACMDRIVER *PHACMDRIVER, *LPHACMDRIVER;
236 typedef HACMSTREAM *PHACMSTREAM, *LPHACMSTREAM;
237 typedef HACMOBJ *PHACMOBJ, *LPHACMOBJ;
238
239 /***********************************************************************
240 * Callbacks
241 */
242
243 typedef BOOL (CALLBACK *ACMDRIVERENUMCB)(
244 HACMDRIVERID hadid, DWORD dwInstance, DWORD fdwSupport
245 );
246
247 typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCA)(
248 HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
249 );
250
251 typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCW)(
252 HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
253 );
254 #define ACMFILTERCHOOSEHOOKPROC WINELIB_NAME_AW(ACMFILTERCHOOSEHOOKPROC)
255
256 typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCA)(
257 HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
258 );
259
260 typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCW)(
261 HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
262 );
263 #define ACMFORMATCHOOSEHOOKPROC WINELIB_NAME_AW(ACMFORMATCHOOSEHOOKPROC)
264
265 /***********************************************************************
266 * Structures
267 */
268
269 typedef struct _ACMDRIVERDETAILSA
270 {
271 DWORD cbStruct;
272
273 FOURCC fccType;
274 FOURCC fccComp;
275
276 WORD wMid;
277 WORD wPid;
278
279 DWORD vdwACM;
280 DWORD vdwDriver;
281
282 DWORD fdwSupport;
283 DWORD cFormatTags;
284 DWORD cFilterTags;
285
286 HICON hicon;
287
288 CHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
289 CHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
290 CHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
291 CHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
292 CHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
293 } ACMDRIVERDETAILSA, *PACMDRIVERDETAILSA, *LPACMDRIVERDETAILSA;
294
295 typedef struct _ACMDRIVERDETAILSW
296 {
297 DWORD cbStruct;
298
299 FOURCC fccType;
300 FOURCC fccComp;
301
302 WORD wMid;
303 WORD wPid;
304
305 DWORD vdwACM;
306 DWORD vdwDriver;
307
308 DWORD fdwSupport;
309 DWORD cFormatTags;
310 DWORD cFilterTags;
311
312 HICON hicon;
313
314 WCHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
315 WCHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
316 WCHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
317 WCHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
318 WCHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
319 } ACMDRIVERDETAILSW, *PACMDRIVERDETAILSW, *LPACMDRIVERDETAILSW;
320
321 DECL_WINELIB_TYPE_AW(ACMDRIVERDETAILS)
322 DECL_WINELIB_TYPE_AW(PACMDRIVERDETAILS)
323 DECL_WINELIB_TYPE_AW(LPACMDRIVERDETAILS)
324
325 typedef struct _ACMFILTERCHOOSEA
326 {
327 DWORD cbStruct;
328 DWORD fdwStyle;
329
330 HWND hwndOwner;
331
332 PWAVEFILTER pwfltr;
333 DWORD cbwfltr;
334
335 LPCSTR pszTitle;
336
337 CHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
338 CHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
339 LPSTR pszName;
340 DWORD cchName;
341
342 DWORD fdwEnum;
343 PWAVEFILTER pwfltrEnum;
344
345 HINSTANCE hInstance;
346 LPCSTR pszTemplateName;
347 LPARAM lCustData;
348 ACMFILTERCHOOSEHOOKPROCA pfnHook;
349 } ACMFILTERCHOOSEA, *PACMFILTERCHOOSEA, *LPACMFILTERCHOOSEA;
350
351 typedef struct _ACMFILTERCHOOSEW
352 {
353 DWORD cbStruct;
354 DWORD fdwStyle;
355
356 HWND hwndOwner;
357
358 PWAVEFILTER pwfltr;
359 DWORD cbwfltr;
360
361 LPCWSTR pszTitle;
362
363 WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
364 WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
365 LPWSTR pszName;
366 DWORD cchName;
367
368 DWORD fdwEnum;
369 PWAVEFILTER pwfltrEnum;
370
371 HINSTANCE hInstance;
372 LPCWSTR pszTemplateName;
373 LPARAM lCustData;
374 ACMFILTERCHOOSEHOOKPROCW pfnHook;
375 } ACMFILTERCHOOSEW, *PACMFILTERCHOOSEW, *LPACMFILTERCHOOSEW;
376
377 DECL_WINELIB_TYPE_AW(ACMFILTERCHOOSE)
378 DECL_WINELIB_TYPE_AW(PACMFILTERCHOOSE)
379 DECL_WINELIB_TYPE_AW(LPACMFILTERCHOOSE)
380
381 typedef struct _ACMFILTERDETAILSA
382 {
383 DWORD cbStruct;
384 DWORD dwFilterIndex;
385 DWORD dwFilterTag;
386 DWORD fdwSupport;
387 PWAVEFILTER pwfltr;
388 DWORD cbwfltr;
389 CHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
390 } ACMFILTERDETAILSA, *PACMFILTERDETAILSA, *LPACMFILTERDETAILSA;
391
392 typedef struct _ACMFILTERDETAILSW
393 {
394 DWORD cbStruct;
395 DWORD dwFilterIndex;
396 DWORD dwFilterTag;
397 DWORD fdwSupport;
398 PWAVEFILTER pwfltr;
399 DWORD cbwfltr;
400 WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
401 } ACMFILTERDETAILSW, *PACMFILTERDETAILSW, *LPACMFILTERDETAILSW;
402
403 DECL_WINELIB_TYPE_AW(ACMFILTERDETAILS)
404 DECL_WINELIB_TYPE_AW(PACMFILTERDETAILS)
405 DECL_WINELIB_TYPE_AW(LPACMFILTERDETAILS)
406
407 typedef struct _ACMFILTERTAGDETAILSA
408 {
409 DWORD cbStruct;
410 DWORD dwFilterTagIndex;
411 DWORD dwFilterTag;
412 DWORD cbFilterSize;
413 DWORD fdwSupport;
414 DWORD cStandardFilters;
415 CHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
416 } ACMFILTERTAGDETAILSA, *PACMFILTERTAGDETAILSA, *LPACMFILTERTAGDETAILSA;
417
418 typedef struct _ACMFILTERTAGDETAILSW
419 {
420 DWORD cbStruct;
421 DWORD dwFilterTagIndex;
422 DWORD dwFilterTag;
423 DWORD cbFilterSize;
424 DWORD fdwSupport;
425 DWORD cStandardFilters;
426 WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
427 } ACMFILTERTAGDETAILSW, *PACMFILTERTAGDETAILSW, *LPACMFILTERTAGDETAILSW;
428
429 DECL_WINELIB_TYPE_AW(ACMFILTERTAGDETAILS)
430 DECL_WINELIB_TYPE_AW(PACMFILTERTAGDETAILS)
431 DECL_WINELIB_TYPE_AW(LPACMFILTERTAGDETAILS)
432
433 typedef struct _ACMFORMATCHOOSEA
434 {
435 DWORD cbStruct;
436 DWORD fdwStyle;
437
438 HWND hwndOwner;
439
440 PWAVEFORMATEX pwfx;
441 DWORD cbwfx;
442 LPCSTR pszTitle;
443
444 CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
445 CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
446
447 LPSTR pszName;
448 DWORD cchName;
449
450 DWORD fdwEnum;
451 PWAVEFORMATEX pwfxEnum;
452
453 HINSTANCE hInstance;
454 LPCSTR pszTemplateName;
455 LPARAM lCustData;
456 ACMFORMATCHOOSEHOOKPROCA pfnHook;
457 } ACMFORMATCHOOSEA, *PACMFORMATCHOOSEA, *LPACMFORMATCHOOSEA;
458
459 typedef struct _ACMFORMATCHOOSEW
460 {
461 DWORD cbStruct;
462 DWORD fdwStyle;
463
464 HWND hwndOwner;
465
466 PWAVEFORMATEX pwfx;
467 DWORD cbwfx;
468 LPCWSTR pszTitle;
469
470 WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
471 WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
472
473 LPWSTR pszName;
474 DWORD cchName;
475
476 DWORD fdwEnum;
477 LPWAVEFORMATEX pwfxEnum;
478
479 HINSTANCE hInstance;
480 LPCWSTR pszTemplateName;
481 LPARAM lCustData;
482 ACMFORMATCHOOSEHOOKPROCW pfnHook;
483 } ACMFORMATCHOOSEW, *PACMFORMATCHOOSEW, *LPACMFORMATCHOOSEW;
484
485 DECL_WINELIB_TYPE_AW(ACMFORMATCHOOSE)
486 DECL_WINELIB_TYPE_AW(PACMFORMATCHOOSE)
487 DECL_WINELIB_TYPE_AW(LPACMFORMATCHOOSE)
488
489 typedef struct _ACMFORMATDETAILSA
490 {
491 DWORD cbStruct;
492 DWORD dwFormatIndex;
493 DWORD dwFormatTag;
494 DWORD fdwSupport;
495 PWAVEFORMATEX pwfx;
496 DWORD cbwfx;
497 CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
498 } ACMFORMATDETAILSA, *PACMFORMATDETAILSA, *LPACMFORMATDETAILSA;
499
500 typedef struct _ACMFORMATDETAILSW
501 {
502 DWORD cbStruct;
503 DWORD dwFormatIndex;
504 DWORD dwFormatTag;
505 DWORD fdwSupport;
506 PWAVEFORMATEX pwfx;
507 DWORD cbwfx;
508 WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
509 } ACMFORMATDETAILSW, *PACMFORMATDETAILSW, *LPACMFORMATDETAILSW;
510
511 DECL_WINELIB_TYPE_AW(ACMFORMATDETAILS)
512 DECL_WINELIB_TYPE_AW(PACMFORMATDETAILS)
513 DECL_WINELIB_TYPE_AW(LPACMFORMATDETAILS)
514
515 typedef struct _ACMFORMATTAGDETAILSA
516 {
517 DWORD cbStruct;
518 DWORD dwFormatTagIndex;
519 DWORD dwFormatTag;
520 DWORD cbFormatSize;
521 DWORD fdwSupport;
522 DWORD cStandardFormats;
523 CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
524 } ACMFORMATTAGDETAILSA, *PACMFORMATTAGDETAILSA, *LPACMFORMATTAGDETAILSA;
525
526 typedef struct _ACMFORMATTAGDETAILSW
527 {
528 DWORD cbStruct;
529 DWORD dwFormatTagIndex;
530 DWORD dwFormatTag;
531 DWORD cbFormatSize;
532 DWORD fdwSupport;
533 DWORD cStandardFormats;
534 WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
535 } ACMFORMATTAGDETAILSW, *PACMFORMATTAGDETAILSW, *LPACMFORMATTAGDETAILSW;
536
537 DECL_WINELIB_TYPE_AW(ACMFORMATTAGDETAILS)
538 DECL_WINELIB_TYPE_AW(PACMFORMATTAGDETAILS)
539 DECL_WINELIB_TYPE_AW(LPACMFORMATTAGDETAILS)
540
541 typedef struct _ACMSTREAMHEADER
542 {
543 DWORD cbStruct;
544 DWORD fdwStatus;
545 DWORD dwUser;
546 LPBYTE pbSrc;
547 DWORD cbSrcLength;
548 DWORD cbSrcLengthUsed;
549 DWORD dwSrcUser;
550 LPBYTE pbDst;
551 DWORD cbDstLength;
552 DWORD cbDstLengthUsed;
553 DWORD dwDstUser;
554 DWORD dwReservedDriver[10];
555 } ACMSTREAMHEADER, *PACMSTREAMHEADER, *LPACMSTREAMHEADER;
556
557 /***********************************************************************
558 * Callbacks 2
559 */
560
561 typedef BOOL (CALLBACK *ACMFILTERENUMCBA)(
562 HACMDRIVERID hadid, PACMFILTERDETAILSA pafd,
563 DWORD dwInstance, DWORD fdwSupport
564 );
565
566 typedef BOOL (CALLBACK *ACMFILTERENUMCBW)(
567 HACMDRIVERID hadid, PACMFILTERDETAILSW pafd,
568 DWORD dwInstance, DWORD fdwSupport
569 );
570
571 #define ACMFILTERENUMCB WINELIB_NAME_AW(ACMFILTERENUMCB)
572
573 typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBA)(
574 HACMDRIVERID hadid, PACMFILTERTAGDETAILSA paftd,
575 DWORD dwInstance, DWORD fdwSupport
576 );
577
578 typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBW)(
579 HACMDRIVERID hadid, PACMFILTERTAGDETAILSW paftd,
580 DWORD dwInstance, DWORD fdwSupport
581 );
582
583 #define ACMFILTERTAGENUMCB WINELIB_NAME_AW(ACMFILTERTAGENUMCB)
584
585 typedef BOOL (CALLBACK *ACMFORMATENUMCBA)(
586 HACMDRIVERID hadid, PACMFORMATDETAILSA pafd,
587 DWORD dwInstance, DWORD fdwSupport
588 );
589
590 typedef BOOL (CALLBACK *ACMFORMATENUMCBW)(
591 HACMDRIVERID hadid, PACMFORMATDETAILSW pafd,
592 DWORD dwInstance, DWORD fdwSupport
593 );
594
595 #define ACMFORMATENUMCB WINELIB_NAME_AW(ACMFORMATENUMCB)
596
597 typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA)(
598 HACMDRIVERID hadid, PACMFORMATTAGDETAILSA paftd,
599 DWORD dwInstance, DWORD fdwSupport
600 );
601
602 typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW)(
603 HACMDRIVERID hadid, PACMFORMATTAGDETAILSW paftd,
604 DWORD dwInstance, DWORD fdwSupport
605 );
606
607 #define ACMFORMATTAGENUMCB WINELIB_NAME_AW(ACMFORMATTAGENUMCB)
608
609 /***********************************************************************
610 * Functions - Win32
611 */
612
613 MMRESULT WINAPI acmDriverAddA(
614 PHACMDRIVERID phadid, HINSTANCE hinstModule,
615 LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
616 );
617 MMRESULT WINAPI acmDriverAddW(
618 PHACMDRIVERID phadid, HINSTANCE hinstModule,
619 LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
620 );
621 #define acmDriverAdd WINELIB_NAME_AW(acmDriverAdd)
622
623 MMRESULT WINAPI acmDriverClose(
624 HACMDRIVER had, DWORD fdwClose
625 );
626 MMRESULT WINAPI acmDriverDetailsA(
627 HACMDRIVERID hadid, PACMDRIVERDETAILSA padd, DWORD fdwDetails
628 );
629 MMRESULT WINAPI acmDriverDetailsW(
630 HACMDRIVERID hadid, PACMDRIVERDETAILSW padd, DWORD fdwDetails
631 );
632 #define acmDriverDetails WINELIB_NAME_AW(acmDriverDetails)
633
634 MMRESULT WINAPI acmDriverEnum(
635 ACMDRIVERENUMCB fnCallback, DWORD dwInstance, DWORD fdwEnum
636 );
637 MMRESULT WINAPI acmDriverID(
638 HACMOBJ hao, PHACMDRIVERID phadid, DWORD fdwDriverID
639 );
640 LRESULT WINAPI acmDriverMessage(
641 HACMDRIVER had, UINT uMsg, LPARAM lParam1, LPARAM lParam2
642 );
643 MMRESULT WINAPI acmDriverOpen(
644 PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen
645 );
646 MMRESULT WINAPI acmDriverPriority(
647 HACMDRIVERID hadid, DWORD dwPriority, DWORD fdwPriority
648 );
649 MMRESULT WINAPI acmDriverRemove(
650 HACMDRIVERID hadid, DWORD fdwRemove
651 );
652 MMRESULT WINAPI acmFilterChooseA(
653 PACMFILTERCHOOSEA pafltrc
654 );
655 MMRESULT WINAPI acmFilterChooseW(
656 PACMFILTERCHOOSEW pafltrc
657 );
658 #define acmFilterChoose WINELIB_NAME_AW(acmFilterChoose)
659
660 MMRESULT WINAPI acmFilterDetailsA(
661 HACMDRIVER had, PACMFILTERDETAILSA pafd, DWORD fdwDetails
662 );
663 MMRESULT WINAPI acmFilterDetailsW(
664 HACMDRIVER had, PACMFILTERDETAILSW pafd, DWORD fdwDetails
665 );
666 #define acmFilterDetails WINELIB_NAME_AW(acmFilterDetails)
667
668 MMRESULT WINAPI acmFilterEnumA(
669 HACMDRIVER had, PACMFILTERDETAILSA pafd,
670 ACMFILTERENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
671 );
672 MMRESULT WINAPI acmFilterEnumW(
673 HACMDRIVER had, PACMFILTERDETAILSW pafd,
674 ACMFILTERENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
675 );
676 #define acmFilterEnum WINELIB_NAME_AW(acmFilterEnum)
677
678 MMRESULT WINAPI acmFilterTagDetailsA(
679 HACMDRIVER had, PACMFILTERTAGDETAILSA paftd, DWORD fdwDetails
680 );
681 MMRESULT WINAPI acmFilterTagDetailsW(
682 HACMDRIVER had, PACMFILTERTAGDETAILSW paftd, DWORD fdwDetails
683 );
684 #define acmFilterTagDetails WINELIB_NAME_AW(acmFilterTagDetails)
685
686 MMRESULT WINAPI acmFilterTagEnumA(
687 HACMDRIVER had, PACMFILTERTAGDETAILSA paftd,
688 ACMFILTERTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
689 );
690 MMRESULT WINAPI acmFilterTagEnumW(
691 HACMDRIVER had, PACMFILTERTAGDETAILSW paftd,
692 ACMFILTERTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
693 );
694 #define acmFilterTagEnum WINELIB_NAME_AW(acmFilterTagEnum)
695
696 MMRESULT WINAPI acmFormatChooseA(
697 PACMFORMATCHOOSEA pafmtc
698 );
699 MMRESULT WINAPI acmFormatChooseW(
700 PACMFORMATCHOOSEW pafmtc
701 );
702 #define acmFormatChoose WINELIB_NAME_AW(acmFormatChoose)
703
704 MMRESULT WINAPI acmFormatDetailsA(
705 HACMDRIVER had, PACMFORMATDETAILSA pafd, DWORD fdwDetails
706 );
707 MMRESULT WINAPI acmFormatDetailsW(
708 HACMDRIVER had, PACMFORMATDETAILSW pafd, DWORD fdwDetails
709 );
710 #define acmFormatDetails WINELIB_NAME_AW(acmFormatDetails)
711
712 MMRESULT WINAPI acmFormatEnumA(
713 HACMDRIVER had, PACMFORMATDETAILSA pafd,
714 ACMFORMATENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
715 );
716 MMRESULT WINAPI acmFormatEnumW(
717 HACMDRIVER had, PACMFORMATDETAILSW pafd,
718 ACMFORMATENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
719 );
720 #define acmFormatEnum WINELIB_NAME_AW(acmFormatEnum)
721
722 MMRESULT WINAPI acmFormatSuggest(
723 HACMDRIVER had, PWAVEFORMATEX pwfxSrc, PWAVEFORMATEX pwfxDst,
724 DWORD cbwfxDst, DWORD fdwSuggest
725 );
726 MMRESULT WINAPI acmFormatTagDetailsA(
727 HACMDRIVER had, PACMFORMATTAGDETAILSA paftd, DWORD fdwDetails
728 );
729 MMRESULT WINAPI acmFormatTagDetailsW(
730 HACMDRIVER had, PACMFORMATTAGDETAILSW paftd, DWORD fdwDetails
731 );
732 #define acmFormatTagDetails WINELIB_NAME_AW(acmFormatTagDetails)
733
734 MMRESULT WINAPI acmFormatTagEnumA(
735 HACMDRIVER had, PACMFORMATTAGDETAILSA paftd,
736 ACMFORMATTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
737 );
738 MMRESULT WINAPI acmFormatTagEnumW(
739 HACMDRIVER had, PACMFORMATTAGDETAILSW paftd,
740 ACMFORMATTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
741 );
742 #define acmFormatTagEnum WINELIB_NAME_AW(acmFormatTagEnum)
743
744 DWORD WINAPI acmGetVersion(void
745 );
746 MMRESULT WINAPI acmMetrics(
747 HACMOBJ hao, UINT uMetric, LPVOID pMetric
748 );
749 MMRESULT WINAPI acmStreamClose(
750 HACMSTREAM has, DWORD fdwClose
751 );
752 MMRESULT WINAPI acmStreamConvert(
753 HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwConvert
754 );
755 MMRESULT WINAPI acmStreamMessage(
756 HACMSTREAM has, UINT uMsg, LPARAM lParam1, LPARAM lParam2
757 );
758 MMRESULT WINAPI acmStreamOpen(
759 PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pwfxSrc,
760 PWAVEFORMATEX pwfxDst, PWAVEFILTER pwfltr, DWORD dwCallback,
761 DWORD dwInstance, DWORD fdwOpen
762 );
763 MMRESULT WINAPI acmStreamPrepareHeader(
764 HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwPrepare
765 );
766 MMRESULT WINAPI acmStreamReset(
767 HACMSTREAM has, DWORD fdwReset
768 );
769 MMRESULT WINAPI acmStreamSize(
770 HACMSTREAM has, DWORD cbInput,
771 LPDWORD pdwOutputBytes, DWORD fdwSize
772 );
773 MMRESULT WINAPI acmStreamUnprepareHeader(
774 HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwUnprepare
775 );
776
777 #ifdef __cplusplus
778 } /* extern "C" */
779 #endif /* defined(__cplusplus) */
780
781 #endif /* __WINE_MSACM_H */