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