Reordered the CALLBACK and WINAPI directives so that it compiles with
[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 "driver.h"
10 #include "mmsystem.h"
11 #include "mmreg.h"
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif /* defined(__cplusplus) */
16
17 /***********************************************************************
18  * Defines/Enums
19  */
20
21 #define ACMERR_BASE        512
22 #define ACMERR_NOTPOSSIBLE (ACMERR_BASE + 0)
23 #define ACMERR_BUSY        (ACMERR_BASE + 1)
24 #define ACMERR_UNPREPARED  (ACMERR_BASE + 2)
25 #define ACMERR_CANCELED    (ACMERR_BASE + 3)
26
27 #define MM_ACM_OPEN  MM_STREAM_OPEN
28 #define MM_ACM_CLOSE MM_STREAM_CLOSE
29 #define MM_ACM_DONE  MM_STREAM_DONE
30
31 #define ACM_DRIVERADDF_FUNCTION   0x00000003L
32 #define ACM_DRIVERADDF_NOTIFYHWND 0x00000004L
33 #define ACM_DRIVERADDF_TYPEMASK   0x00000007L
34 #define ACM_DRIVERADDF_LOCAL      0x00000000L
35 #define ACM_DRIVERADDF_GLOBAL     0x00000008L
36
37 #define ACMDRIVERDETAILS_SHORTNAME_CHARS  32
38 #define ACMDRIVERDETAILS_LONGNAME_CHARS  128
39 #define ACMDRIVERDETAILS_COPYRIGHT_CHARS  80
40 #define ACMDRIVERDETAILS_LICENSING_CHARS 128
41 #define ACMDRIVERDETAILS_FEATURES_CHARS  512
42
43 #define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
44 #define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED  mmioFOURCC('\0', '\0', '\0', '\0')
45
46 #define ACMDRIVERDETAILS_SUPPORTF_CODEC     0x00000001L
47 #define ACMDRIVERDETAILS_SUPPORTF_CONVERTER 0x00000002L
48 #define ACMDRIVERDETAILS_SUPPORTF_FILTER    0x00000004L
49 #define ACMDRIVERDETAILS_SUPPORTF_HARDWARE  0x00000008L
50 #define ACMDRIVERDETAILS_SUPPORTF_ASYNC     0x00000010L
51 #define ACMDRIVERDETAILS_SUPPORTF_LOCAL     0x40000000L
52 #define ACMDRIVERDETAILS_SUPPORTF_DISABLED  0x80000000L
53
54 #define ACM_DRIVERENUMF_NOLOCAL  0x40000000L
55 #define ACM_DRIVERENUMF_DISABLED 0x80000000L
56
57 #define ACM_DRIVERPRIORITYF_ENABLE    0x00000001L
58 #define ACM_DRIVERPRIORITYF_DISABLE   0x00000002L
59 #define ACM_DRIVERPRIORITYF_ABLEMASK  0x00000003L
60 #define ACM_DRIVERPRIORITYF_BEGIN     0x00010000L
61 #define ACM_DRIVERPRIORITYF_END       0x00020000L
62 #define ACM_DRIVERPRIORITYF_DEFERMASK 0x00030000L
63
64 #define MM_ACM_FILTERCHOOSE 0x8000
65
66 #define FILTERCHOOSE_MESSAGE          0
67 #define FILTERCHOOSE_FILTERTAG_VERIFY (FILTERCHOOSE_MESSAGE+0)
68 #define FILTERCHOOSE_FILTER_VERIFY    (FILTERCHOOSE_MESSAGE+1)
69 #define FILTERCHOOSE_CUSTOM_VERIFY    (FILTERCHOOSE_MESSAGE+2)
70
71 #define ACMFILTERCHOOSE_STYLEF_SHOWHELP             0x00000004L
72 #define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK           0x00000008L
73 #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE       0x00000010L
74 #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
75 #define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT   0x00000040L
76 #define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP          0x00000080L
77
78 #define ACMFILTERDETAILS_FILTER_CHARS 128
79
80 #define ACM_FILTERDETAILSF_INDEX     0x00000000L
81 #define ACM_FILTERDETAILSF_FILTER    0x00000001L
82 #define ACM_FILTERDETAILSF_QUERYMASK 0x0000000FL
83
84 #define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48
85
86 #define ACM_FILTERTAGDETAILSF_INDEX       0x00000000L
87 #define ACM_FILTERTAGDETAILSF_FILTERTAG   0x00000001L
88 #define ACM_FILTERTAGDETAILSF_LARGESTSIZE 0x00000002L
89 #define ACM_FILTERTAGDETAILSF_QUERYMASK   0x0000000FL
90
91 #define ACM_FILTERENUMF_DWFILTERTAG 0x00010000L
92
93 #define ACMHELPMSGSTRINGA       "acmchoose_help"
94 #define ACMHELPMSGSTRINGW       L"acmchoose_help"
95 #define ACMHELPMSGSTRING16       "acmchoose_help"
96
97 #define ACMHELPMSGCONTEXTMENUA  "acmchoose_contextmenu"
98 #define ACMHELPMSGCONTEXTMENUW  L"acmchoose_contextmenu"
99 #define ACMHELPMSGCONTEXTMENU16   "acmchoose_contextmenu"
100
101 #define ACMHELPMSGCONTEXTHELPA  "acmchoose_contexthelp"
102 #define ACMHELPMSGCONTEXTHELPW  L"acmchoose_contexthelp"
103 #define ACMHELPMSGCONTEXTHELP16   "acmchoose_contexthelp"
104
105 #define MM_ACM_FORMATCHOOSE 0x8000
106
107 #define FORMATCHOOSE_MESSAGE          0
108 #define FORMATCHOOSE_FORMATTAG_VERIFY (FORMATCHOOSE_MESSAGE+0)
109 #define FORMATCHOOSE_FORMAT_VERIFY    (FORMATCHOOSE_MESSAGE+1)
110 #define FORMATCHOOSE_CUSTOM_VERIFY    (FORMATCHOOSE_MESSAGE+2)
111
112 #define ACMFORMATCHOOSE_STYLEF_SHOWHELP             0x00000004L
113 #define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK           0x00000008L
114 #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE       0x00000010L
115 #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
116 #define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT      0x00000040L
117 #define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP          0x00000080L
118
119 #define ACMFORMATDETAILS_FORMAT_CHARS   128
120
121 #define ACM_FORMATDETAILSF_INDEX     0x00000000L
122 #define ACM_FORMATDETAILSF_FORMAT    0x00000001L
123 #define ACM_FORMATDETAILSF_QUERYMASK 0x0000000FL
124
125 #define ACM_FORMATENUMF_WFORMATTAG     0x00010000L
126 #define ACM_FORMATENUMF_NCHANNELS      0x00020000L
127 #define ACM_FORMATENUMF_NSAMPLESPERSEC 0x00040000L
128 #define ACM_FORMATENUMF_WBITSPERSAMPLE 0x00080000L
129 #define ACM_FORMATENUMF_CONVERT        0x00100000L
130 #define ACM_FORMATENUMF_SUGGEST        0x00200000L
131 #define ACM_FORMATENUMF_HARDWARE       0x00400000L
132 #define ACM_FORMATENUMF_INPUT          0x00800000L
133 #define ACM_FORMATENUMF_OUTPUT         0x01000000L
134
135 #define ACM_FORMATSUGGESTF_WFORMATTAG     0x00010000L
136 #define ACM_FORMATSUGGESTF_NCHANNELS      0x00020000L
137 #define ACM_FORMATSUGGESTF_NSAMPLESPERSEC 0x00040000L
138 #define ACM_FORMATSUGGESTF_WBITSPERSAMPLE 0x00080000L
139 #define ACM_FORMATSUGGESTF_TYPEMASK       0x00FF0000L
140
141 #define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48
142
143 #define ACM_FORMATTAGDETAILSF_INDEX       0x00000000L
144 #define ACM_FORMATTAGDETAILSF_FORMATTAG   0x00000001L
145 #define ACM_FORMATTAGDETAILSF_LARGESTSIZE 0x00000002L
146 #define ACM_FORMATTAGDETAILSF_QUERYMASK   0x0000000FL
147
148 #define ACM_METRIC_COUNT_DRIVERS            1
149 #define ACM_METRIC_COUNT_CODECS             2
150 #define ACM_METRIC_COUNT_CONVERTERS         3
151 #define ACM_METRIC_COUNT_FILTERS            4
152 #define ACM_METRIC_COUNT_DISABLED           5
153 #define ACM_METRIC_COUNT_HARDWARE           6
154 #define ACM_METRIC_COUNT_LOCAL_DRIVERS     20
155 #define ACM_METRIC_COUNT_LOCAL_CODECS      21
156 #define ACM_METRIC_COUNT_LOCAL_CONVERTERS  22
157 #define ACM_METRIC_COUNT_LOCAL_FILTERS     23
158 #define ACM_METRIC_COUNT_LOCAL_DISABLED    24
159 #define ACM_METRIC_HARDWARE_WAVE_INPUT     30
160 #define ACM_METRIC_HARDWARE_WAVE_OUTPUT    31
161 #define ACM_METRIC_MAX_SIZE_FORMAT         50
162 #define ACM_METRIC_MAX_SIZE_FILTER         51
163 #define ACM_METRIC_DRIVER_SUPPORT         100
164 #define ACM_METRIC_DRIVER_PRIORITY        101
165
166 #define ACM_STREAMCONVERTF_BLOCKALIGN 0x00000004
167 #define ACM_STREAMCONVERTF_START      0x00000010
168 #define ACM_STREAMCONVERTF_END        0x00000020
169
170 #define ACMSTREAMHEADER_STATUSF_DONE     0x00010000L
171 #define ACMSTREAMHEADER_STATUSF_PREPARED 0x00020000L
172 #define ACMSTREAMHEADER_STATUSF_INQUEUE  0x00100000L
173
174 #define ACM_STREAMOPENF_QUERY       0x00000001
175 #define ACM_STREAMOPENF_ASYNC       0x00000002
176 #define ACM_STREAMOPENF_NONREALTIME 0x00000004
177
178 #define ACM_STREAMSIZEF_SOURCE      0x00000000L
179 #define ACM_STREAMSIZEF_DESTINATION 0x00000001L
180 #define ACM_STREAMSIZEF_QUERYMASK   0x0000000FL
181
182 #define ACMDM_USER                  (DRV_USER + 0x0000)
183 #define ACMDM_RESERVED_LOW          (DRV_USER + 0x2000)
184 #define ACMDM_RESERVED_HIGH         (DRV_USER + 0x2FFF)
185
186 #define ACMDM_BASE                  ACMDM_RESERVED_LOW
187
188 #define ACMDM_DRIVER_ABOUT          (ACMDM_BASE + 11)
189
190 /***********************************************************************
191  * Callbacks
192  */
193
194 typedef BOOL CALLBACK (*ACMDRIVERENUMCB)(
195   HACMDRIVERID hadid, DWORD dwInstance, DWORD fdwSupport
196 );
197
198 typedef BOOL16 CALLBACK (*ACMDRIVERENUMCB16)(
199   HACMDRIVERID16 hadid, DWORD dwInstance, DWORD fdwSupport
200 );
201
202 typedef UINT CALLBACK (*ACMFILTERCHOOSEHOOKPROCA)(
203   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
204 );
205
206 typedef UINT CALLBACK (*ACMFILTERCHOOSEHOOKPROCW)(
207   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
208 );
209
210 typedef UINT CALLBACK (*ACMFILTERCHOOSEHOOKPROC16)(
211   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
212 );
213
214 typedef UINT CALLBACK (*ACMFORMATCHOOSEHOOKPROCA)(
215   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
216 );
217
218 typedef UINT CALLBACK (*ACMFORMATCHOOSEHOOKPROCW)(
219   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
220 );
221
222 typedef UINT16 CALLBACK (*ACMFORMATCHOOSEHOOKPROC16)(
223   HWND16 hwnd, UINT16 uMsg, WPARAM16 wParam, LPARAM lParam
224 );
225
226 /***********************************************************************
227  * Structures
228  */
229
230 typedef struct _ACMDRIVERDETAILSA
231 {
232   DWORD    cbStruct;
233
234   FOURCC   fccType;
235   FOURCC   fccComp;
236
237   WORD     wMid;
238   WORD     wPid;
239
240   DWORD    vdwACM;
241   DWORD    vdwDriver;
242
243   DWORD    fdwSupport;
244   DWORD    cFormatTags;
245   DWORD    cFilterTags;
246
247   HICON  hicon;
248
249   CHAR     szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
250   CHAR     szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
251   CHAR     szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
252   CHAR     szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
253   CHAR     szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
254 } ACMDRIVERDETAILSA, *PACMDRIVERDETAILSA;
255
256 typedef struct _ACMDRIVERDETAILSW
257 {
258   DWORD    cbStruct;
259
260   FOURCC   fccType;
261   FOURCC   fccComp;
262
263   WORD     wMid;
264   WORD     wPid;
265
266   DWORD    vdwACM;
267   DWORD    vdwDriver;
268
269   DWORD    fdwSupport;
270   DWORD    cFormatTags;
271   DWORD    cFilterTags;
272
273   HICON  hicon;
274
275   WCHAR    szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
276   WCHAR    szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
277   WCHAR    szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
278   WCHAR    szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
279   WCHAR    szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
280 } ACMDRIVERDETAILSW, *PACMDRIVERDETAILSW;
281
282 typedef struct _ACMDRIVERDETAILS16
283 {
284   DWORD   cbStruct;
285
286   FOURCC  fccType;
287   FOURCC  fccComp;
288
289   WORD    wMid;
290   WORD    wPid;
291
292   DWORD   vdwACM;
293   DWORD   vdwDriver;
294
295   DWORD   fdwSupport;
296   DWORD   cFormatTags;
297   DWORD   cFilterTags;
298
299   HICON16 hicon;
300
301   CHAR    szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
302   CHAR    szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
303   CHAR    szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
304   CHAR    szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
305   CHAR    szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
306 } ACMDRIVERDETAILS16, *NPACMDRIVERDETAILS16, *LPACMDRIVERDETAILS16;
307
308 typedef struct _ACMFILTERCHOOSEA
309 {
310   DWORD         cbStruct;
311   DWORD         fdwStyle;
312
313   HWND        hwndOwner;
314
315   PWAVEFILTER   pwfltr;
316   DWORD         cbwfltr;
317
318   LPCSTR        pszTitle;
319
320   CHAR          szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
321   CHAR          szFilter[ACMFILTERDETAILS_FILTER_CHARS];
322   LPSTR         pszName;
323   DWORD         cchName;
324
325   DWORD         fdwEnum;
326   PWAVEFILTER   pwfltrEnum;
327     
328   HINSTANCE   hInstance;
329   LPCSTR        pszTemplateName;
330   LPARAM        lCustData;
331   ACMFILTERCHOOSEHOOKPROCA pfnHook;
332 } ACMFILTERCHOOSEA, *PACMFILTERCHOOSEA;
333
334 typedef struct _ACMFILTERCHOOSEW
335 {
336   DWORD         cbStruct;
337   DWORD         fdwStyle;
338
339   HWND        hwndOwner;
340
341   PWAVEFILTER   pwfltr;
342   DWORD         cbwfltr;
343
344   LPCWSTR       pszTitle;
345
346   WCHAR         szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
347   WCHAR         szFilter[ACMFILTERDETAILS_FILTER_CHARS];
348   LPWSTR        pszName;
349   DWORD         cchName;
350
351   DWORD         fdwEnum;
352   PWAVEFILTER   pwfltrEnum;
353     
354   HINSTANCE   hInstance;
355   LPCWSTR       pszTemplateName;
356   LPARAM        lCustData;
357   ACMFILTERCHOOSEHOOKPROCW pfnHook;
358 } ACMFILTERCHOOSEW, *PACMFILTERCHOOSEW;
359
360 typedef struct _ACMFILTERCHOOSE16
361 {
362   DWORD          cbStruct;
363   DWORD          fdwStyle;
364
365   HWND16         hwndOwner;
366
367   LPWAVEFILTER   pwfltr;
368   DWORD          cbwfltr;
369
370   LPCSTR         pszTitle;
371
372   char           szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
373   char           szFilter[ACMFILTERDETAILS_FILTER_CHARS];
374   LPSTR          pszName;
375   DWORD          cchName;
376
377   DWORD          fdwEnum;
378   LPWAVEFILTER   pwfltrEnum;
379     
380   HINSTANCE16    hInstance;
381   LPCSTR         pszTemplateName;
382   LPARAM         lCustData;
383   ACMFILTERCHOOSEHOOKPROC16 pfnHook;
384 } ACMFILTERCHOOSE16, *NPACMFILTERCHOOSE16, *LPACMFILTERCHOOSE16;
385
386 typedef struct _ACMFILTERDETAILSA
387 {
388   DWORD           cbStruct;
389   DWORD           dwFilterIndex;
390   DWORD           dwFilterTag;
391   DWORD           fdwSupport;
392   PWAVEFILTER     pwfltr;
393   DWORD           cbwfltr;
394   CHAR            szFilter[ACMFILTERDETAILS_FILTER_CHARS];
395 } ACMFILTERDETAILSA, *PACMFILTERDETAILSA;
396
397 typedef struct _ACMFILTERDETAILSW
398 {
399   DWORD          cbStruct;
400   DWORD          dwFilterIndex;
401   DWORD          dwFilterTag;
402   DWORD          fdwSupport;
403   PWAVEFILTER    pwfltr;
404   DWORD          cbwfltr;
405   WCHAR          szFilter[ACMFILTERDETAILS_FILTER_CHARS];
406 } ACMFILTERDETAILSW, *PACMFILTERDETAILSW;
407
408 typedef struct _ACMFILTERDETAILS16
409 {
410   DWORD          cbStruct;
411   DWORD          dwFilterIndex;
412   DWORD          dwFilterTag;
413   DWORD          fdwSupport;
414   LPWAVEFILTER   pwfltr;
415   DWORD          cbwfltr;
416   CHAR           szFilter[ACMFILTERDETAILS_FILTER_CHARS];
417 } ACMFILTERDETAILS16, *NPACMFILTERDETAILS16, *LPACMFILTERDETAILS16;
418
419 typedef struct _ACMFILTERTAGDETAILSA
420 {
421   DWORD cbStruct;
422   DWORD dwFilterTagIndex;
423   DWORD dwFilterTag;
424   DWORD cbFilterSize;
425   DWORD fdwSupport;
426   DWORD cStandardFilters;
427   CHAR  szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
428 } ACMFILTERTAGDETAILSA, *PACMFILTERTAGDETAILSA;
429
430 typedef struct _ACMFILTERTAGDETAILSW
431 {
432   DWORD cbStruct;
433   DWORD dwFilterTagIndex;
434   DWORD dwFilterTag;
435   DWORD cbFilterSize;
436   DWORD fdwSupport;
437   DWORD cStandardFilters;
438   WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
439 } ACMFILTERTAGDETAILSW, *PACMFILTERTAGDETAILSW;
440
441 typedef struct _ACMFILTERTAGDETAILS16
442 {
443   DWORD cbStruct;
444   DWORD dwFilterTagIndex;
445   DWORD dwFilterTag;
446   DWORD cbFilterSize;
447   DWORD fdwSupport;
448   DWORD cStandardFilters;
449   CHAR  szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
450 } ACMFILTERTAGDETAILS16, *NPACMFILTERTAGDETAILS16, *LPACMFILTERTAGDETAILS16;
451
452 typedef struct _ACMFORMATCHOOSEA
453 {
454   DWORD           cbStruct;
455   DWORD           fdwStyle;
456  
457   HWND          hwndOwner;
458
459   PWAVEFORMATEX   pwfx;
460   DWORD           cbwfx;
461   LPCSTR          pszTitle;
462     
463   CHAR            szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
464   CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
465
466   LPSTR           pszName;
467   DWORD           cchName;
468
469   DWORD           fdwEnum;
470   PWAVEFORMATEX   pwfxEnum;
471     
472   HINSTANCE     hInstance;
473   LPCSTR          pszTemplateName;
474   LPARAM          lCustData;
475   ACMFORMATCHOOSEHOOKPROCA pfnHook;
476 } ACMFORMATCHOOSEA, *PACMFORMATCHOOSEA;
477
478 typedef struct _ACMFORMATCHOOSEW
479 {
480   DWORD           cbStruct;
481   DWORD           fdwStyle;
482     
483   HWND          hwndOwner;
484
485   PWAVEFORMATEX   pwfx;
486   DWORD           cbwfx;
487   LPCWSTR         pszTitle;
488     
489   WCHAR           szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
490   WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
491
492   LPWSTR          pszName;
493   DWORD           cchName;
494
495   DWORD           fdwEnum;
496   LPWAVEFORMATEX  pwfxEnum;
497     
498   HINSTANCE     hInstance;
499   LPCWSTR         pszTemplateName;
500   LPARAM          lCustData;
501   ACMFORMATCHOOSEHOOKPROCW pfnHook;
502 } ACMFORMATCHOOSEW, *PACMFORMATCHOOSEW;
503
504 typedef struct _ACMFORMATCHOOSE16
505 {
506   DWORD            cbStruct;
507   DWORD            fdwStyle;
508     
509   HWND16           hwndOwner;
510
511   LPWAVEFORMATEX   pwfx;
512   DWORD            cbwfx;
513   LPCSTR           pszTitle;
514     
515   CHAR             szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
516   CHAR             szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
517
518   LPSTR            pszName;
519   DWORD            cchName;
520
521   DWORD            fdwEnum;
522   LPWAVEFORMATEX   pwfxEnum;
523     
524   HINSTANCE16      hInstance;
525   LPCSTR           pszTemplateName;
526   LPARAM           lCustData;
527   ACMFORMATCHOOSEHOOKPROC16 pfnHook;
528 } ACMFORMATCHOOSE16, *NPACMFORMATCHOOSE16, *LPACMFORMATCHOOSE16;
529
530 typedef struct _ACMFORMATDETAILSA
531 {
532   DWORD           cbStruct;
533   DWORD           dwFormatIndex;
534   DWORD           dwFormatTag;
535   DWORD           fdwSupport;
536   PWAVEFORMATEX   pwfx;
537   DWORD           cbwfx;
538   CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
539 } ACMFORMATDETAILSA, *PACMFORMATDETAILSA;
540
541 typedef struct _ACMFORMATDETAILSW
542 {
543     DWORD           cbStruct;
544     DWORD           dwFormatIndex;
545     DWORD           dwFormatTag;
546     DWORD           fdwSupport;
547     PWAVEFORMATEX   pwfx;
548     DWORD           cbwfx;
549     WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
550 } ACMFORMATDETAILSW, *PACMFORMATDETAILSW;
551
552 typedef struct _ACMFORMATDETAILS16
553 {
554     DWORD            cbStruct;
555     DWORD            dwFormatIndex;
556     DWORD            dwFormatTag;
557     DWORD            fdwSupport;
558     LPWAVEFORMATEX   pwfx;
559     DWORD            cbwfx;
560     CHAR             szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
561 } ACMFORMATDETAILS16, *NPACMFORMATDETAILS16, *LPACMFORMATDETAILS16;
562
563 typedef struct _ACMFORMATTAGDETAILSA
564 {
565   DWORD cbStruct;
566   DWORD dwFormatTagIndex;
567   DWORD dwFormatTag;
568   DWORD cbFormatSize;
569   DWORD fdwSupport;
570   DWORD cStandardFormats;
571   CHAR  szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
572 } ACMFORMATTAGDETAILSA, *PACMFORMATTAGDETAILSA;
573
574 typedef struct _ACMFORMATTAGDETAILSW
575 {
576   DWORD cbStruct;
577   DWORD dwFormatTagIndex;
578   DWORD dwFormatTag;
579   DWORD cbFormatSize;
580   DWORD fdwSupport;
581   DWORD cStandardFormats;
582   WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
583 } ACMFORMATTAGDETAILSW, *PACMFORMATTAGDETAILSW;
584
585 typedef struct _ACMFORMATTAGDETAILS16
586 {
587   DWORD cbStruct;
588   DWORD dwFormatTagIndex;
589   DWORD dwFormatTag;
590   DWORD cbFormatSize;
591   DWORD fdwSupport;
592   DWORD cStandardFormats;
593   CHAR  szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
594 } ACMFORMATTAGDETAILS16, *NPACMFORMATTAGDETAILS16, *LPACMFORMATTAGDETAILS16;
595
596 typedef struct _ACMSTREAMHEADER
597 {
598   DWORD  cbStruct;
599   DWORD  fdwStatus;
600   DWORD  dwUser;
601   LPBYTE pbSrc;
602   DWORD  cbSrcLength;
603   DWORD  cbSrcLengthUsed;
604   DWORD  dwSrcUser;
605   LPBYTE pbDst;
606   DWORD  cbDstLength;
607   DWORD  cbDstLengthUsed;
608   DWORD  dwDstUser;
609   DWORD  dwReservedDriver[10];
610 } ACMSTREAMHEADER16, *NPACMSTREAMHEADER16, *LPACMSTREAMHEADER16,
611   ACMSTREAMHEADER, *PACMSTREAMHEADER;
612
613 /***********************************************************************
614  * Callbacks 2
615  */
616
617 typedef BOOL CALLBACK (*ACMFILTERENUMCBA)(
618   HACMDRIVERID hadid, PACMFILTERDETAILSA pafd,
619   DWORD dwInstance, DWORD fdwSupport
620 );
621
622 typedef BOOL CALLBACK (*ACMFILTERENUMCBW)(
623   HACMDRIVERID hadid, PACMFILTERDETAILSW pafd,
624   DWORD dwInstance, DWORD fdwSupport
625 );
626
627 typedef BOOL16 CALLBACK (*ACMFILTERENUMCB16)(
628  HACMDRIVERID16 hadid, LPACMFILTERDETAILS16 pafd,
629  DWORD dwInstance, DWORD fdwSupport
630 );
631
632 typedef BOOL CALLBACK (*ACMFILTERTAGENUMCBA)(
633   HACMDRIVERID hadid, PACMFILTERTAGDETAILSA paftd,
634   DWORD dwInstance, DWORD fdwSupport
635 );
636
637 typedef BOOL CALLBACK (*ACMFILTERTAGENUMCBW)(
638   HACMDRIVERID hadid, PACMFILTERTAGDETAILSW paftd,
639   DWORD dwInstance, DWORD fdwSupport
640 );
641
642 typedef BOOL16 CALLBACK (*ACMFILTERTAGENUMCB16)(
643   HACMDRIVERID16 hadid, LPACMFILTERTAGDETAILS16 paftd,
644   DWORD dwInstance, DWORD fdwSupport
645 );
646
647 typedef BOOL CALLBACK (*ACMFORMATENUMCBA)(
648   HACMDRIVERID hadid, PACMFORMATDETAILSA pafd,
649   DWORD dwInstance, DWORD fdwSupport
650 );
651
652 typedef BOOL CALLBACK (*ACMFORMATENUMCBW)(
653   HACMDRIVERID hadid, PACMFORMATDETAILSW pafd,
654   DWORD dwInstance, DWORD fdwSupport
655 );
656
657 typedef BOOL16 CALLBACK (*ACMFORMATENUMCB16)(
658   HACMDRIVERID16 hadid, LPACMFORMATDETAILS16 pafd,
659   DWORD dwInstance, DWORD fdwSupport
660 );
661
662 typedef BOOL CALLBACK (*ACMFORMATTAGENUMCBA)(
663   HACMDRIVERID hadid, PACMFORMATTAGDETAILSA paftd,
664   DWORD dwInstance, DWORD fdwSupport
665 );
666
667 typedef BOOL CALLBACK (*ACMFORMATTAGENUMCBW)(
668   HACMDRIVERID hadid, PACMFORMATTAGDETAILSW paftd,
669   DWORD dwInstance, DWORD fdwSupport
670 );
671
672 typedef BOOL16 CALLBACK (*ACMFORMATTAGENUMCB16)(
673   HACMDRIVERID16 hadid, LPACMFORMATTAGDETAILS16 paftd,
674   DWORD dwInstance, DWORD fdwSupport
675 );
676
677 /***********************************************************************
678  * Functions - Win16
679  */
680
681 DWORD WINAPI acmGetVersion16(
682 );
683 MMRESULT16 WINAPI acmMetrics16(
684   HACMOBJ16 hao, UINT16 uMetric, LPVOID pMetric
685 );
686 MMRESULT16 WINAPI acmDriverEnum16(
687   ACMDRIVERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
688 );
689 MMRESULT16 WINAPI acmDriverDetails16(
690   HACMDRIVERID16 hadid, LPACMDRIVERDETAILS16 padd, DWORD fdwDetails
691 );
692 MMRESULT16 WINAPI acmDriverAdd16(
693   LPHACMDRIVERID16 phadid, HINSTANCE16 hinstModule,
694   LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
695 );
696 MMRESULT16 WINAPI acmDriverRemove16(
697   HACMDRIVERID16 hadid, DWORD fdwRemove
698 );
699 MMRESULT16 WINAPI acmDriverOpen16(
700   LPHACMDRIVER16 phad, HACMDRIVERID16 hadid, DWORD fdwOpen
701 );
702 MMRESULT16 WINAPI acmDriverClose16(
703   HACMDRIVER16 had, DWORD fdwClose
704 );
705 LRESULT WINAPI acmDriverMessage16(
706   HACMDRIVER16 had, UINT16 uMsg, LPARAM lParam1, LPARAM lParam2
707 );
708 MMRESULT16 WINAPI acmDriverID16(
709   HACMOBJ16 hao, LPHACMDRIVERID16 phadid, DWORD fdwDriverID
710 );
711 MMRESULT16 WINAPI acmDriverPriority16(
712  HACMDRIVERID16 hadid, DWORD dwPriority, DWORD fdwPriority
713 );
714 MMRESULT16 WINAPI acmFormatTagDetails16(
715   HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd, DWORD fdwDetails
716 );
717 MMRESULT16 WINAPI acmFormatTagEnum16(
718   HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd,
719   ACMFORMATTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
720 );
721 MMRESULT16 WINAPI acmFormatChoose16(
722   LPACMFORMATCHOOSE16 pafmtc
723 );
724 MMRESULT16 WINAPI acmFormatDetails16(
725   HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd, DWORD fdwDetails
726 );
727 MMRESULT16 WINAPI acmFormatEnum16(
728   HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd,
729   ACMFORMATENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
730 );
731 MMRESULT16 WINAPI acmFormatSuggest16(
732   HACMDRIVER16 had, LPWAVEFORMATEX pwfxSrc, 
733   LPWAVEFORMATEX pwfxDst, DWORD cbwfxDst, DWORD fdwSuggest
734 );
735 MMRESULT16 WINAPI acmFilterTagDetails16(
736   HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd, DWORD fdwDetails
737 );
738 MMRESULT16 WINAPI acmFilterTagEnum16(
739   HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd,
740   ACMFILTERTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
741 );
742 MMRESULT16 WINAPI acmFilterChoose16(
743   LPACMFILTERCHOOSE16 pafltrc
744 );
745 MMRESULT16 WINAPI acmFilterDetails16(
746   HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd, DWORD fdwDetails
747 );
748 MMRESULT16 WINAPI acmFilterEnum16(
749   HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd,
750   ACMFILTERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
751 );
752 MMRESULT16 WINAPI acmStreamOpen16(
753   LPHACMSTREAM16 phas, HACMDRIVER16 had,
754   LPWAVEFORMATEX pwfxSrc, LPWAVEFORMATEX pwfxDst,
755   LPWAVEFILTER pwfltr, DWORD dwCallback,
756   DWORD dwInstance, DWORD fdwOpen
757 );
758 MMRESULT16 WINAPI acmStreamClose16(
759   HACMSTREAM16 has, DWORD fdwClose
760 );
761 MMRESULT16 WINAPI acmStreamSize16(
762   HACMSTREAM16 has, DWORD cbInput, 
763   LPDWORD pdwOutputBytes, DWORD fdwSize
764 );
765 MMRESULT16 WINAPI acmStreamConvert16(
766   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwConvert
767 );
768 MMRESULT16 WINAPI acmStreamReset16(
769   HACMSTREAM16 has, DWORD fdwReset
770 );
771 MMRESULT16 WINAPI acmStreamPrepareHeader16(
772   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwPrepare
773 );
774 MMRESULT16 WINAPI acmStreamUnprepareHeader16(
775   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwUnprepare
776 );
777
778 /***********************************************************************
779  * Functions - Win32
780  */
781
782 MMRESULT WINAPI acmDriverAddA(
783   PHACMDRIVERID phadid, HINSTANCE hinstModule,
784   LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
785 );
786 MMRESULT WINAPI acmDriverAddW(
787   PHACMDRIVERID phadid, HINSTANCE hinstModule,
788   LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
789 );
790 MMRESULT WINAPI acmDriverClose(
791   HACMDRIVER had, DWORD fdwClose
792 );
793 MMRESULT WINAPI acmDriverDetailsA(
794   HACMDRIVERID hadid, PACMDRIVERDETAILSA padd, DWORD fdwDetails
795 );
796 MMRESULT WINAPI acmDriverDetailsW(
797   HACMDRIVERID hadid, PACMDRIVERDETAILSW padd, DWORD fdwDetails
798 );
799 MMRESULT WINAPI acmDriverEnum(
800   ACMDRIVERENUMCB fnCallback, DWORD dwInstance, DWORD fdwEnum
801 );
802 MMRESULT WINAPI acmDriverID(
803   HACMOBJ hao, PHACMDRIVERID phadid, DWORD fdwDriverID
804 );
805 LRESULT WINAPI acmDriverMessage(
806   HACMDRIVER had, UINT uMsg, LPARAM lParam1, LPARAM lParam2
807 );
808 MMRESULT WINAPI acmDriverOpen(
809   PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen
810 );
811 MMRESULT WINAPI acmDriverPriority(
812   HACMDRIVERID hadid, DWORD dwPriority, DWORD fdwPriority
813 );
814 MMRESULT WINAPI acmDriverRemove(
815   HACMDRIVERID hadid, DWORD fdwRemove
816 );
817 MMRESULT WINAPI acmFilterChooseA(
818   PACMFILTERCHOOSEA pafltrc
819 );
820 MMRESULT WINAPI acmFilterChooseW(
821   PACMFILTERCHOOSEW pafltrc
822 );
823 MMRESULT WINAPI acmFilterDetailsA(
824   HACMDRIVER had, PACMFILTERDETAILSA pafd, DWORD fdwDetails
825 );
826 MMRESULT WINAPI acmFilterDetailsW(
827   HACMDRIVER had, PACMFILTERDETAILSW pafd, DWORD fdwDetails
828 );
829 MMRESULT WINAPI acmFilterEnumA(
830   HACMDRIVER had, PACMFILTERDETAILSA pafd, 
831   ACMFILTERENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
832 );
833 MMRESULT WINAPI acmFilterEnumW(
834   HACMDRIVER had, PACMFILTERDETAILSW pafd, 
835   ACMFILTERENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
836 );
837 MMRESULT WINAPI acmFilterTagDetailsA(
838   HACMDRIVER had, PACMFILTERTAGDETAILSA paftd, DWORD fdwDetails
839 );
840 MMRESULT WINAPI acmFilterTagDetailsW(
841   HACMDRIVER had, PACMFILTERTAGDETAILSW paftd, DWORD fdwDetails
842 );
843 MMRESULT WINAPI acmFilterTagEnumA(
844   HACMDRIVER had, PACMFILTERTAGDETAILSA paftd,
845   ACMFILTERTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
846 );
847 MMRESULT WINAPI acmFilterTagEnumW(
848   HACMDRIVER had, PACMFILTERTAGDETAILSW paftd,
849   ACMFILTERTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
850 );
851 MMRESULT WINAPI acmFormatChooseA(
852   PACMFORMATCHOOSEA pafmtc
853 );
854 MMRESULT WINAPI acmFormatChooseW(
855   PACMFORMATCHOOSEW pafmtc
856 );
857 MMRESULT WINAPI acmFormatDetailsA(
858   HACMDRIVER had, PACMFORMATDETAILSA pafd, DWORD fdwDetails
859 );
860 MMRESULT WINAPI acmFormatDetailsW(
861   HACMDRIVER had, PACMFORMATDETAILSW pafd, DWORD fdwDetails
862 );
863 MMRESULT WINAPI acmFormatEnumA(
864   HACMDRIVER had, PACMFORMATDETAILSA pafd,
865   ACMFORMATENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
866 );
867 MMRESULT WINAPI acmFormatEnumW(
868   HACMDRIVER had, PACMFORMATDETAILSW pafd,
869   ACMFORMATENUMCBW fnCallback, DWORD dwInstance,  DWORD fdwEnum
870 );
871 MMRESULT WINAPI acmFormatSuggest(
872   HACMDRIVER had, PWAVEFORMATEX pwfxSrc, PWAVEFORMATEX pwfxDst,
873   DWORD cbwfxDst, DWORD fdwSuggest
874 );
875 MMRESULT WINAPI acmFormatTagDetailsA(
876   HACMDRIVER had, PACMFORMATTAGDETAILSA paftd, DWORD fdwDetails
877 );
878 MMRESULT WINAPI acmFormatTagDetailsW(
879   HACMDRIVER had, PACMFORMATTAGDETAILSW paftd, DWORD fdwDetails
880 );
881 MMRESULT WINAPI acmFormatTagEnumA(
882   HACMDRIVER had, PACMFORMATTAGDETAILSA paftd,
883   ACMFORMATTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
884 );
885 MMRESULT WINAPI acmFormatTagEnumW(
886   HACMDRIVER had, PACMFORMATTAGDETAILSW paftd,
887   ACMFORMATTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
888 );
889 DWORD WINAPI acmGetVersion(
890 );
891 MMRESULT WINAPI acmMetrics(
892   HACMOBJ hao, UINT  uMetric, LPVOID  pMetric
893 );
894 MMRESULT WINAPI acmStreamClose(
895   HACMSTREAM has, DWORD fdwClose
896 );
897 MMRESULT WINAPI acmStreamConvert(
898   HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwConvert
899 );
900 MMRESULT WINAPI acmStreamMessage(
901   HACMSTREAM has, UINT uMsg, LPARAM lParam1, LPARAM lParam2
902 );
903 MMRESULT WINAPI acmStreamOpen(
904   PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pwfxSrc,
905   PWAVEFORMATEX pwfxDst, PWAVEFILTER pwfltr, DWORD dwCallback,
906   DWORD dwInstance, DWORD fdwOpen
907 );
908 MMRESULT WINAPI acmStreamPrepareHeader(
909   HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwPrepare
910 );
911 MMRESULT WINAPI acmStreamReset(
912   HACMSTREAM has, DWORD fdwReset
913 );
914 MMRESULT WINAPI acmStreamSize(
915   HACMSTREAM has, DWORD cbInput, 
916   LPDWORD pdwOutputBytes, DWORD fdwSize
917 );
918 MMRESULT WINAPI acmStreamUnprepareHeader(
919   HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwUnprepare
920 );
921
922 #ifdef __cplusplus
923 } /* extern "C" */
924 #endif /* defined(__cplusplus) */
925
926 #endif  /* __WINE_MSACM_H */
927
928