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