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