Send message for WSAAsyncSelect sockets directly from the server,
[wine] / include / msacm.h
1 /*
2  * Declarations for MSACM
3  *
4  * Copyright (C) the Wine project
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 #ifndef __WINE_MSACM_H
22 #define __WINE_MSACM_H
23
24 #include "windef.h"
25 #include "mmsystem.h"
26 #include "mmreg.h"
27
28 #ifdef __cplusplus
29 extern "C" {
30 #endif /* defined(__cplusplus) */
31
32 #define ACMAPI              WINAPI
33
34 /***********************************************************************
35  * Defines/Enums
36  */
37 #define ACMERR_BASE        512
38 #define ACMERR_NOTPOSSIBLE (ACMERR_BASE + 0)
39 #define ACMERR_BUSY        (ACMERR_BASE + 1)
40 #define ACMERR_UNPREPARED  (ACMERR_BASE + 2)
41 #define ACMERR_CANCELED    (ACMERR_BASE + 3)
42
43 #define MM_ACM_OPEN  MM_STREAM_OPEN
44 #define MM_ACM_CLOSE MM_STREAM_CLOSE
45 #define MM_ACM_DONE  MM_STREAM_DONE
46
47 #define ACM_DRIVERADDF_FUNCTION   0x00000003L
48 #define ACM_DRIVERADDF_NOTIFYHWND 0x00000004L
49 #define ACM_DRIVERADDF_TYPEMASK   0x00000007L
50 #define ACM_DRIVERADDF_LOCAL      0x00000000L
51 #define ACM_DRIVERADDF_GLOBAL     0x00000008L
52
53 #define ACMDRIVERDETAILS_SHORTNAME_CHARS  32
54 #define ACMDRIVERDETAILS_LONGNAME_CHARS  128
55 #define ACMDRIVERDETAILS_COPYRIGHT_CHARS  80
56 #define ACMDRIVERDETAILS_LICENSING_CHARS 128
57 #define ACMDRIVERDETAILS_FEATURES_CHARS  512
58
59 #define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
60 #define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED  mmioFOURCC('\0', '\0', '\0', '\0')
61
62 #define ACMDRIVERDETAILS_SUPPORTF_CODEC     0x00000001L
63 #define ACMDRIVERDETAILS_SUPPORTF_CONVERTER 0x00000002L
64 #define ACMDRIVERDETAILS_SUPPORTF_FILTER    0x00000004L
65 #define ACMDRIVERDETAILS_SUPPORTF_HARDWARE  0x00000008L
66 #define ACMDRIVERDETAILS_SUPPORTF_ASYNC     0x00000010L
67 #define ACMDRIVERDETAILS_SUPPORTF_LOCAL     0x40000000L
68 #define ACMDRIVERDETAILS_SUPPORTF_DISABLED  0x80000000L
69
70 #define ACM_DRIVERENUMF_NOLOCAL  0x40000000L
71 #define ACM_DRIVERENUMF_DISABLED 0x80000000L
72
73 #define ACM_DRIVERPRIORITYF_ENABLE    0x00000001L
74 #define ACM_DRIVERPRIORITYF_DISABLE   0x00000002L
75 #define ACM_DRIVERPRIORITYF_ABLEMASK  0x00000003L
76 #define ACM_DRIVERPRIORITYF_BEGIN     0x00010000L
77 #define ACM_DRIVERPRIORITYF_END       0x00020000L
78 #define ACM_DRIVERPRIORITYF_DEFERMASK 0x00030000L
79
80 #define MM_ACM_FILTERCHOOSE 0x8000
81
82 #define FILTERCHOOSE_MESSAGE          0
83 #define FILTERCHOOSE_FILTERTAG_VERIFY (FILTERCHOOSE_MESSAGE+0)
84 #define FILTERCHOOSE_FILTER_VERIFY    (FILTERCHOOSE_MESSAGE+1)
85 #define FILTERCHOOSE_CUSTOM_VERIFY    (FILTERCHOOSE_MESSAGE+2)
86
87 #define ACMFILTERCHOOSE_STYLEF_SHOWHELP             0x00000004L
88 #define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK           0x00000008L
89 #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE       0x00000010L
90 #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
91 #define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT   0x00000040L
92 #define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP          0x00000080L
93
94 #define ACMFILTERDETAILS_FILTER_CHARS 128
95
96 #define ACM_FILTERDETAILSF_INDEX     0x00000000L
97 #define ACM_FILTERDETAILSF_FILTER    0x00000001L
98 #define ACM_FILTERDETAILSF_QUERYMASK 0x0000000FL
99
100 #define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48
101
102 #define ACM_FILTERTAGDETAILSF_INDEX       0x00000000L
103 #define ACM_FILTERTAGDETAILSF_FILTERTAG   0x00000001L
104 #define ACM_FILTERTAGDETAILSF_LARGESTSIZE 0x00000002L
105 #define ACM_FILTERTAGDETAILSF_QUERYMASK   0x0000000FL
106
107 #define ACM_FILTERENUMF_DWFILTERTAG 0x00010000L
108
109 #define ACMHELPMSGSTRINGA       "acmchoose_help"
110 static const WCHAR ACMHELPMSGSTRINGW[] = { 'a','c','m',
111   'c','h','o','o','s','e','_','h','e','l','p',0 };
112 #define ACMHELPMSGSTRING WINELIB_NAME_AW(ACMHELPMSGSTRING)
113
114 #define ACMHELPMSGCONTEXTMENUA  "acmchoose_contextmenu"
115 static const WCHAR ACMHELPMSGCONTEXTMENUW[] = { 'a','c','m',
116   'c','h','o','o','s','e','_','c','o','n','t','e','x','t','m','e','n','u',0 };
117 #define ACMHELPMSGCONTEXTMENU WINELIB_NAME_AW(ACMHELPMSGCONTEXTMENU)
118
119 #define ACMHELPMSGCONTEXTHELPA  "acmchoose_contexthelp"
120 static const WCHAR ACMHELPMSGCONTEXTHELPW[] = { 'a','c','m',
121   'c','h','o','o','s','e','_','c','o','n','t','e','x','t','h','e','l','p',0 };
122 #define ACMHELPMSGCONTEXTHELP WINELIB_NAME_AW(ACMHELPMSGCONTEXTHELP)
123
124 #define MM_ACM_FORMATCHOOSE 0x8000
125
126 #define FORMATCHOOSE_MESSAGE          0
127 #define FORMATCHOOSE_FORMATTAG_VERIFY (FORMATCHOOSE_MESSAGE+0)
128 #define FORMATCHOOSE_FORMAT_VERIFY    (FORMATCHOOSE_MESSAGE+1)
129 #define FORMATCHOOSE_CUSTOM_VERIFY    (FORMATCHOOSE_MESSAGE+2)
130
131 #define ACMFORMATCHOOSE_STYLEF_SHOWHELP             0x00000004L
132 #define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK           0x00000008L
133 #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE       0x00000010L
134 #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
135 #define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT      0x00000040L
136 #define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP          0x00000080L
137
138 #define ACMFORMATDETAILS_FORMAT_CHARS   128
139
140 #define ACM_FORMATDETAILSF_INDEX     0x00000000L
141 #define ACM_FORMATDETAILSF_FORMAT    0x00000001L
142 #define ACM_FORMATDETAILSF_QUERYMASK 0x0000000FL
143
144 #define ACM_FORMATENUMF_WFORMATTAG     0x00010000L
145 #define ACM_FORMATENUMF_NCHANNELS      0x00020000L
146 #define ACM_FORMATENUMF_NSAMPLESPERSEC 0x00040000L
147 #define ACM_FORMATENUMF_WBITSPERSAMPLE 0x00080000L
148 #define ACM_FORMATENUMF_CONVERT        0x00100000L
149 #define ACM_FORMATENUMF_SUGGEST        0x00200000L
150 #define ACM_FORMATENUMF_HARDWARE       0x00400000L
151 #define ACM_FORMATENUMF_INPUT          0x00800000L
152 #define ACM_FORMATENUMF_OUTPUT         0x01000000L
153
154 #define ACM_FORMATSUGGESTF_WFORMATTAG     0x00010000L
155 #define ACM_FORMATSUGGESTF_NCHANNELS      0x00020000L
156 #define ACM_FORMATSUGGESTF_NSAMPLESPERSEC 0x00040000L
157 #define ACM_FORMATSUGGESTF_WBITSPERSAMPLE 0x00080000L
158 #define ACM_FORMATSUGGESTF_TYPEMASK       0x00FF0000L
159
160 #define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48
161
162 #define ACM_FORMATTAGDETAILSF_INDEX       0x00000000L
163 #define ACM_FORMATTAGDETAILSF_FORMATTAG   0x00000001L
164 #define ACM_FORMATTAGDETAILSF_LARGESTSIZE 0x00000002L
165 #define ACM_FORMATTAGDETAILSF_QUERYMASK   0x0000000FL
166
167 #define ACM_METRIC_COUNT_DRIVERS            1
168 #define ACM_METRIC_COUNT_CODECS             2
169 #define ACM_METRIC_COUNT_CONVERTERS         3
170 #define ACM_METRIC_COUNT_FILTERS            4
171 #define ACM_METRIC_COUNT_DISABLED           5
172 #define ACM_METRIC_COUNT_HARDWARE           6
173 #define ACM_METRIC_COUNT_LOCAL_DRIVERS     20
174 #define ACM_METRIC_COUNT_LOCAL_CODECS      21
175 #define ACM_METRIC_COUNT_LOCAL_CONVERTERS  22
176 #define ACM_METRIC_COUNT_LOCAL_FILTERS     23
177 #define ACM_METRIC_COUNT_LOCAL_DISABLED    24
178 #define ACM_METRIC_HARDWARE_WAVE_INPUT     30
179 #define ACM_METRIC_HARDWARE_WAVE_OUTPUT    31
180 #define ACM_METRIC_MAX_SIZE_FORMAT         50
181 #define ACM_METRIC_MAX_SIZE_FILTER         51
182 #define ACM_METRIC_DRIVER_SUPPORT         100
183 #define ACM_METRIC_DRIVER_PRIORITY        101
184
185 #define ACM_STREAMCONVERTF_BLOCKALIGN 0x00000004
186 #define ACM_STREAMCONVERTF_START      0x00000010
187 #define ACM_STREAMCONVERTF_END        0x00000020
188
189 #define ACMSTREAMHEADER_STATUSF_DONE     0x00010000L
190 #define ACMSTREAMHEADER_STATUSF_PREPARED 0x00020000L
191 #define ACMSTREAMHEADER_STATUSF_INQUEUE  0x00100000L
192
193 #define ACM_STREAMOPENF_QUERY       0x00000001
194 #define ACM_STREAMOPENF_ASYNC       0x00000002
195 #define ACM_STREAMOPENF_NONREALTIME 0x00000004
196
197 #define ACM_STREAMSIZEF_SOURCE      0x00000000L
198 #define ACM_STREAMSIZEF_DESTINATION 0x00000001L
199 #define ACM_STREAMSIZEF_QUERYMASK   0x0000000FL
200
201 #define ACMDM_USER                  (DRV_USER + 0x0000)
202 #define ACMDM_RESERVED_LOW          (DRV_USER + 0x2000)
203 #define ACMDM_RESERVED_HIGH         (DRV_USER + 0x2FFF)
204
205 #define ACMDM_BASE                  ACMDM_RESERVED_LOW
206
207 #define ACMDM_DRIVER_ABOUT          (ACMDM_BASE + 11)
208
209 /* handles */
210
211 DECLARE_OLD_HANDLE(HACMDRIVERID);
212 DECLARE_OLD_HANDLE(HACMDRIVER);
213 DECLARE_OLD_HANDLE(HACMSTREAM);
214 DECLARE_OLD_HANDLE(HACMOBJ);
215
216 /***********************************************************************
217  * Callbacks
218  */
219
220 typedef BOOL (CALLBACK *ACMDRIVERENUMCB)(
221   HACMDRIVERID hadid, DWORD dwInstance, DWORD fdwSupport
222 );
223
224 typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCA)(
225   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
226 );
227
228 typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCW)(
229   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
230 );
231 #define ACMFILTERCHOOSEHOOKPROC WINELIB_NAME_AW(ACMFILTERCHOOSEHOOKPROC)
232
233 typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCA)(
234   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
235 );
236
237 typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCW)(
238   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
239 );
240 #define ACMFORMATCHOOSEHOOKPROC WINELIB_NAME_AW(ACMFORMATCHOOSEHOOKPROC)
241
242 /***********************************************************************
243  * Structures
244  */
245
246 typedef struct _ACMDRIVERDETAILSA
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   CHAR     szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
266   CHAR     szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
267   CHAR     szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
268   CHAR     szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
269   CHAR     szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
270 } ACMDRIVERDETAILSA, *PACMDRIVERDETAILSA, *LPACMDRIVERDETAILSA;
271
272 typedef struct _ACMDRIVERDETAILSW
273 {
274   DWORD    cbStruct;
275
276   FOURCC   fccType;
277   FOURCC   fccComp;
278
279   WORD     wMid;
280   WORD     wPid;
281
282   DWORD    vdwACM;
283   DWORD    vdwDriver;
284
285   DWORD    fdwSupport;
286   DWORD    cFormatTags;
287   DWORD    cFilterTags;
288
289   HICON  hicon;
290
291   WCHAR    szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
292   WCHAR    szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
293   WCHAR    szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
294   WCHAR    szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
295   WCHAR    szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
296 } ACMDRIVERDETAILSW, *PACMDRIVERDETAILSW, *LPACMDRIVERDETAILSW;
297
298 DECL_WINELIB_TYPE_AW(ACMDRIVERDETAILS)
299 DECL_WINELIB_TYPE_AW(PACMDRIVERDETAILS)
300 DECL_WINELIB_TYPE_AW(LPACMDRIVERDETAILS)
301
302 typedef struct _ACMFILTERCHOOSEA
303 {
304   DWORD         cbStruct;
305   DWORD         fdwStyle;
306
307   HWND        hwndOwner;
308
309   PWAVEFILTER   pwfltr;
310   DWORD         cbwfltr;
311
312   LPCSTR        pszTitle;
313
314   CHAR          szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
315   CHAR          szFilter[ACMFILTERDETAILS_FILTER_CHARS];
316   LPSTR         pszName;
317   DWORD         cchName;
318
319   DWORD         fdwEnum;
320   PWAVEFILTER   pwfltrEnum;
321     
322   HINSTANCE   hInstance;
323   LPCSTR        pszTemplateName;
324   LPARAM        lCustData;
325   ACMFILTERCHOOSEHOOKPROCA pfnHook;
326 } ACMFILTERCHOOSEA, *PACMFILTERCHOOSEA, *LPACMFILTERCHOOSEA;
327
328 typedef struct _ACMFILTERCHOOSEW
329 {
330   DWORD         cbStruct;
331   DWORD         fdwStyle;
332
333   HWND        hwndOwner;
334
335   PWAVEFILTER   pwfltr;
336   DWORD         cbwfltr;
337
338   LPCWSTR       pszTitle;
339
340   WCHAR         szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
341   WCHAR         szFilter[ACMFILTERDETAILS_FILTER_CHARS];
342   LPWSTR        pszName;
343   DWORD         cchName;
344
345   DWORD         fdwEnum;
346   PWAVEFILTER   pwfltrEnum;
347     
348   HINSTANCE   hInstance;
349   LPCWSTR       pszTemplateName;
350   LPARAM        lCustData;
351   ACMFILTERCHOOSEHOOKPROCW pfnHook;
352 } ACMFILTERCHOOSEW, *PACMFILTERCHOOSEW, *LPACMFILTERCHOOSEW;
353
354 DECL_WINELIB_TYPE_AW(ACMFILTERCHOOSE)
355 DECL_WINELIB_TYPE_AW(PACMFILTERCHOOSE)
356 DECL_WINELIB_TYPE_AW(LPACMFILTERCHOOSE)
357
358 typedef struct _ACMFILTERDETAILSA
359 {
360   DWORD           cbStruct;
361   DWORD           dwFilterIndex;
362   DWORD           dwFilterTag;
363   DWORD           fdwSupport;
364   PWAVEFILTER     pwfltr;
365   DWORD           cbwfltr;
366   CHAR            szFilter[ACMFILTERDETAILS_FILTER_CHARS];
367 } ACMFILTERDETAILSA, *PACMFILTERDETAILSA, *LPACMFILTERDETAILSA;
368
369 typedef struct _ACMFILTERDETAILSW
370 {
371   DWORD          cbStruct;
372   DWORD          dwFilterIndex;
373   DWORD          dwFilterTag;
374   DWORD          fdwSupport;
375   PWAVEFILTER    pwfltr;
376   DWORD          cbwfltr;
377   WCHAR          szFilter[ACMFILTERDETAILS_FILTER_CHARS];
378 } ACMFILTERDETAILSW, *PACMFILTERDETAILSW, *LPACMFILTERDETAILSW;
379
380 DECL_WINELIB_TYPE_AW(ACMFILTERDETAILS)
381 DECL_WINELIB_TYPE_AW(PACMFILTERDETAILS)
382 DECL_WINELIB_TYPE_AW(LPACMFILTERDETAILS)
383
384 typedef struct _ACMFILTERTAGDETAILSA
385 {
386   DWORD cbStruct;
387   DWORD dwFilterTagIndex;
388   DWORD dwFilterTag;
389   DWORD cbFilterSize;
390   DWORD fdwSupport;
391   DWORD cStandardFilters;
392   CHAR  szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
393 } ACMFILTERTAGDETAILSA, *PACMFILTERTAGDETAILSA, *LPACMFILTERTAGDETAILSA;
394
395 typedef struct _ACMFILTERTAGDETAILSW
396 {
397   DWORD cbStruct;
398   DWORD dwFilterTagIndex;
399   DWORD dwFilterTag;
400   DWORD cbFilterSize;
401   DWORD fdwSupport;
402   DWORD cStandardFilters;
403   WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
404 } ACMFILTERTAGDETAILSW, *PACMFILTERTAGDETAILSW, *LPACMFILTERTAGDETAILSW;
405
406 DECL_WINELIB_TYPE_AW(ACMFILTERTAGDETAILS)
407 DECL_WINELIB_TYPE_AW(PACMFILTERTAGDETAILS)
408 DECL_WINELIB_TYPE_AW(LPACMFILTERTAGDETAILS)
409
410 typedef struct _ACMFORMATCHOOSEA
411 {
412   DWORD           cbStruct;
413   DWORD           fdwStyle;
414  
415   HWND          hwndOwner;
416
417   PWAVEFORMATEX   pwfx;
418   DWORD           cbwfx;
419   LPCSTR          pszTitle;
420     
421   CHAR            szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
422   CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
423
424   LPSTR           pszName;
425   DWORD           cchName;
426
427   DWORD           fdwEnum;
428   PWAVEFORMATEX   pwfxEnum;
429     
430   HINSTANCE     hInstance;
431   LPCSTR          pszTemplateName;
432   LPARAM          lCustData;
433   ACMFORMATCHOOSEHOOKPROCA pfnHook;
434 } ACMFORMATCHOOSEA, *PACMFORMATCHOOSEA, *LPACMFORMATCHOOSEA;
435
436 typedef struct _ACMFORMATCHOOSEW
437 {
438   DWORD           cbStruct;
439   DWORD           fdwStyle;
440     
441   HWND          hwndOwner;
442
443   PWAVEFORMATEX   pwfx;
444   DWORD           cbwfx;
445   LPCWSTR         pszTitle;
446     
447   WCHAR           szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
448   WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
449
450   LPWSTR          pszName;
451   DWORD           cchName;
452
453   DWORD           fdwEnum;
454   LPWAVEFORMATEX  pwfxEnum;
455     
456   HINSTANCE     hInstance;
457   LPCWSTR         pszTemplateName;
458   LPARAM          lCustData;
459   ACMFORMATCHOOSEHOOKPROCW pfnHook;
460 } ACMFORMATCHOOSEW, *PACMFORMATCHOOSEW, *LPACMFORMATCHOOSEW;
461
462 DECL_WINELIB_TYPE_AW(ACMFORMATCHOOSE)
463 DECL_WINELIB_TYPE_AW(PACMFORMATCHOOSE)
464 DECL_WINELIB_TYPE_AW(LPACMFORMATCHOOSE)
465
466 typedef struct _ACMFORMATDETAILSA
467 {
468   DWORD           cbStruct;
469   DWORD           dwFormatIndex;
470   DWORD           dwFormatTag;
471   DWORD           fdwSupport;
472   PWAVEFORMATEX   pwfx;
473   DWORD           cbwfx;
474   CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
475 } ACMFORMATDETAILSA, *PACMFORMATDETAILSA, *LPACMFORMATDETAILSA;
476
477 typedef struct _ACMFORMATDETAILSW
478 {
479     DWORD           cbStruct;
480     DWORD           dwFormatIndex;
481     DWORD           dwFormatTag;
482     DWORD           fdwSupport;
483     PWAVEFORMATEX   pwfx;
484     DWORD           cbwfx;
485     WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
486 } ACMFORMATDETAILSW, *PACMFORMATDETAILSW, *LPACMFORMATDETAILSW;
487
488 DECL_WINELIB_TYPE_AW(ACMFORMATDETAILS)
489 DECL_WINELIB_TYPE_AW(PACMFORMATDETAILS)
490 DECL_WINELIB_TYPE_AW(LPACMFORMATDETAILS)
491
492 typedef struct _ACMFORMATTAGDETAILSA
493 {
494   DWORD cbStruct;
495   DWORD dwFormatTagIndex;
496   DWORD dwFormatTag;
497   DWORD cbFormatSize;
498   DWORD fdwSupport;
499   DWORD cStandardFormats;
500   CHAR  szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
501 } ACMFORMATTAGDETAILSA, *PACMFORMATTAGDETAILSA, *LPACMFORMATTAGDETAILSA;
502
503 typedef struct _ACMFORMATTAGDETAILSW
504 {
505   DWORD cbStruct;
506   DWORD dwFormatTagIndex;
507   DWORD dwFormatTag;
508   DWORD cbFormatSize;
509   DWORD fdwSupport;
510   DWORD cStandardFormats;
511   WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
512 } ACMFORMATTAGDETAILSW, *PACMFORMATTAGDETAILSW, *LPACMFORMATTAGDETAILSW;
513
514 DECL_WINELIB_TYPE_AW(ACMFORMATTAGDETAILS)
515 DECL_WINELIB_TYPE_AW(PACMFORMATTAGDETAILS)
516 DECL_WINELIB_TYPE_AW(LPACMFORMATTAGDETAILS)
517
518 typedef struct _ACMSTREAMHEADER
519 {
520   DWORD  cbStruct;
521   DWORD  fdwStatus;
522   DWORD  dwUser;
523   LPBYTE pbSrc;
524   DWORD  cbSrcLength;
525   DWORD  cbSrcLengthUsed;
526   DWORD  dwSrcUser;
527   LPBYTE pbDst;
528   DWORD  cbDstLength;
529   DWORD  cbDstLengthUsed;
530   DWORD  dwDstUser;
531   DWORD  dwReservedDriver[10];
532 } ACMSTREAMHEADER, *PACMSTREAMHEADER, *LPACMSTREAMHEADER;
533
534 /***********************************************************************
535  * Callbacks 2
536  */
537
538 typedef BOOL (CALLBACK *ACMFILTERENUMCBA)(
539   HACMDRIVERID hadid, PACMFILTERDETAILSA pafd,
540   DWORD dwInstance, DWORD fdwSupport
541 );
542
543 typedef BOOL (CALLBACK *ACMFILTERENUMCBW)(
544   HACMDRIVERID hadid, PACMFILTERDETAILSW pafd,
545   DWORD dwInstance, DWORD fdwSupport
546 );
547
548 #define ACMFILTERENUMCB WINELIB_NAME_AW(ACMFILTERENUMCB)
549
550 typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBA)(
551   HACMDRIVERID hadid, PACMFILTERTAGDETAILSA paftd,
552   DWORD dwInstance, DWORD fdwSupport
553 );
554
555 typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBW)(
556   HACMDRIVERID hadid, PACMFILTERTAGDETAILSW paftd,
557   DWORD dwInstance, DWORD fdwSupport
558 );
559
560 #define ACMFILTERTAGENUMCB WINELIB_NAME_AW(ACMFILTERTAGENUMCB)
561
562 typedef BOOL (CALLBACK *ACMFORMATENUMCBA)(
563   HACMDRIVERID hadid, PACMFORMATDETAILSA pafd,
564   DWORD dwInstance, DWORD fdwSupport
565 );
566
567 typedef BOOL (CALLBACK *ACMFORMATENUMCBW)(
568   HACMDRIVERID hadid, PACMFORMATDETAILSW pafd,
569   DWORD dwInstance, DWORD fdwSupport
570 );
571
572 #define ACMFORMATENUMCB WINELIB_NAME_AW(ACMFORMATENUMCB)
573
574 typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA)(
575   HACMDRIVERID hadid, PACMFORMATTAGDETAILSA paftd,
576   DWORD dwInstance, DWORD fdwSupport
577 );
578
579 typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW)(
580   HACMDRIVERID hadid, PACMFORMATTAGDETAILSW paftd,
581   DWORD dwInstance, DWORD fdwSupport
582 );
583
584 #define ACMFORMATTAGENUMCB WINELIB_NAME_AW(ACMFORMATTAGENUMCB)
585
586 /***********************************************************************
587  * Functions - Win32
588  */
589
590 MMRESULT WINAPI acmDriverAddA(
591   PHACMDRIVERID phadid, HINSTANCE hinstModule,
592   LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
593 );
594 MMRESULT WINAPI acmDriverAddW(
595   PHACMDRIVERID phadid, HINSTANCE hinstModule,
596   LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
597 );
598 #define acmDriverAdd WINELIB_NAME_AW(acmDriverAdd)
599
600 MMRESULT WINAPI acmDriverClose(
601   HACMDRIVER had, DWORD fdwClose
602 );
603 MMRESULT WINAPI acmDriverDetailsA(
604   HACMDRIVERID hadid, PACMDRIVERDETAILSA padd, DWORD fdwDetails
605 );
606 MMRESULT WINAPI acmDriverDetailsW(
607   HACMDRIVERID hadid, PACMDRIVERDETAILSW padd, DWORD fdwDetails
608 );
609 #define acmDriverDetails WINELIB_NAME_AW(acmDriverDetails)
610
611 MMRESULT WINAPI acmDriverEnum(
612   ACMDRIVERENUMCB fnCallback, DWORD dwInstance, DWORD fdwEnum
613 );
614 MMRESULT WINAPI acmDriverID(
615   HACMOBJ hao, PHACMDRIVERID phadid, DWORD fdwDriverID
616 );
617 LRESULT WINAPI acmDriverMessage(
618   HACMDRIVER had, UINT uMsg, LPARAM lParam1, LPARAM lParam2
619 );
620 MMRESULT WINAPI acmDriverOpen(
621   PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen
622 );
623 MMRESULT WINAPI acmDriverPriority(
624   HACMDRIVERID hadid, DWORD dwPriority, DWORD fdwPriority
625 );
626 MMRESULT WINAPI acmDriverRemove(
627   HACMDRIVERID hadid, DWORD fdwRemove
628 );
629 MMRESULT WINAPI acmFilterChooseA(
630   PACMFILTERCHOOSEA pafltrc
631 );
632 MMRESULT WINAPI acmFilterChooseW(
633   PACMFILTERCHOOSEW pafltrc
634 );
635 #define acmFilterChoose WINELIB_NAME_AW(acmFilterChoose)
636
637 MMRESULT WINAPI acmFilterDetailsA(
638   HACMDRIVER had, PACMFILTERDETAILSA pafd, DWORD fdwDetails
639 );
640 MMRESULT WINAPI acmFilterDetailsW(
641   HACMDRIVER had, PACMFILTERDETAILSW pafd, DWORD fdwDetails
642 );
643 #define acmFilterDetails WINELIB_NAME_AW(acmFilterDetails)
644
645 MMRESULT WINAPI acmFilterEnumA(
646   HACMDRIVER had, PACMFILTERDETAILSA pafd, 
647   ACMFILTERENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
648 );
649 MMRESULT WINAPI acmFilterEnumW(
650   HACMDRIVER had, PACMFILTERDETAILSW pafd, 
651   ACMFILTERENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
652 );
653 #define acmFilterEnum WINELIB_NAME_AW(acmFilterEnum)
654
655 MMRESULT WINAPI acmFilterTagDetailsA(
656   HACMDRIVER had, PACMFILTERTAGDETAILSA paftd, DWORD fdwDetails
657 );
658 MMRESULT WINAPI acmFilterTagDetailsW(
659   HACMDRIVER had, PACMFILTERTAGDETAILSW paftd, DWORD fdwDetails
660 );
661 #define acmFilterTagDetails WINELIB_NAME_AW(acmFilterTagDetails)
662
663 MMRESULT WINAPI acmFilterTagEnumA(
664   HACMDRIVER had, PACMFILTERTAGDETAILSA paftd,
665   ACMFILTERTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
666 );
667 MMRESULT WINAPI acmFilterTagEnumW(
668   HACMDRIVER had, PACMFILTERTAGDETAILSW paftd,
669   ACMFILTERTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
670 );
671 #define acmFilterTagEnum WINELIB_NAME_AW(acmFilterTagEnum)
672
673 MMRESULT WINAPI acmFormatChooseA(
674   PACMFORMATCHOOSEA pafmtc
675 );
676 MMRESULT WINAPI acmFormatChooseW(
677   PACMFORMATCHOOSEW pafmtc
678 );
679 #define acmFormatChoose WINELIB_NAME_AW(acmFormatChoose)
680
681 MMRESULT WINAPI acmFormatDetailsA(
682   HACMDRIVER had, PACMFORMATDETAILSA pafd, DWORD fdwDetails
683 );
684 MMRESULT WINAPI acmFormatDetailsW(
685   HACMDRIVER had, PACMFORMATDETAILSW pafd, DWORD fdwDetails
686 );
687 #define acmFormatDetails WINELIB_NAME_AW(acmFormatDetails)
688
689 MMRESULT WINAPI acmFormatEnumA(
690   HACMDRIVER had, PACMFORMATDETAILSA pafd,
691   ACMFORMATENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
692 );
693 MMRESULT WINAPI acmFormatEnumW(
694   HACMDRIVER had, PACMFORMATDETAILSW pafd,
695   ACMFORMATENUMCBW fnCallback, DWORD dwInstance,  DWORD fdwEnum
696 );
697 #define acmFormatEnum WINELIB_NAME_AW(acmFormatEnum)
698
699 MMRESULT WINAPI acmFormatSuggest(
700   HACMDRIVER had, PWAVEFORMATEX pwfxSrc, PWAVEFORMATEX pwfxDst,
701   DWORD cbwfxDst, DWORD fdwSuggest
702 );
703 MMRESULT WINAPI acmFormatTagDetailsA(
704   HACMDRIVER had, PACMFORMATTAGDETAILSA paftd, DWORD fdwDetails
705 );
706 MMRESULT WINAPI acmFormatTagDetailsW(
707   HACMDRIVER had, PACMFORMATTAGDETAILSW paftd, DWORD fdwDetails
708 );
709 #define acmFormatTagDetails WINELIB_NAME_AW(acmFormatTagDetails)
710
711 MMRESULT WINAPI acmFormatTagEnumA(
712   HACMDRIVER had, PACMFORMATTAGDETAILSA paftd,
713   ACMFORMATTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
714 );
715 MMRESULT WINAPI acmFormatTagEnumW(
716   HACMDRIVER had, PACMFORMATTAGDETAILSW paftd,
717   ACMFORMATTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
718 );
719 #define acmFormatTagEnum WINELIB_NAME_AW(acmFormatTagEnum)
720
721 DWORD WINAPI acmGetVersion(void
722 );
723 MMRESULT WINAPI acmMetrics(
724   HACMOBJ hao, UINT  uMetric, LPVOID  pMetric
725 );
726 MMRESULT WINAPI acmStreamClose(
727   HACMSTREAM has, DWORD fdwClose
728 );
729 MMRESULT WINAPI acmStreamConvert(
730   HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwConvert
731 );
732 MMRESULT WINAPI acmStreamMessage(
733   HACMSTREAM has, UINT uMsg, LPARAM lParam1, LPARAM lParam2
734 );
735 MMRESULT WINAPI acmStreamOpen(
736   PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pwfxSrc,
737   PWAVEFORMATEX pwfxDst, PWAVEFILTER pwfltr, DWORD dwCallback,
738   DWORD dwInstance, DWORD fdwOpen
739 );
740 MMRESULT WINAPI acmStreamPrepareHeader(
741   HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwPrepare
742 );
743 MMRESULT WINAPI acmStreamReset(
744   HACMSTREAM has, DWORD fdwReset
745 );
746 MMRESULT WINAPI acmStreamSize(
747   HACMSTREAM has, DWORD cbInput, 
748   LPDWORD pdwOutputBytes, DWORD fdwSize
749 );
750 MMRESULT WINAPI acmStreamUnprepareHeader(
751   HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwUnprepare
752 );
753
754 #ifdef __cplusplus
755 } /* extern "C" */
756 #endif /* defined(__cplusplus) */
757
758 #endif  /* __WINE_MSACM_H */
759
760