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