Fixed sending of LVN_ITEMCHANGING and LVN_ITEMCHANGED messages,
[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
209 typedef UINT CALLBACK (*ACMFILTERCHOOSEHOOKPROC16)(
210   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
211 );
212
213 typedef UINT CALLBACK (*ACMFORMATCHOOSEHOOKPROCA)(
214   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
215 );
216
217 typedef UINT CALLBACK (*ACMFORMATCHOOSEHOOKPROCW)(
218   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
219 );
220
221 typedef UINT16 CALLBACK (*ACMFORMATCHOOSEHOOKPROC16)(
222   HWND16 hwnd, UINT16 uMsg, WPARAM16 wParam, LPARAM lParam
223 );
224
225 /***********************************************************************
226  * Structures
227  */
228
229 typedef struct _ACMDRIVERDETAILSA
230 {
231   DWORD    cbStruct;
232
233   FOURCC   fccType;
234   FOURCC   fccComp;
235
236   WORD     wMid;
237   WORD     wPid;
238
239   DWORD    vdwACM;
240   DWORD    vdwDriver;
241
242   DWORD    fdwSupport;
243   DWORD    cFormatTags;
244   DWORD    cFilterTags;
245
246   HICON  hicon;
247
248   CHAR     szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
249   CHAR     szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
250   CHAR     szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
251   CHAR     szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
252   CHAR     szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
253 } ACMDRIVERDETAILSA, *PACMDRIVERDETAILSA;
254
255 typedef struct _ACMDRIVERDETAILSW
256 {
257   DWORD    cbStruct;
258
259   FOURCC   fccType;
260   FOURCC   fccComp;
261
262   WORD     wMid;
263   WORD     wPid;
264
265   DWORD    vdwACM;
266   DWORD    vdwDriver;
267
268   DWORD    fdwSupport;
269   DWORD    cFormatTags;
270   DWORD    cFilterTags;
271
272   HICON  hicon;
273
274   WCHAR    szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
275   WCHAR    szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
276   WCHAR    szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
277   WCHAR    szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
278   WCHAR    szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
279 } ACMDRIVERDETAILSW, *PACMDRIVERDETAILSW;
280
281 typedef struct _ACMDRIVERDETAILS16
282 {
283   DWORD   cbStruct;
284
285   FOURCC  fccType;
286   FOURCC  fccComp;
287
288   WORD    wMid;
289   WORD    wPid;
290
291   DWORD   vdwACM;
292   DWORD   vdwDriver;
293
294   DWORD   fdwSupport;
295   DWORD   cFormatTags;
296   DWORD   cFilterTags;
297
298   HICON16 hicon;
299
300   CHAR    szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
301   CHAR    szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
302   CHAR    szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
303   CHAR    szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
304   CHAR    szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
305 } ACMDRIVERDETAILS16, *NPACMDRIVERDETAILS16, *LPACMDRIVERDETAILS16;
306
307 typedef struct _ACMFILTERCHOOSEA
308 {
309   DWORD         cbStruct;
310   DWORD         fdwStyle;
311
312   HWND        hwndOwner;
313
314   PWAVEFILTER   pwfltr;
315   DWORD         cbwfltr;
316
317   LPCSTR        pszTitle;
318
319   CHAR          szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
320   CHAR          szFilter[ACMFILTERDETAILS_FILTER_CHARS];
321   LPSTR         pszName;
322   DWORD         cchName;
323
324   DWORD         fdwEnum;
325   PWAVEFILTER   pwfltrEnum;
326     
327   HINSTANCE   hInstance;
328   LPCSTR        pszTemplateName;
329   LPARAM        lCustData;
330   ACMFILTERCHOOSEHOOKPROCA pfnHook;
331 } ACMFILTERCHOOSEA, *PACMFILTERCHOOSEA;
332
333 typedef struct _ACMFILTERCHOOSEW
334 {
335   DWORD         cbStruct;
336   DWORD         fdwStyle;
337
338   HWND        hwndOwner;
339
340   PWAVEFILTER   pwfltr;
341   DWORD         cbwfltr;
342
343   LPCWSTR       pszTitle;
344
345   WCHAR         szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
346   WCHAR         szFilter[ACMFILTERDETAILS_FILTER_CHARS];
347   LPWSTR        pszName;
348   DWORD         cchName;
349
350   DWORD         fdwEnum;
351   PWAVEFILTER   pwfltrEnum;
352     
353   HINSTANCE   hInstance;
354   LPCWSTR       pszTemplateName;
355   LPARAM        lCustData;
356   ACMFILTERCHOOSEHOOKPROCW pfnHook;
357 } ACMFILTERCHOOSEW, *PACMFILTERCHOOSEW;
358
359 typedef struct _ACMFILTERCHOOSE16
360 {
361   DWORD          cbStruct;
362   DWORD          fdwStyle;
363
364   HWND16         hwndOwner;
365
366   LPWAVEFILTER   pwfltr;
367   DWORD          cbwfltr;
368
369   LPCSTR         pszTitle;
370
371   char           szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
372   char           szFilter[ACMFILTERDETAILS_FILTER_CHARS];
373   LPSTR          pszName;
374   DWORD          cchName;
375
376   DWORD          fdwEnum;
377   LPWAVEFILTER   pwfltrEnum;
378     
379   HINSTANCE16    hInstance;
380   LPCSTR         pszTemplateName;
381   LPARAM         lCustData;
382   ACMFILTERCHOOSEHOOKPROC16 pfnHook;
383 } ACMFILTERCHOOSE16, *NPACMFILTERCHOOSE16, *LPACMFILTERCHOOSE16;
384
385 typedef struct _ACMFILTERDETAILSA
386 {
387   DWORD           cbStruct;
388   DWORD           dwFilterIndex;
389   DWORD           dwFilterTag;
390   DWORD           fdwSupport;
391   PWAVEFILTER     pwfltr;
392   DWORD           cbwfltr;
393   CHAR            szFilter[ACMFILTERDETAILS_FILTER_CHARS];
394 } ACMFILTERDETAILSA, *PACMFILTERDETAILSA;
395
396 typedef struct _ACMFILTERDETAILSW
397 {
398   DWORD          cbStruct;
399   DWORD          dwFilterIndex;
400   DWORD          dwFilterTag;
401   DWORD          fdwSupport;
402   PWAVEFILTER    pwfltr;
403   DWORD          cbwfltr;
404   WCHAR          szFilter[ACMFILTERDETAILS_FILTER_CHARS];
405 } ACMFILTERDETAILSW, *PACMFILTERDETAILSW;
406
407 typedef struct _ACMFILTERDETAILS16
408 {
409   DWORD          cbStruct;
410   DWORD          dwFilterIndex;
411   DWORD          dwFilterTag;
412   DWORD          fdwSupport;
413   LPWAVEFILTER   pwfltr;
414   DWORD          cbwfltr;
415   CHAR           szFilter[ACMFILTERDETAILS_FILTER_CHARS];
416 } ACMFILTERDETAILS16, *NPACMFILTERDETAILS16, *LPACMFILTERDETAILS16;
417
418 typedef struct _ACMFILTERTAGDETAILSA
419 {
420   DWORD cbStruct;
421   DWORD dwFilterTagIndex;
422   DWORD dwFilterTag;
423   DWORD cbFilterSize;
424   DWORD fdwSupport;
425   DWORD cStandardFilters;
426   CHAR  szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
427 } ACMFILTERTAGDETAILSA, *PACMFILTERTAGDETAILSA;
428
429 typedef struct _ACMFILTERTAGDETAILSW
430 {
431   DWORD cbStruct;
432   DWORD dwFilterTagIndex;
433   DWORD dwFilterTag;
434   DWORD cbFilterSize;
435   DWORD fdwSupport;
436   DWORD cStandardFilters;
437   WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
438 } ACMFILTERTAGDETAILSW, *PACMFILTERTAGDETAILSW;
439
440 typedef struct _ACMFILTERTAGDETAILS16
441 {
442   DWORD cbStruct;
443   DWORD dwFilterTagIndex;
444   DWORD dwFilterTag;
445   DWORD cbFilterSize;
446   DWORD fdwSupport;
447   DWORD cStandardFilters;
448   CHAR  szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
449 } ACMFILTERTAGDETAILS16, *NPACMFILTERTAGDETAILS16, *LPACMFILTERTAGDETAILS16;
450
451 typedef struct _ACMFORMATCHOOSEA
452 {
453   DWORD           cbStruct;
454   DWORD           fdwStyle;
455  
456   HWND          hwndOwner;
457
458   PWAVEFORMATEX   pwfx;
459   DWORD           cbwfx;
460   LPCSTR          pszTitle;
461     
462   CHAR            szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
463   CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
464
465   LPSTR           pszName;
466   DWORD           cchName;
467
468   DWORD           fdwEnum;
469   PWAVEFORMATEX   pwfxEnum;
470     
471   HINSTANCE     hInstance;
472   LPCSTR          pszTemplateName;
473   LPARAM          lCustData;
474   ACMFORMATCHOOSEHOOKPROCA pfnHook;
475 } ACMFORMATCHOOSEA, *PACMFORMATCHOOSEA;
476
477 typedef struct _ACMFORMATCHOOSEW
478 {
479   DWORD           cbStruct;
480   DWORD           fdwStyle;
481     
482   HWND          hwndOwner;
483
484   PWAVEFORMATEX   pwfx;
485   DWORD           cbwfx;
486   LPCWSTR         pszTitle;
487     
488   WCHAR           szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
489   WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
490
491   LPWSTR          pszName;
492   DWORD           cchName;
493
494   DWORD           fdwEnum;
495   LPWAVEFORMATEX  pwfxEnum;
496     
497   HINSTANCE     hInstance;
498   LPCWSTR         pszTemplateName;
499   LPARAM          lCustData;
500   ACMFORMATCHOOSEHOOKPROCW pfnHook;
501 } ACMFORMATCHOOSEW, *PACMFORMATCHOOSEW;
502
503 typedef struct _ACMFORMATCHOOSE16
504 {
505   DWORD            cbStruct;
506   DWORD            fdwStyle;
507     
508   HWND16           hwndOwner;
509
510   LPWAVEFORMATEX   pwfx;
511   DWORD            cbwfx;
512   LPCSTR           pszTitle;
513     
514   CHAR             szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
515   CHAR             szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
516
517   LPSTR            pszName;
518   DWORD            cchName;
519
520   DWORD            fdwEnum;
521   LPWAVEFORMATEX   pwfxEnum;
522     
523   HINSTANCE16      hInstance;
524   LPCSTR           pszTemplateName;
525   LPARAM           lCustData;
526   ACMFORMATCHOOSEHOOKPROC16 pfnHook;
527 } ACMFORMATCHOOSE16, *NPACMFORMATCHOOSE16, *LPACMFORMATCHOOSE16;
528
529 typedef struct _ACMFORMATDETAILSA
530 {
531   DWORD           cbStruct;
532   DWORD           dwFormatIndex;
533   DWORD           dwFormatTag;
534   DWORD           fdwSupport;
535   PWAVEFORMATEX   pwfx;
536   DWORD           cbwfx;
537   CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
538 } ACMFORMATDETAILSA, *PACMFORMATDETAILSA;
539
540 typedef struct _ACMFORMATDETAILSW
541 {
542     DWORD           cbStruct;
543     DWORD           dwFormatIndex;
544     DWORD           dwFormatTag;
545     DWORD           fdwSupport;
546     PWAVEFORMATEX   pwfx;
547     DWORD           cbwfx;
548     WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
549 } ACMFORMATDETAILSW, *PACMFORMATDETAILSW;
550
551 typedef struct _ACMFORMATDETAILS16
552 {
553     DWORD            cbStruct;
554     DWORD            dwFormatIndex;
555     DWORD            dwFormatTag;
556     DWORD            fdwSupport;
557     LPWAVEFORMATEX   pwfx;
558     DWORD            cbwfx;
559     CHAR             szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
560 } ACMFORMATDETAILS16, *NPACMFORMATDETAILS16, *LPACMFORMATDETAILS16;
561
562 typedef struct _ACMFORMATTAGDETAILSA
563 {
564   DWORD cbStruct;
565   DWORD dwFormatTagIndex;
566   DWORD dwFormatTag;
567   DWORD cbFormatSize;
568   DWORD fdwSupport;
569   DWORD cStandardFormats;
570   CHAR  szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
571 } ACMFORMATTAGDETAILSA, *PACMFORMATTAGDETAILSA;
572
573 typedef struct _ACMFORMATTAGDETAILSW
574 {
575   DWORD cbStruct;
576   DWORD dwFormatTagIndex;
577   DWORD dwFormatTag;
578   DWORD cbFormatSize;
579   DWORD fdwSupport;
580   DWORD cStandardFormats;
581   WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
582 } ACMFORMATTAGDETAILSW, *PACMFORMATTAGDETAILSW;
583
584 typedef struct _ACMFORMATTAGDETAILS16
585 {
586   DWORD cbStruct;
587   DWORD dwFormatTagIndex;
588   DWORD dwFormatTag;
589   DWORD cbFormatSize;
590   DWORD fdwSupport;
591   DWORD cStandardFormats;
592   CHAR  szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
593 } ACMFORMATTAGDETAILS16, *NPACMFORMATTAGDETAILS16, *LPACMFORMATTAGDETAILS16;
594
595 typedef struct _ACMSTREAMHEADER
596 {
597   DWORD  cbStruct;
598   DWORD  fdwStatus;
599   DWORD  dwUser;
600   LPBYTE pbSrc;
601   DWORD  cbSrcLength;
602   DWORD  cbSrcLengthUsed;
603   DWORD  dwSrcUser;
604   LPBYTE pbDst;
605   DWORD  cbDstLength;
606   DWORD  cbDstLengthUsed;
607   DWORD  dwDstUser;
608   DWORD  dwReservedDriver[10];
609 } ACMSTREAMHEADER16, *NPACMSTREAMHEADER16, *LPACMSTREAMHEADER16,
610   ACMSTREAMHEADER, *PACMSTREAMHEADER;
611
612 /***********************************************************************
613  * Callbacks 2
614  */
615
616 typedef BOOL CALLBACK (*ACMFILTERENUMCBA)(
617   HACMDRIVERID hadid, PACMFILTERDETAILSA pafd,
618   DWORD dwInstance, DWORD fdwSupport
619 );
620
621 typedef BOOL CALLBACK (*ACMFILTERENUMCBW)(
622   HACMDRIVERID hadid, PACMFILTERDETAILSW pafd,
623   DWORD dwInstance, DWORD fdwSupport
624 );
625
626 typedef BOOL16 CALLBACK (*ACMFILTERENUMCB16)(
627  HACMDRIVERID16 hadid, LPACMFILTERDETAILS16 pafd,
628  DWORD dwInstance, DWORD fdwSupport
629 );
630
631 typedef BOOL CALLBACK (*ACMFILTERTAGENUMCBA)(
632   HACMDRIVERID hadid, PACMFILTERTAGDETAILSA paftd,
633   DWORD dwInstance, DWORD fdwSupport
634 );
635
636 typedef BOOL CALLBACK (*ACMFILTERTAGENUMCBW)(
637   HACMDRIVERID hadid, PACMFILTERTAGDETAILSW paftd,
638   DWORD dwInstance, DWORD fdwSupport
639 );
640
641 typedef BOOL16 CALLBACK (*ACMFILTERTAGENUMCB16)(
642   HACMDRIVERID16 hadid, LPACMFILTERTAGDETAILS16 paftd,
643   DWORD dwInstance, DWORD fdwSupport
644 );
645
646 typedef BOOL CALLBACK (*ACMFORMATENUMCBA)(
647   HACMDRIVERID hadid, PACMFORMATDETAILSA pafd,
648   DWORD dwInstance, DWORD fdwSupport
649 );
650
651 typedef BOOL CALLBACK (*ACMFORMATENUMCBW)(
652   HACMDRIVERID hadid, PACMFORMATDETAILSW pafd,
653   DWORD dwInstance, DWORD fdwSupport
654 );
655
656 typedef BOOL16 CALLBACK (*ACMFORMATENUMCB16)(
657   HACMDRIVERID16 hadid, LPACMFORMATDETAILS16 pafd,
658   DWORD dwInstance, DWORD fdwSupport
659 );
660
661 typedef BOOL CALLBACK (*ACMFORMATTAGENUMCBA)(
662   HACMDRIVERID hadid, PACMFORMATTAGDETAILSA paftd,
663   DWORD dwInstance, DWORD fdwSupport
664 );
665
666 typedef BOOL CALLBACK (*ACMFORMATTAGENUMCBW)(
667   HACMDRIVERID hadid, PACMFORMATTAGDETAILSW paftd,
668   DWORD dwInstance, DWORD fdwSupport
669 );
670
671 typedef BOOL16 CALLBACK (*ACMFORMATTAGENUMCB16)(
672   HACMDRIVERID16 hadid, LPACMFORMATTAGDETAILS16 paftd,
673   DWORD dwInstance, DWORD fdwSupport
674 );
675
676 /***********************************************************************
677  * Functions - Win16
678  */
679
680 DWORD WINAPI acmGetVersion16(
681 );
682 MMRESULT16 WINAPI acmMetrics16(
683   HACMOBJ16 hao, UINT16 uMetric, LPVOID pMetric
684 );
685 MMRESULT16 WINAPI acmDriverEnum16(
686   ACMDRIVERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
687 );
688 MMRESULT16 WINAPI acmDriverDetails16(
689   HACMDRIVERID16 hadid, LPACMDRIVERDETAILS16 padd, DWORD fdwDetails
690 );
691 MMRESULT16 WINAPI acmDriverAdd16(
692   LPHACMDRIVERID16 phadid, HINSTANCE16 hinstModule,
693   LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
694 );
695 MMRESULT16 WINAPI acmDriverRemove16(
696   HACMDRIVERID16 hadid, DWORD fdwRemove
697 );
698 MMRESULT16 WINAPI acmDriverOpen16(
699   LPHACMDRIVER16 phad, HACMDRIVERID16 hadid, DWORD fdwOpen
700 );
701 MMRESULT16 WINAPI acmDriverClose16(
702   HACMDRIVER16 had, DWORD fdwClose
703 );
704 LRESULT WINAPI acmDriverMessage16(
705   HACMDRIVER16 had, UINT16 uMsg, LPARAM lParam1, LPARAM lParam2
706 );
707 MMRESULT16 WINAPI acmDriverID16(
708   HACMOBJ16 hao, LPHACMDRIVERID16 phadid, DWORD fdwDriverID
709 );
710 MMRESULT16 WINAPI acmDriverPriority16(
711  HACMDRIVERID16 hadid, DWORD dwPriority, DWORD fdwPriority
712 );
713 MMRESULT16 WINAPI acmFormatTagDetails16(
714   HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd, DWORD fdwDetails
715 );
716 MMRESULT16 WINAPI acmFormatTagEnum16(
717   HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd,
718   ACMFORMATTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
719 );
720 MMRESULT16 WINAPI acmFormatChoose16(
721   LPACMFORMATCHOOSE16 pafmtc
722 );
723 MMRESULT16 WINAPI acmFormatDetails16(
724   HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd, DWORD fdwDetails
725 );
726 MMRESULT16 WINAPI acmFormatEnum16(
727   HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd,
728   ACMFORMATENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
729 );
730 MMRESULT16 WINAPI acmFormatSuggest16(
731   HACMDRIVER16 had, LPWAVEFORMATEX pwfxSrc, 
732   LPWAVEFORMATEX pwfxDst, DWORD cbwfxDst, DWORD fdwSuggest
733 );
734 MMRESULT16 WINAPI acmFilterTagDetails16(
735   HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd, DWORD fdwDetails
736 );
737 MMRESULT16 WINAPI acmFilterTagEnum16(
738   HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd,
739   ACMFILTERTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
740 );
741 MMRESULT16 WINAPI acmFilterChoose16(
742   LPACMFILTERCHOOSE16 pafltrc
743 );
744 MMRESULT16 WINAPI acmFilterDetails16(
745   HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd, DWORD fdwDetails
746 );
747 MMRESULT16 WINAPI acmFilterEnum16(
748   HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd,
749   ACMFILTERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
750 );
751 MMRESULT16 WINAPI acmStreamOpen16(
752   LPHACMSTREAM16 phas, HACMDRIVER16 had,
753   LPWAVEFORMATEX pwfxSrc, LPWAVEFORMATEX pwfxDst,
754   LPWAVEFILTER pwfltr, DWORD dwCallback,
755   DWORD dwInstance, DWORD fdwOpen
756 );
757 MMRESULT16 WINAPI acmStreamClose16(
758   HACMSTREAM16 has, DWORD fdwClose
759 );
760 MMRESULT16 WINAPI acmStreamSize16(
761   HACMSTREAM16 has, DWORD cbInput, 
762   LPDWORD pdwOutputBytes, DWORD fdwSize
763 );
764 MMRESULT16 WINAPI acmStreamConvert16(
765   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwConvert
766 );
767 MMRESULT16 WINAPI acmStreamReset16(
768   HACMSTREAM16 has, DWORD fdwReset
769 );
770 MMRESULT16 WINAPI acmStreamPrepareHeader16(
771   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwPrepare
772 );
773 MMRESULT16 WINAPI acmStreamUnprepareHeader16(
774   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwUnprepare
775 );
776
777 /***********************************************************************
778  * Functions - Win32
779  */
780
781 MMRESULT WINAPI acmDriverAddA(
782   PHACMDRIVERID phadid, HINSTANCE hinstModule,
783   LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
784 );
785 MMRESULT WINAPI acmDriverAddW(
786   PHACMDRIVERID phadid, HINSTANCE hinstModule,
787   LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
788 );
789 MMRESULT WINAPI acmDriverClose(
790   HACMDRIVER had, DWORD fdwClose
791 );
792 MMRESULT WINAPI acmDriverDetailsA(
793   HACMDRIVERID hadid, PACMDRIVERDETAILSA padd, DWORD fdwDetails
794 );
795 MMRESULT WINAPI acmDriverDetailsW(
796   HACMDRIVERID hadid, PACMDRIVERDETAILSW padd, DWORD fdwDetails
797 );
798 MMRESULT WINAPI acmDriverEnum(
799   ACMDRIVERENUMCB fnCallback, DWORD dwInstance, DWORD fdwEnum
800 );
801 MMRESULT WINAPI acmDriverID(
802   HACMOBJ hao, PHACMDRIVERID phadid, DWORD fdwDriverID
803 );
804 LRESULT WINAPI acmDriverMessage(
805   HACMDRIVER had, UINT uMsg, LPARAM lParam1, LPARAM lParam2
806 );
807 MMRESULT WINAPI acmDriverOpen(
808   PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen
809 );
810 MMRESULT WINAPI acmDriverPriority(
811   HACMDRIVERID hadid, DWORD dwPriority, DWORD fdwPriority
812 );
813 MMRESULT WINAPI acmDriverRemove(
814   HACMDRIVERID hadid, DWORD fdwRemove
815 );
816 MMRESULT WINAPI acmFilterChooseA(
817   PACMFILTERCHOOSEA pafltrc
818 );
819 MMRESULT WINAPI acmFilterChooseW(
820   PACMFILTERCHOOSEW pafltrc
821 );
822 MMRESULT WINAPI acmFilterDetailsA(
823   HACMDRIVER had, PACMFILTERDETAILSA pafd, DWORD fdwDetails
824 );
825 MMRESULT WINAPI acmFilterDetailsW(
826   HACMDRIVER had, PACMFILTERDETAILSW pafd, DWORD fdwDetails
827 );
828 MMRESULT WINAPI acmFilterEnumA(
829   HACMDRIVER had, PACMFILTERDETAILSA pafd, 
830   ACMFILTERENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
831 );
832 MMRESULT WINAPI acmFilterEnumW(
833   HACMDRIVER had, PACMFILTERDETAILSW pafd, 
834   ACMFILTERENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
835 );
836 MMRESULT WINAPI acmFilterTagDetailsA(
837   HACMDRIVER had, PACMFILTERTAGDETAILSA paftd, DWORD fdwDetails
838 );
839 MMRESULT WINAPI acmFilterTagDetailsW(
840   HACMDRIVER had, PACMFILTERTAGDETAILSW paftd, DWORD fdwDetails
841 );
842 MMRESULT WINAPI acmFilterTagEnumA(
843   HACMDRIVER had, PACMFILTERTAGDETAILSA paftd,
844   ACMFILTERTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
845 );
846 MMRESULT WINAPI acmFilterTagEnumW(
847   HACMDRIVER had, PACMFILTERTAGDETAILSW paftd,
848   ACMFILTERTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
849 );
850 MMRESULT WINAPI acmFormatChooseA(
851   PACMFORMATCHOOSEA pafmtc
852 );
853 MMRESULT WINAPI acmFormatChooseW(
854   PACMFORMATCHOOSEW pafmtc
855 );
856 MMRESULT WINAPI acmFormatDetailsA(
857   HACMDRIVER had, PACMFORMATDETAILSA pafd, DWORD fdwDetails
858 );
859 MMRESULT WINAPI acmFormatDetailsW(
860   HACMDRIVER had, PACMFORMATDETAILSW pafd, DWORD fdwDetails
861 );
862 MMRESULT WINAPI acmFormatEnumA(
863   HACMDRIVER had, PACMFORMATDETAILSA pafd,
864   ACMFORMATENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
865 );
866 MMRESULT WINAPI acmFormatEnumW(
867   HACMDRIVER had, PACMFORMATDETAILSW pafd,
868   ACMFORMATENUMCBW fnCallback, DWORD dwInstance,  DWORD fdwEnum
869 );
870 MMRESULT WINAPI acmFormatSuggest(
871   HACMDRIVER had, PWAVEFORMATEX pwfxSrc, PWAVEFORMATEX pwfxDst,
872   DWORD cbwfxDst, DWORD fdwSuggest
873 );
874 MMRESULT WINAPI acmFormatTagDetailsA(
875   HACMDRIVER had, PACMFORMATTAGDETAILSA paftd, DWORD fdwDetails
876 );
877 MMRESULT WINAPI acmFormatTagDetailsW(
878   HACMDRIVER had, PACMFORMATTAGDETAILSW paftd, DWORD fdwDetails
879 );
880 MMRESULT WINAPI acmFormatTagEnumA(
881   HACMDRIVER had, PACMFORMATTAGDETAILSA paftd,
882   ACMFORMATTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
883 );
884 MMRESULT WINAPI acmFormatTagEnumW(
885   HACMDRIVER had, PACMFORMATTAGDETAILSW paftd,
886   ACMFORMATTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
887 );
888 DWORD WINAPI acmGetVersion(
889 );
890 MMRESULT WINAPI acmMetrics(
891   HACMOBJ hao, UINT  uMetric, LPVOID  pMetric
892 );
893 MMRESULT WINAPI acmStreamClose(
894   HACMSTREAM has, DWORD fdwClose
895 );
896 MMRESULT WINAPI acmStreamConvert(
897   HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwConvert
898 );
899 MMRESULT WINAPI acmStreamMessage(
900   HACMSTREAM has, UINT uMsg, LPARAM lParam1, LPARAM lParam2
901 );
902 MMRESULT WINAPI acmStreamOpen(
903   PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pwfxSrc,
904   PWAVEFORMATEX pwfxDst, PWAVEFILTER pwfltr, DWORD dwCallback,
905   DWORD dwInstance, DWORD fdwOpen
906 );
907 MMRESULT WINAPI acmStreamPrepareHeader(
908   HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwPrepare
909 );
910 MMRESULT WINAPI acmStreamReset(
911   HACMSTREAM has, DWORD fdwReset
912 );
913 MMRESULT WINAPI acmStreamSize(
914   HACMSTREAM has, DWORD cbInput, 
915   LPDWORD pdwOutputBytes, DWORD fdwSize
916 );
917 MMRESULT WINAPI acmStreamUnprepareHeader(
918   HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwUnprepare
919 );
920
921 #ifdef __cplusplus
922 } /* extern "C" */
923 #endif /* defined(__cplusplus) */
924
925 #endif  /* __WINE_MSACM_H */
926
927