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