Move __stdcall/__cdecl to the right place.
[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 /* handles */
194
195 DECLARE_OLD_HANDLE(HACMDRIVERID);
196 DECLARE_OLD_HANDLE(HACMDRIVER);
197 DECLARE_OLD_HANDLE(HACMSTREAM);
198 DECLARE_OLD_HANDLE(HACMOBJ);
199
200 /***********************************************************************
201  * Callbacks
202  */
203
204 typedef BOOL (CALLBACK *ACMDRIVERENUMCB)(
205   HACMDRIVERID hadid, DWORD dwInstance, DWORD fdwSupport
206 );
207
208 typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCA)(
209   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
210 );
211
212 typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCW)(
213   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
214 );
215 #define ACMFILTERCHOOSEHOOKPROC WINELIB_NAME_AW(ACMFILTERCHOOSEHOOKPROC)
216
217 typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCA)(
218   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
219 );
220
221 typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCW)(
222   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
223 );
224 #define ACMFORMATCHOOSEHOOKPROC WINELIB_NAME_AW(ACMFORMATCHOOSEHOOKPROC)
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, *LPACMDRIVERDETAILSA;
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, *LPACMDRIVERDETAILSW;
281
282 DECL_WINELIB_TYPE_AW(ACMDRIVERDETAILS)
283 DECL_WINELIB_TYPE_AW(PACMDRIVERDETAILS)
284 DECL_WINELIB_TYPE_AW(LPACMDRIVERDETAILS)
285
286 typedef struct _ACMFILTERCHOOSEA
287 {
288   DWORD         cbStruct;
289   DWORD         fdwStyle;
290
291   HWND        hwndOwner;
292
293   PWAVEFILTER   pwfltr;
294   DWORD         cbwfltr;
295
296   LPCSTR        pszTitle;
297
298   CHAR          szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
299   CHAR          szFilter[ACMFILTERDETAILS_FILTER_CHARS];
300   LPSTR         pszName;
301   DWORD         cchName;
302
303   DWORD         fdwEnum;
304   PWAVEFILTER   pwfltrEnum;
305     
306   HINSTANCE   hInstance;
307   LPCSTR        pszTemplateName;
308   LPARAM        lCustData;
309   ACMFILTERCHOOSEHOOKPROCA pfnHook;
310 } ACMFILTERCHOOSEA, *PACMFILTERCHOOSEA, *LPACMFILTERCHOOSEA;
311
312 typedef struct _ACMFILTERCHOOSEW
313 {
314   DWORD         cbStruct;
315   DWORD         fdwStyle;
316
317   HWND        hwndOwner;
318
319   PWAVEFILTER   pwfltr;
320   DWORD         cbwfltr;
321
322   LPCWSTR       pszTitle;
323
324   WCHAR         szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
325   WCHAR         szFilter[ACMFILTERDETAILS_FILTER_CHARS];
326   LPWSTR        pszName;
327   DWORD         cchName;
328
329   DWORD         fdwEnum;
330   PWAVEFILTER   pwfltrEnum;
331     
332   HINSTANCE   hInstance;
333   LPCWSTR       pszTemplateName;
334   LPARAM        lCustData;
335   ACMFILTERCHOOSEHOOKPROCW pfnHook;
336 } ACMFILTERCHOOSEW, *PACMFILTERCHOOSEW, *LPACMFILTERCHOOSEW;
337
338 DECL_WINELIB_TYPE_AW(ACMFILTERCHOOSE)
339 DECL_WINELIB_TYPE_AW(PACMFILTERCHOOSE)
340 DECL_WINELIB_TYPE_AW(LPACMFILTERCHOOSE)
341
342 typedef struct _ACMFILTERDETAILSA
343 {
344   DWORD           cbStruct;
345   DWORD           dwFilterIndex;
346   DWORD           dwFilterTag;
347   DWORD           fdwSupport;
348   PWAVEFILTER     pwfltr;
349   DWORD           cbwfltr;
350   CHAR            szFilter[ACMFILTERDETAILS_FILTER_CHARS];
351 } ACMFILTERDETAILSA, *PACMFILTERDETAILSA, *LPACMFILTERDETAILSA;
352
353 typedef struct _ACMFILTERDETAILSW
354 {
355   DWORD          cbStruct;
356   DWORD          dwFilterIndex;
357   DWORD          dwFilterTag;
358   DWORD          fdwSupport;
359   PWAVEFILTER    pwfltr;
360   DWORD          cbwfltr;
361   WCHAR          szFilter[ACMFILTERDETAILS_FILTER_CHARS];
362 } ACMFILTERDETAILSW, *PACMFILTERDETAILSW, *LPACMFILTERDETAILSW;
363
364 DECL_WINELIB_TYPE_AW(ACMFILTERDETAILS)
365 DECL_WINELIB_TYPE_AW(PACMFILTERDETAILS)
366 DECL_WINELIB_TYPE_AW(LPACMFILTERDETAILS)
367
368 typedef struct _ACMFILTERTAGDETAILSA
369 {
370   DWORD cbStruct;
371   DWORD dwFilterTagIndex;
372   DWORD dwFilterTag;
373   DWORD cbFilterSize;
374   DWORD fdwSupport;
375   DWORD cStandardFilters;
376   CHAR  szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
377 } ACMFILTERTAGDETAILSA, *PACMFILTERTAGDETAILSA, *LPACMFILTERTAGDETAILSA;
378
379 typedef struct _ACMFILTERTAGDETAILSW
380 {
381   DWORD cbStruct;
382   DWORD dwFilterTagIndex;
383   DWORD dwFilterTag;
384   DWORD cbFilterSize;
385   DWORD fdwSupport;
386   DWORD cStandardFilters;
387   WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
388 } ACMFILTERTAGDETAILSW, *PACMFILTERTAGDETAILSW, *LPACMFILTERTAGDETAILSW;
389
390 DECL_WINELIB_TYPE_AW(ACMFILTERTAGDETAILS)
391 DECL_WINELIB_TYPE_AW(PACMFILTERTAGDETAILS)
392 DECL_WINELIB_TYPE_AW(LPACMFILTERTAGDETAILS)
393
394 typedef struct _ACMFORMATCHOOSEA
395 {
396   DWORD           cbStruct;
397   DWORD           fdwStyle;
398  
399   HWND          hwndOwner;
400
401   PWAVEFORMATEX   pwfx;
402   DWORD           cbwfx;
403   LPCSTR          pszTitle;
404     
405   CHAR            szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
406   CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
407
408   LPSTR           pszName;
409   DWORD           cchName;
410
411   DWORD           fdwEnum;
412   PWAVEFORMATEX   pwfxEnum;
413     
414   HINSTANCE     hInstance;
415   LPCSTR          pszTemplateName;
416   LPARAM          lCustData;
417   ACMFORMATCHOOSEHOOKPROCA pfnHook;
418 } ACMFORMATCHOOSEA, *PACMFORMATCHOOSEA, *LPACMFORMATCHOOSEA;
419
420 typedef struct _ACMFORMATCHOOSEW
421 {
422   DWORD           cbStruct;
423   DWORD           fdwStyle;
424     
425   HWND          hwndOwner;
426
427   PWAVEFORMATEX   pwfx;
428   DWORD           cbwfx;
429   LPCWSTR         pszTitle;
430     
431   WCHAR           szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
432   WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
433
434   LPWSTR          pszName;
435   DWORD           cchName;
436
437   DWORD           fdwEnum;
438   LPWAVEFORMATEX  pwfxEnum;
439     
440   HINSTANCE     hInstance;
441   LPCWSTR         pszTemplateName;
442   LPARAM          lCustData;
443   ACMFORMATCHOOSEHOOKPROCW pfnHook;
444 } ACMFORMATCHOOSEW, *PACMFORMATCHOOSEW, *LPACMFORMATCHOOSEW;
445
446 DECL_WINELIB_TYPE_AW(ACMFORMATCHOOSE)
447 DECL_WINELIB_TYPE_AW(PACMFORMATCHOOSE)
448 DECL_WINELIB_TYPE_AW(LPACMFORMATCHOOSE)
449
450 typedef struct _ACMFORMATDETAILSA
451 {
452   DWORD           cbStruct;
453   DWORD           dwFormatIndex;
454   DWORD           dwFormatTag;
455   DWORD           fdwSupport;
456   PWAVEFORMATEX   pwfx;
457   DWORD           cbwfx;
458   CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
459 } ACMFORMATDETAILSA, *PACMFORMATDETAILSA, *LPACMFORMATDETAILSA;
460
461 typedef struct _ACMFORMATDETAILSW
462 {
463     DWORD           cbStruct;
464     DWORD           dwFormatIndex;
465     DWORD           dwFormatTag;
466     DWORD           fdwSupport;
467     PWAVEFORMATEX   pwfx;
468     DWORD           cbwfx;
469     WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
470 } ACMFORMATDETAILSW, *PACMFORMATDETAILSW, *LPACMFORMATDETAILSW;
471
472 DECL_WINELIB_TYPE_AW(ACMFORMATDETAILS)
473 DECL_WINELIB_TYPE_AW(PACMFORMATDETAILS)
474 DECL_WINELIB_TYPE_AW(LPACMFORMATDETAILS)
475
476 typedef struct _ACMFORMATTAGDETAILSA
477 {
478   DWORD cbStruct;
479   DWORD dwFormatTagIndex;
480   DWORD dwFormatTag;
481   DWORD cbFormatSize;
482   DWORD fdwSupport;
483   DWORD cStandardFormats;
484   CHAR  szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
485 } ACMFORMATTAGDETAILSA, *PACMFORMATTAGDETAILSA, *LPACMFORMATTAGDETAILSA;
486
487 typedef struct _ACMFORMATTAGDETAILSW
488 {
489   DWORD cbStruct;
490   DWORD dwFormatTagIndex;
491   DWORD dwFormatTag;
492   DWORD cbFormatSize;
493   DWORD fdwSupport;
494   DWORD cStandardFormats;
495   WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
496 } ACMFORMATTAGDETAILSW, *PACMFORMATTAGDETAILSW, *LPACMFORMATTAGDETAILSW;
497
498 DECL_WINELIB_TYPE_AW(ACMFORMATTAGDETAILS)
499 DECL_WINELIB_TYPE_AW(PACMFORMATTAGDETAILS)
500 DECL_WINELIB_TYPE_AW(LPACMFORMATTAGDETAILS)
501
502 typedef struct _ACMSTREAMHEADER
503 {
504   DWORD  cbStruct;
505   DWORD  fdwStatus;
506   DWORD  dwUser;
507   LPBYTE pbSrc;
508   DWORD  cbSrcLength;
509   DWORD  cbSrcLengthUsed;
510   DWORD  dwSrcUser;
511   LPBYTE pbDst;
512   DWORD  cbDstLength;
513   DWORD  cbDstLengthUsed;
514   DWORD  dwDstUser;
515   DWORD  dwReservedDriver[10];
516 } ACMSTREAMHEADER, *PACMSTREAMHEADER, *LPACMSTREAMHEADER;
517
518 /***********************************************************************
519  * Callbacks 2
520  */
521
522 typedef BOOL (CALLBACK *ACMFILTERENUMCBA)(
523   HACMDRIVERID hadid, PACMFILTERDETAILSA pafd,
524   DWORD dwInstance, DWORD fdwSupport
525 );
526
527 typedef BOOL (CALLBACK *ACMFILTERENUMCBW)(
528   HACMDRIVERID hadid, PACMFILTERDETAILSW pafd,
529   DWORD dwInstance, DWORD fdwSupport
530 );
531
532 #define ACMFILTERENUMCB WINELIB_NAME_AW(ACMFILTERENUMCB)
533
534 typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBA)(
535   HACMDRIVERID hadid, PACMFILTERTAGDETAILSA paftd,
536   DWORD dwInstance, DWORD fdwSupport
537 );
538
539 typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBW)(
540   HACMDRIVERID hadid, PACMFILTERTAGDETAILSW paftd,
541   DWORD dwInstance, DWORD fdwSupport
542 );
543
544 #define ACMFILTERTAGENUMCB WINELIB_NAME_AW(ACMFILTERTAGENUMCB)
545
546 typedef BOOL (CALLBACK *ACMFORMATENUMCBA)(
547   HACMDRIVERID hadid, PACMFORMATDETAILSA pafd,
548   DWORD dwInstance, DWORD fdwSupport
549 );
550
551 typedef BOOL (CALLBACK *ACMFORMATENUMCBW)(
552   HACMDRIVERID hadid, PACMFORMATDETAILSW pafd,
553   DWORD dwInstance, DWORD fdwSupport
554 );
555
556 #define ACMFORMATENUMCB WINELIB_NAME_AW(ACMFORMATENUMCB)
557
558 typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA)(
559   HACMDRIVERID hadid, PACMFORMATTAGDETAILSA paftd,
560   DWORD dwInstance, DWORD fdwSupport
561 );
562
563 typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW)(
564   HACMDRIVERID hadid, PACMFORMATTAGDETAILSW paftd,
565   DWORD dwInstance, DWORD fdwSupport
566 );
567
568 #define ACMFORMATTAGENUMCB WINELIB_NAME_AW(ACMFORMATTAGENUMCB)
569
570 /***********************************************************************
571  * Functions - Win32
572  */
573
574 MMRESULT WINAPI acmDriverAddA(
575   PHACMDRIVERID phadid, HINSTANCE hinstModule,
576   LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
577 );
578 MMRESULT WINAPI acmDriverAddW(
579   PHACMDRIVERID phadid, HINSTANCE hinstModule,
580   LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
581 );
582 #define acmDriverAdd WINELIB_NAME_AW(acmDriverAdd)
583
584 MMRESULT WINAPI acmDriverClose(
585   HACMDRIVER had, DWORD fdwClose
586 );
587 MMRESULT WINAPI acmDriverDetailsA(
588   HACMDRIVERID hadid, PACMDRIVERDETAILSA padd, DWORD fdwDetails
589 );
590 MMRESULT WINAPI acmDriverDetailsW(
591   HACMDRIVERID hadid, PACMDRIVERDETAILSW padd, DWORD fdwDetails
592 );
593 #define acmDriverDetails WINELIB_NAME_AW(acmDriverDetails)
594
595 MMRESULT WINAPI acmDriverEnum(
596   ACMDRIVERENUMCB fnCallback, DWORD dwInstance, DWORD fdwEnum
597 );
598 MMRESULT WINAPI acmDriverID(
599   HACMOBJ hao, PHACMDRIVERID phadid, DWORD fdwDriverID
600 );
601 LRESULT WINAPI acmDriverMessage(
602   HACMDRIVER had, UINT uMsg, LPARAM lParam1, LPARAM lParam2
603 );
604 MMRESULT WINAPI acmDriverOpen(
605   PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen
606 );
607 MMRESULT WINAPI acmDriverPriority(
608   HACMDRIVERID hadid, DWORD dwPriority, DWORD fdwPriority
609 );
610 MMRESULT WINAPI acmDriverRemove(
611   HACMDRIVERID hadid, DWORD fdwRemove
612 );
613 MMRESULT WINAPI acmFilterChooseA(
614   PACMFILTERCHOOSEA pafltrc
615 );
616 MMRESULT WINAPI acmFilterChooseW(
617   PACMFILTERCHOOSEW pafltrc
618 );
619 #define acmFilterChoose WINELIB_NAME_AW(acmFilterChoose)
620
621 MMRESULT WINAPI acmFilterDetailsA(
622   HACMDRIVER had, PACMFILTERDETAILSA pafd, DWORD fdwDetails
623 );
624 MMRESULT WINAPI acmFilterDetailsW(
625   HACMDRIVER had, PACMFILTERDETAILSW pafd, DWORD fdwDetails
626 );
627 #define acmFilterDetails WINELIB_NAME_AW(acmFilterDetails)
628
629 MMRESULT WINAPI acmFilterEnumA(
630   HACMDRIVER had, PACMFILTERDETAILSA pafd, 
631   ACMFILTERENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
632 );
633 MMRESULT WINAPI acmFilterEnumW(
634   HACMDRIVER had, PACMFILTERDETAILSW pafd, 
635   ACMFILTERENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
636 );
637 #define acmFilterEnum WINELIB_NAME_AW(acmFilterEnum)
638
639 MMRESULT WINAPI acmFilterTagDetailsA(
640   HACMDRIVER had, PACMFILTERTAGDETAILSA paftd, DWORD fdwDetails
641 );
642 MMRESULT WINAPI acmFilterTagDetailsW(
643   HACMDRIVER had, PACMFILTERTAGDETAILSW paftd, DWORD fdwDetails
644 );
645 #define acmFilterTagDetails WINELIB_NAME_AW(acmFilterTagDetails)
646
647 MMRESULT WINAPI acmFilterTagEnumA(
648   HACMDRIVER had, PACMFILTERTAGDETAILSA paftd,
649   ACMFILTERTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
650 );
651 MMRESULT WINAPI acmFilterTagEnumW(
652   HACMDRIVER had, PACMFILTERTAGDETAILSW paftd,
653   ACMFILTERTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
654 );
655 #define acmFilterTagEnum WINELIB_NAME_AW(acmFilterTagEnum)
656
657 MMRESULT WINAPI acmFormatChooseA(
658   PACMFORMATCHOOSEA pafmtc
659 );
660 MMRESULT WINAPI acmFormatChooseW(
661   PACMFORMATCHOOSEW pafmtc
662 );
663 #define acmFormatChoose WINELIB_NAME_AW(acmFormatChoose)
664
665 MMRESULT WINAPI acmFormatDetailsA(
666   HACMDRIVER had, PACMFORMATDETAILSA pafd, DWORD fdwDetails
667 );
668 MMRESULT WINAPI acmFormatDetailsW(
669   HACMDRIVER had, PACMFORMATDETAILSW pafd, DWORD fdwDetails
670 );
671 #define acmFormatDetails WINELIB_NAME_AW(acmFormatDetails)
672
673 MMRESULT WINAPI acmFormatEnumA(
674   HACMDRIVER had, PACMFORMATDETAILSA pafd,
675   ACMFORMATENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
676 );
677 MMRESULT WINAPI acmFormatEnumW(
678   HACMDRIVER had, PACMFORMATDETAILSW pafd,
679   ACMFORMATENUMCBW fnCallback, DWORD dwInstance,  DWORD fdwEnum
680 );
681 #define acmFormatEnum WINELIB_NAME_AW(acmFormatEnum)
682
683 MMRESULT WINAPI acmFormatSuggest(
684   HACMDRIVER had, PWAVEFORMATEX pwfxSrc, PWAVEFORMATEX pwfxDst,
685   DWORD cbwfxDst, DWORD fdwSuggest
686 );
687 MMRESULT WINAPI acmFormatTagDetailsA(
688   HACMDRIVER had, PACMFORMATTAGDETAILSA paftd, DWORD fdwDetails
689 );
690 MMRESULT WINAPI acmFormatTagDetailsW(
691   HACMDRIVER had, PACMFORMATTAGDETAILSW paftd, DWORD fdwDetails
692 );
693 #define acmFormatTagDetails WINELIB_NAME_AW(acmFormatTagDetails)
694
695 MMRESULT WINAPI acmFormatTagEnumA(
696   HACMDRIVER had, PACMFORMATTAGDETAILSA paftd,
697   ACMFORMATTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
698 );
699 MMRESULT WINAPI acmFormatTagEnumW(
700   HACMDRIVER had, PACMFORMATTAGDETAILSW paftd,
701   ACMFORMATTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
702 );
703 #define acmFormatTagEnum WINELIB_NAME_AW(acmFormatTagEnum)
704
705 DWORD WINAPI acmGetVersion(void
706 );
707 MMRESULT WINAPI acmMetrics(
708   HACMOBJ hao, UINT  uMetric, LPVOID  pMetric
709 );
710 MMRESULT WINAPI acmStreamClose(
711   HACMSTREAM has, DWORD fdwClose
712 );
713 MMRESULT WINAPI acmStreamConvert(
714   HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwConvert
715 );
716 MMRESULT WINAPI acmStreamMessage(
717   HACMSTREAM has, UINT uMsg, LPARAM lParam1, LPARAM lParam2
718 );
719 MMRESULT WINAPI acmStreamOpen(
720   PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pwfxSrc,
721   PWAVEFORMATEX pwfxDst, PWAVEFILTER pwfltr, DWORD dwCallback,
722   DWORD dwInstance, DWORD fdwOpen
723 );
724 MMRESULT WINAPI acmStreamPrepareHeader(
725   HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwPrepare
726 );
727 MMRESULT WINAPI acmStreamReset(
728   HACMSTREAM has, DWORD fdwReset
729 );
730 MMRESULT WINAPI acmStreamSize(
731   HACMSTREAM has, DWORD cbInput, 
732   LPDWORD pdwOutputBytes, DWORD fdwSize
733 );
734 MMRESULT WINAPI acmStreamUnprepareHeader(
735   HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwUnprepare
736 );
737
738 #ifdef __cplusplus
739 } /* extern "C" */
740 #endif /* defined(__cplusplus) */
741
742 #endif  /* __WINE_MSACM_H */
743
744