Release 981025.
[wine/multimedia.git] / include / msacm.h
blob356362854b448f06c2588c3669e45cdc2bfb75ac
1 /*
2 * msacm.h - Declarations for MSACM
3 */
5 #ifndef __WINE_MSACM_H
6 #define __WINE_MSACM_H
8 #include "wintypes.h"
9 #include "driver.h"
10 #include "mmsystem.h"
11 #include "mmreg.h"
13 /***********************************************************************
14 * Types
17 /* FIXME: Move to wintypes.h */
18 #define DECLARE_HANDLE(a) \
19 typedef HANDLE16 a##16; \
20 typedef HANDLE32 a##32; \
21 typedef a##16 *P##a##16; \
22 typedef a##16 *NP##a##16; \
23 typedef a##16 *LP##a##16; \
24 typedef a##32 *P##a##32;
26 DECLARE_HANDLE(HACMDRIVERID);
27 DECLARE_HANDLE(HACMDRIVER);
28 DECLARE_HANDLE(HACMSTREAM);
29 DECLARE_HANDLE(HACMOBJ);
31 /* FIXME: Remove when define moved to wintypes.h */
32 #undef DECLARE_HANDLE
34 /***********************************************************************
35 * Defines/Enums
38 #define ACMERR_BASE 512
39 #define ACMERR_NOTPOSSIBLE (ACMERR_BASE + 0)
40 #define ACMERR_BUSY (ACMERR_BASE + 1)
41 #define ACMERR_UNPREPARED (ACMERR_BASE + 2)
42 #define ACMERR_CANCELED (ACMERR_BASE + 3)
44 #define MM_ACM_OPEN MM_STREAM_OPEN
45 #define MM_ACM_CLOSE MM_STREAM_CLOSE
46 #define MM_ACM_DONE MM_STREAM_DONE
48 #define ACM_DRIVERADDF_FUNCTION 0x00000003L
49 #define ACM_DRIVERADDF_NOTIFYHWND 0x00000004L
50 #define ACM_DRIVERADDF_TYPEMASK 0x00000007L
51 #define ACM_DRIVERADDF_LOCAL 0x00000000L
52 #define ACM_DRIVERADDF_GLOBAL 0x00000008L
54 #define ACMDRIVERDETAILS_SHORTNAME_CHARS 32
55 #define ACMDRIVERDETAILS_LONGNAME_CHARS 128
56 #define ACMDRIVERDETAILS_COPYRIGHT_CHARS 80
57 #define ACMDRIVERDETAILS_LICENSING_CHARS 128
58 #define ACMDRIVERDETAILS_FEATURES_CHARS 512
60 #define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
61 #define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED mmioFOURCC('\0', '\0', '\0', '\0')
63 #define ACMDRIVERDETAILS_SUPPORTF_CODEC 0x00000001L
64 #define ACMDRIVERDETAILS_SUPPORTF_CONVERTER 0x00000002L
65 #define ACMDRIVERDETAILS_SUPPORTF_FILTER 0x00000004L
66 #define ACMDRIVERDETAILS_SUPPORTF_HARDWARE 0x00000008L
67 #define ACMDRIVERDETAILS_SUPPORTF_ASYNC 0x00000010L
68 #define ACMDRIVERDETAILS_SUPPORTF_LOCAL 0x40000000L
69 #define ACMDRIVERDETAILS_SUPPORTF_DISABLED 0x80000000L
71 #define ACM_DRIVERENUMF_NOLOCAL 0x40000000L
72 #define ACM_DRIVERENUMF_DISABLED 0x80000000L
74 #define ACM_DRIVERPRIORITYF_ENABLE 0x00000001L
75 #define ACM_DRIVERPRIORITYF_DISABLE 0x00000002L
76 #define ACM_DRIVERPRIORITYF_ABLEMASK 0x00000003L
77 #define ACM_DRIVERPRIORITYF_BEGIN 0x00010000L
78 #define ACM_DRIVERPRIORITYF_END 0x00020000L
79 #define ACM_DRIVERPRIORITYF_DEFERMASK 0x00030000L
81 #define MM_ACM_FILTERCHOOSE 0x8000
83 #define FILTERCHOOSE_MESSAGE 0
84 #define FILTERCHOOSE_FILTERTAG_VERIFY (FILTERCHOOSE_MESSAGE+0)
85 #define FILTERCHOOSE_FILTER_VERIFY (FILTERCHOOSE_MESSAGE+1)
86 #define FILTERCHOOSE_CUSTOM_VERIFY (FILTERCHOOSE_MESSAGE+2)
88 #define ACMFILTERCHOOSE_STYLEF_SHOWHELP 0x00000004L
89 #define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK 0x00000008L
90 #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE 0x00000010L
91 #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
92 #define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT 0x00000040L
93 #define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP 0x00000080L
95 #define ACMFILTERDETAILS_FILTER_CHARS 128
97 #define ACM_FILTERDETAILSF_INDEX 0x00000000L
98 #define ACM_FILTERDETAILSF_FILTER 0x00000001L
99 #define ACM_FILTERDETAILSF_QUERYMASK 0x0000000FL
101 #define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48
103 #define ACM_FILTERTAGDETAILSF_INDEX 0x00000000L
104 #define ACM_FILTERTAGDETAILSF_FILTERTAG 0x00000001L
105 #define ACM_FILTERTAGDETAILSF_LARGESTSIZE 0x00000002L
106 #define ACM_FILTERTAGDETAILSF_QUERYMASK 0x0000000FL
108 #define ACM_FILTERENUMF_DWFILTERTAG 0x00010000L
110 #define ACMHELPMSGSTRING32A "acmchoose_help"
111 #define ACMHELPMSGSTRING32W L"acmchoose_help"
112 #define ACMHELPMSGSTRING16 "acmchoose_help"
114 #define ACMHELPMSGCONTEXTMENU32A "acmchoose_contextmenu"
115 #define ACMHELPMSGCONTEXTMENU32W L"acmchoose_contextmenu"
116 #define ACMHELPMSGCONTEXTMENU16 "acmchoose_contextmenu"
118 #define ACMHELPMSGCONTEXTHELP32A "acmchoose_contexthelp"
119 #define ACMHELPMSGCONTEXTHELP32W L"acmchoose_contexthelp"
120 #define ACMHELPMSGCONTEXTHELP16 "acmchoose_contexthelp"
122 #define MM_ACM_FORMATCHOOSE 0x8000
124 #define FORMATCHOOSE_MESSAGE 0
125 #define FORMATCHOOSE_FORMATTAG_VERIFY (FORMATCHOOSE_MESSAGE+0)
126 #define FORMATCHOOSE_FORMAT_VERIFY (FORMATCHOOSE_MESSAGE+1)
127 #define FORMATCHOOSE_CUSTOM_VERIFY (FORMATCHOOSE_MESSAGE+2)
129 #define ACMFORMATCHOOSE_STYLEF_SHOWHELP 0x00000004L
130 #define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK 0x00000008L
131 #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE 0x00000010L
132 #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
133 #define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT 0x00000040L
134 #define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP 0x00000080L
136 #define ACMFORMATDETAILS_FORMAT_CHARS 128
138 #define ACM_FORMATDETAILSF_INDEX 0x00000000L
139 #define ACM_FORMATDETAILSF_FORMAT 0x00000001L
140 #define ACM_FORMATDETAILSF_QUERYMASK 0x0000000FL
142 #define ACM_FORMATENUMF_WFORMATTAG 0x00010000L
143 #define ACM_FORMATENUMF_NCHANNELS 0x00020000L
144 #define ACM_FORMATENUMF_NSAMPLESPERSEC 0x00040000L
145 #define ACM_FORMATENUMF_WBITSPERSAMPLE 0x00080000L
146 #define ACM_FORMATENUMF_CONVERT 0x00100000L
147 #define ACM_FORMATENUMF_SUGGEST 0x00200000L
148 #define ACM_FORMATENUMF_HARDWARE 0x00400000L
149 #define ACM_FORMATENUMF_INPUT 0x00800000L
150 #define ACM_FORMATENUMF_OUTPUT 0x01000000L
152 #define ACM_FORMATSUGGESTF_WFORMATTAG 0x00010000L
153 #define ACM_FORMATSUGGESTF_NCHANNELS 0x00020000L
154 #define ACM_FORMATSUGGESTF_NSAMPLESPERSEC 0x00040000L
155 #define ACM_FORMATSUGGESTF_WBITSPERSAMPLE 0x00080000L
156 #define ACM_FORMATSUGGESTF_TYPEMASK 0x00FF0000L
158 #define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48
160 #define ACM_FORMATTAGDETAILSF_INDEX 0x00000000L
161 #define ACM_FORMATTAGDETAILSF_FORMATTAG 0x00000001L
162 #define ACM_FORMATTAGDETAILSF_LARGESTSIZE 0x00000002L
163 #define ACM_FORMATTAGDETAILSF_QUERYMASK 0x0000000FL
165 #define ACM_METRIC_COUNT_DRIVERS 1
166 #define ACM_METRIC_COUNT_CODECS 2
167 #define ACM_METRIC_COUNT_CONVERTERS 3
168 #define ACM_METRIC_COUNT_FILTERS 4
169 #define ACM_METRIC_COUNT_DISABLED 5
170 #define ACM_METRIC_COUNT_HARDWARE 6
171 #define ACM_METRIC_COUNT_LOCAL_DRIVERS 20
172 #define ACM_METRIC_COUNT_LOCAL_CODECS 21
173 #define ACM_METRIC_COUNT_LOCAL_CONVERTERS 22
174 #define ACM_METRIC_COUNT_LOCAL_FILTERS 23
175 #define ACM_METRIC_COUNT_LOCAL_DISABLED 24
176 #define ACM_METRIC_HARDWARE_WAVE_INPUT 30
177 #define ACM_METRIC_HARDWARE_WAVE_OUTPUT 31
178 #define ACM_METRIC_MAX_SIZE_FORMAT 50
179 #define ACM_METRIC_MAX_SIZE_FILTER 51
180 #define ACM_METRIC_DRIVER_SUPPORT 100
181 #define ACM_METRIC_DRIVER_PRIORITY 101
183 #define ACM_STREAMCONVERTF_BLOCKALIGN 0x00000004
184 #define ACM_STREAMCONVERTF_START 0x00000010
185 #define ACM_STREAMCONVERTF_END 0x00000020
187 #define ACMSTREAMHEADER_STATUSF_DONE 0x00010000L
188 #define ACMSTREAMHEADER_STATUSF_PREPARED 0x00020000L
189 #define ACMSTREAMHEADER_STATUSF_INQUEUE 0x00100000L
191 #define ACM_STREAMOPENF_QUERY 0x00000001
192 #define ACM_STREAMOPENF_ASYNC 0x00000002
193 #define ACM_STREAMOPENF_NONREALTIME 0x00000004
195 #define ACM_STREAMSIZEF_SOURCE 0x00000000L
196 #define ACM_STREAMSIZEF_DESTINATION 0x00000001L
197 #define ACM_STREAMSIZEF_QUERYMASK 0x0000000FL
199 #define ACMDM_USER (DRV_USER + 0x0000)
200 #define ACMDM_RESERVED_LOW (DRV_USER + 0x2000)
201 #define ACMDM_RESERVED_HIGH (DRV_USER + 0x2FFF)
203 #define ACMDM_BASE ACMDM_RESERVED_LOW
205 #define ACMDM_DRIVER_ABOUT (ACMDM_BASE + 11)
207 /***********************************************************************
208 * Callbacks
211 typedef BOOL32 (CALLBACK *ACMDRIVERENUMCB32)(
212 HACMDRIVERID32 hadid, DWORD dwInstance, DWORD fdwSupport
215 typedef BOOL16 (CALLBACK *ACMDRIVERENUMCB16)(
216 HACMDRIVERID16 hadid, DWORD dwInstance, DWORD fdwSupport
219 typedef UINT32 (CALLBACK *ACMFILTERCHOOSEHOOKPROC32A)(
220 HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
223 typedef UINT32 (CALLBACK *ACMFILTERCHOOSEHOOKPROC32W)(
224 HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
227 typedef UINT32 (CALLBACK *ACMFILTERCHOOSEHOOKPROC16)(
228 HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
231 typedef UINT32 (CALLBACK *ACMFORMATCHOOSEHOOKPROC32A)(
232 HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
235 typedef UINT32 (CALLBACK *ACMFORMATCHOOSEHOOKPROC32W)(
236 HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
239 typedef UINT16 (CALLBACK *ACMFORMATCHOOSEHOOKPROC16)(
240 HWND16 hwnd, UINT16 uMsg, WPARAM16 wParam, LPARAM lParam
243 /***********************************************************************
244 * Structures
247 typedef struct _ACMDRIVERDETAILS32A
249 DWORD cbStruct;
251 FOURCC fccType;
252 FOURCC fccComp;
254 WORD wMid;
255 WORD wPid;
257 DWORD vdwACM;
258 DWORD vdwDriver;
260 DWORD fdwSupport;
261 DWORD cFormatTags;
262 DWORD cFilterTags;
264 HICON32 hicon;
266 CHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
267 CHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
268 CHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
269 CHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
270 CHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
271 } ACMDRIVERDETAILS32A, *PACMDRIVERDETAILS32A;
273 typedef struct _ACMDRIVERDETAILS32W
275 DWORD cbStruct;
277 FOURCC fccType;
278 FOURCC fccComp;
280 WORD wMid;
281 WORD wPid;
283 DWORD vdwACM;
284 DWORD vdwDriver;
286 DWORD fdwSupport;
287 DWORD cFormatTags;
288 DWORD cFilterTags;
290 HICON32 hicon;
292 WCHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
293 WCHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
294 WCHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
295 WCHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
296 WCHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
297 } ACMDRIVERDETAILS32W, *PACMDRIVERDETAILS32W;
299 typedef struct _ACMDRIVERDETAILS16
301 DWORD cbStruct;
303 FOURCC fccType;
304 FOURCC fccComp;
306 WORD wMid;
307 WORD wPid;
309 DWORD vdwACM;
310 DWORD vdwDriver;
312 DWORD fdwSupport;
313 DWORD cFormatTags;
314 DWORD cFilterTags;
316 HICON16 hicon;
318 CHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
319 CHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
320 CHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
321 CHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
322 CHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
323 } ACMDRIVERDETAILS16, *NPACMDRIVERDETAILS16, *LPACMDRIVERDETAILS16;
325 typedef struct _ACMFILTERCHOOSE32A
327 DWORD cbStruct;
328 DWORD fdwStyle;
330 HWND32 hwndOwner;
332 PWAVEFILTER32 pwfltr;
333 DWORD cbwfltr;
335 LPCSTR pszTitle;
337 CHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
338 CHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
339 LPSTR pszName;
340 DWORD cchName;
342 DWORD fdwEnum;
343 PWAVEFILTER32 pwfltrEnum;
345 HINSTANCE32 hInstance;
346 LPCSTR pszTemplateName;
347 LPARAM lCustData;
348 ACMFILTERCHOOSEHOOKPROC32A pfnHook;
349 } ACMFILTERCHOOSE32A, *PACMFILTERCHOOSE32A;
351 typedef struct _ACMFILTERCHOOSE32W
353 DWORD cbStruct;
354 DWORD fdwStyle;
356 HWND32 hwndOwner;
358 PWAVEFILTER32 pwfltr;
359 DWORD cbwfltr;
361 LPCWSTR pszTitle;
363 WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
364 WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
365 LPWSTR pszName;
366 DWORD cchName;
368 DWORD fdwEnum;
369 PWAVEFILTER32 pwfltrEnum;
371 HINSTANCE32 hInstance;
372 LPCWSTR pszTemplateName;
373 LPARAM lCustData;
374 ACMFILTERCHOOSEHOOKPROC32W pfnHook;
375 } ACMFILTERCHOOSE32W, *PACMFILTERCHOOSE32W;
377 typedef struct _ACMFILTERCHOOSE16
379 DWORD cbStruct;
380 DWORD fdwStyle;
382 HWND16 hwndOwner;
384 LPWAVEFILTER16 pwfltr;
385 DWORD cbwfltr;
387 LPCSTR pszTitle;
389 char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
390 char szFilter[ACMFILTERDETAILS_FILTER_CHARS];
391 LPSTR pszName;
392 DWORD cchName;
394 DWORD fdwEnum;
395 LPWAVEFILTER16 pwfltrEnum;
397 HINSTANCE16 hInstance;
398 LPCSTR pszTemplateName;
399 LPARAM lCustData;
400 ACMFILTERCHOOSEHOOKPROC16 pfnHook;
401 } ACMFILTERCHOOSE16, *NPACMFILTERCHOOSE16, *LPACMFILTERCHOOSE16;
403 typedef struct _ACMFILTERDETAILS32A
405 DWORD cbStruct;
406 DWORD dwFilterIndex;
407 DWORD dwFilterTag;
408 DWORD fdwSupport;
409 PWAVEFILTER32 pwfltr;
410 DWORD cbwfltr;
411 CHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
412 } ACMFILTERDETAILS32A, *PACMFILTERDETAILS32A;
414 typedef struct _ACMFILTERDETAILS32W
416 DWORD cbStruct;
417 DWORD dwFilterIndex;
418 DWORD dwFilterTag;
419 DWORD fdwSupport;
420 PWAVEFILTER32 pwfltr;
421 DWORD cbwfltr;
422 WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
423 } ACMFILTERDETAILS32W, *PACMFILTERDETAILS32W;
425 typedef struct _ACMFILTERDETAILS16
427 DWORD cbStruct;
428 DWORD dwFilterIndex;
429 DWORD dwFilterTag;
430 DWORD fdwSupport;
431 LPWAVEFILTER16 pwfltr;
432 DWORD cbwfltr;
433 CHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
434 } ACMFILTERDETAILS16, *NPACMFILTERDETAILS16, *LPACMFILTERDETAILS16;
436 typedef struct _ACMFILTERTAGDETAILS32A
438 DWORD cbStruct;
439 DWORD dwFilterTagIndex;
440 DWORD dwFilterTag;
441 DWORD cbFilterSize;
442 DWORD fdwSupport;
443 DWORD cStandardFilters;
444 CHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
445 } ACMFILTERTAGDETAILS32A, *PACMFILTERTAGDETAILS32A;
447 typedef struct _ACMFILTERTAGDETAILS32W
449 DWORD cbStruct;
450 DWORD dwFilterTagIndex;
451 DWORD dwFilterTag;
452 DWORD cbFilterSize;
453 DWORD fdwSupport;
454 DWORD cStandardFilters;
455 WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
456 } ACMFILTERTAGDETAILS32W, *PACMFILTERTAGDETAILS32W;
458 typedef struct _ACMFILTERTAGDETAILS16
460 DWORD cbStruct;
461 DWORD dwFilterTagIndex;
462 DWORD dwFilterTag;
463 DWORD cbFilterSize;
464 DWORD fdwSupport;
465 DWORD cStandardFilters;
466 CHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
467 } ACMFILTERTAGDETAILS16, *NPACMFILTERTAGDETAILS16, *LPACMFILTERTAGDETAILS16;
469 typedef struct _ACMFORMATCHOOSE32A
471 DWORD cbStruct;
472 DWORD fdwStyle;
474 HWND32 hwndOwner;
476 PWAVEFORMATEX32 pwfx;
477 DWORD cbwfx;
478 LPCSTR pszTitle;
480 CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
481 CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
483 LPSTR pszName;
484 DWORD cchName;
486 DWORD fdwEnum;
487 PWAVEFORMATEX32 pwfxEnum;
489 HINSTANCE32 hInstance;
490 LPCSTR pszTemplateName;
491 LPARAM lCustData;
492 ACMFORMATCHOOSEHOOKPROC32A pfnHook;
493 } ACMFORMATCHOOSE32A, *PACMFORMATCHOOSE32A;
495 typedef struct _ACMFORMATCHOOSE32W
497 DWORD cbStruct;
498 DWORD fdwStyle;
500 HWND32 hwndOwner;
502 PWAVEFORMATEX32 pwfx;
503 DWORD cbwfx;
504 LPCWSTR pszTitle;
506 WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
507 WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
509 LPWSTR pszName;
510 DWORD cchName;
512 DWORD fdwEnum;
513 LPWAVEFORMATEX pwfxEnum;
515 HINSTANCE32 hInstance;
516 LPCWSTR pszTemplateName;
517 LPARAM lCustData;
518 ACMFORMATCHOOSEHOOKPROC32W pfnHook;
519 } ACMFORMATCHOOSE32W, *PACMFORMATCHOOSE32W;
521 typedef struct _ACMFORMATCHOOSE16
523 DWORD cbStruct;
524 DWORD fdwStyle;
526 HWND16 hwndOwner;
528 LPWAVEFORMATEX16 pwfx;
529 DWORD cbwfx;
530 LPCSTR pszTitle;
532 CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
533 CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
535 LPSTR pszName;
536 DWORD cchName;
538 DWORD fdwEnum;
539 LPWAVEFORMATEX16 pwfxEnum;
541 HINSTANCE16 hInstance;
542 LPCSTR pszTemplateName;
543 LPARAM lCustData;
544 ACMFORMATCHOOSEHOOKPROC16 pfnHook;
545 } ACMFORMATCHOOSE16, *NPACMFORMATCHOOSE16, *LPACMFORMATCHOOSE16;
547 typedef struct _ACMFORMATDETAILS32A
549 DWORD cbStruct;
550 DWORD dwFormatIndex;
551 DWORD dwFormatTag;
552 DWORD fdwSupport;
553 PWAVEFORMATEX32 pwfx;
554 DWORD cbwfx;
555 CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
556 } ACMFORMATDETAILS32A, *PACMFORMATDETAILS32A;
558 typedef struct _ACMFORMATDETAILS32W
560 DWORD cbStruct;
561 DWORD dwFormatIndex;
562 DWORD dwFormatTag;
563 DWORD fdwSupport;
564 PWAVEFORMATEX32 pwfx;
565 DWORD cbwfx;
566 WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
567 } ACMFORMATDETAILS32W, *PACMFORMATDETAILS32W;
569 typedef struct _ACMFORMATDETAILS16
571 DWORD cbStruct;
572 DWORD dwFormatIndex;
573 DWORD dwFormatTag;
574 DWORD fdwSupport;
575 LPWAVEFORMATEX16 pwfx;
576 DWORD cbwfx;
577 CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
578 } ACMFORMATDETAILS16, *NPACMFORMATDETAILS16, *LPACMFORMATDETAILS16;
580 typedef struct _ACMFORMATTAGDETAILS32A
582 DWORD cbStruct;
583 DWORD dwFormatTagIndex;
584 DWORD dwFormatTag;
585 DWORD cbFormatSize;
586 DWORD fdwSupport;
587 DWORD cStandardFormats;
588 CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
589 } ACMFORMATTAGDETAILS32A, *PACMFORMATTAGDETAILS32A;
591 typedef struct _ACMFORMATTAGDETAILS32W
593 DWORD cbStruct;
594 DWORD dwFormatTagIndex;
595 DWORD dwFormatTag;
596 DWORD cbFormatSize;
597 DWORD fdwSupport;
598 DWORD cStandardFormats;
599 WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
600 } ACMFORMATTAGDETAILS32W, *PACMFORMATTAGDETAILS32W;
602 typedef struct _ACMFORMATTAGDETAILS16
604 DWORD cbStruct;
605 DWORD dwFormatTagIndex;
606 DWORD dwFormatTag;
607 DWORD cbFormatSize;
608 DWORD fdwSupport;
609 DWORD cStandardFormats;
610 CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
611 } ACMFORMATTAGDETAILS16, *NPACMFORMATTAGDETAILS16, *LPACMFORMATTAGDETAILS16;
613 typedef struct _ACMSTREAMHEADER
615 DWORD cbStruct;
616 DWORD fdwStatus;
617 DWORD dwUser;
618 LPBYTE pbSrc;
619 DWORD cbSrcLength;
620 DWORD cbSrcLengthUsed;
621 DWORD dwSrcUser;
622 LPBYTE pbDst;
623 DWORD cbDstLength;
624 DWORD cbDstLengthUsed;
625 DWORD dwDstUser;
626 DWORD dwReservedDriver[10];
627 } ACMSTREAMHEADER16, *NPACMSTREAMHEADER16, *LPACMSTREAMHEADER16,
628 ACMSTREAMHEADER32, *PACMSTREAMHEADER32;
630 /***********************************************************************
631 * Callbacks 2
634 typedef BOOL32 (CALLBACK *ACMFILTERENUMCB32A)(
635 HACMDRIVERID32 hadid, PACMFILTERDETAILS32A pafd,
636 DWORD dwInstance, DWORD fdwSupport
639 typedef BOOL32 (CALLBACK *ACMFILTERENUMCB32W)(
640 HACMDRIVERID32 hadid, PACMFILTERDETAILS32W pafd,
641 DWORD dwInstance, DWORD fdwSupport
644 typedef BOOL16 (CALLBACK *ACMFILTERENUMCB16)(
645 HACMDRIVERID16 hadid, LPACMFILTERDETAILS16 pafd,
646 DWORD dwInstance, DWORD fdwSupport
649 typedef BOOL32 (CALLBACK *ACMFILTERTAGENUMCB32A)(
650 HACMDRIVERID32 hadid, PACMFILTERTAGDETAILS32A paftd,
651 DWORD dwInstance, DWORD fdwSupport
654 typedef BOOL32 (CALLBACK *ACMFILTERTAGENUMCB32W)(
655 HACMDRIVERID32 hadid, PACMFILTERTAGDETAILS32W paftd,
656 DWORD dwInstance, DWORD fdwSupport
659 typedef BOOL16 (CALLBACK *ACMFILTERTAGENUMCB16)(
660 HACMDRIVERID16 hadid, LPACMFILTERTAGDETAILS16 paftd,
661 DWORD dwInstance, DWORD fdwSupport
664 typedef BOOL32 (CALLBACK *ACMFORMATENUMCB32A)(
665 HACMDRIVERID32 hadid, PACMFORMATDETAILS32A pafd,
666 DWORD dwInstance, DWORD fdwSupport
669 typedef BOOL32 (CALLBACK *ACMFORMATENUMCB32W)(
670 HACMDRIVERID32 hadid, PACMFORMATDETAILS32W pafd,
671 DWORD dwInstance, DWORD fdwSupport
674 typedef BOOL16 (CALLBACK *ACMFORMATENUMCB16)(
675 HACMDRIVERID16 hadid, LPACMFORMATDETAILS16 pafd,
676 DWORD dwInstance, DWORD fdwSupport
679 typedef BOOL32 (CALLBACK *ACMFORMATTAGENUMCB32A)(
680 HACMDRIVERID32 hadid, PACMFORMATTAGDETAILS32A paftd,
681 DWORD dwInstance, DWORD fdwSupport
684 typedef BOOL32 (CALLBACK *ACMFORMATTAGENUMCB32W)(
685 HACMDRIVERID32 hadid, PACMFORMATTAGDETAILS32W paftd,
686 DWORD dwInstance, DWORD fdwSupport
689 typedef BOOL16 (CALLBACK *ACMFORMATTAGENUMCB16)(
690 HACMDRIVERID16 hadid, LPACMFORMATTAGDETAILS16 paftd,
691 DWORD dwInstance, DWORD fdwSupport
694 /***********************************************************************
695 * Functions - Win16
698 DWORD WINAPI acmGetVersion16(
700 MMRESULT16 WINAPI acmMetrics16(
701 HACMOBJ16 hao, UINT16 uMetric, LPVOID pMetric
703 MMRESULT16 WINAPI acmDriverEnum16(
704 ACMDRIVERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
706 MMRESULT16 WINAPI acmDriverDetails16(
707 HACMDRIVERID16 hadid, LPACMDRIVERDETAILS16 padd, DWORD fdwDetails
709 MMRESULT16 WINAPI acmDriverAdd16(
710 LPHACMDRIVERID16 phadid, HINSTANCE16 hinstModule,
711 LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
713 MMRESULT16 WINAPI acmDriverRemove16(
714 HACMDRIVERID16 hadid, DWORD fdwRemove
716 MMRESULT16 WINAPI acmDriverOpen16(
717 LPHACMDRIVER16 phad, HACMDRIVERID16 hadid, DWORD fdwOpen
719 MMRESULT16 WINAPI acmDriverClose16(
720 HACMDRIVER16 had, DWORD fdwClose
722 LRESULT WINAPI acmDriverMessage16(
723 HACMDRIVER16 had, UINT16 uMsg, LPARAM lParam1, LPARAM lParam2
725 MMRESULT16 WINAPI acmDriverID16(
726 HACMOBJ16 hao, LPHACMDRIVERID16 phadid, DWORD fdwDriverID
728 MMRESULT16 WINAPI acmDriverPriority16(
729 HACMDRIVERID16 hadid, DWORD dwPriority, DWORD fdwPriority
731 MMRESULT16 WINAPI acmFormatTagDetails16(
732 HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd, DWORD fdwDetails
734 MMRESULT16 WINAPI acmFormatTagEnum16(
735 HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd,
736 ACMFORMATTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
738 MMRESULT16 WINAPI acmFormatChoose16(
739 LPACMFORMATCHOOSE16 pafmtc
741 MMRESULT16 WINAPI acmFormatDetails16(
742 HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd, DWORD fdwDetails
744 MMRESULT16 WINAPI acmFormatEnum16(
745 HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd,
746 ACMFORMATENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
748 MMRESULT16 WINAPI acmFormatSuggest16(
749 HACMDRIVER16 had, LPWAVEFORMATEX16 pwfxSrc,
750 LPWAVEFORMATEX16 pwfxDst, DWORD cbwfxDst, DWORD fdwSuggest
752 MMRESULT16 WINAPI acmFilterTagDetails16(
753 HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd, DWORD fdwDetails
755 MMRESULT16 WINAPI acmFilterTagEnum16(
756 HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd,
757 ACMFILTERTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
759 MMRESULT16 WINAPI acmFilterChoose16(
760 LPACMFILTERCHOOSE16 pafltrc
762 MMRESULT16 WINAPI acmFilterDetails16(
763 HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd, DWORD fdwDetails
765 MMRESULT16 WINAPI acmFilterEnum16(
766 HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd,
767 ACMFILTERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
769 MMRESULT16 WINAPI acmStreamOpen16(
770 LPHACMSTREAM16 phas, HACMDRIVER16 had,
771 LPWAVEFORMATEX16 pwfxSrc, LPWAVEFORMATEX16 pwfxDst,
772 LPWAVEFILTER16 pwfltr, DWORD dwCallback,
773 DWORD dwInstance, DWORD fdwOpen
775 MMRESULT16 WINAPI acmStreamClose16(
776 HACMSTREAM16 has, DWORD fdwClose
778 MMRESULT16 WINAPI acmStreamSize16(
779 HACMSTREAM16 has, DWORD cbInput,
780 LPDWORD pdwOutputBytes, DWORD fdwSize
782 MMRESULT16 WINAPI acmStreamConvert16(
783 HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwConvert
785 MMRESULT16 WINAPI acmStreamReset16(
786 HACMSTREAM16 has, DWORD fdwReset
788 MMRESULT16 WINAPI acmStreamPrepareHeader16(
789 HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwPrepare
791 MMRESULT16 WINAPI acmStreamUnprepareHeader16(
792 HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwUnprepare
795 /***********************************************************************
796 * Functions - Win32
799 MMRESULT32 WINAPI acmDriverAdd32A(
800 PHACMDRIVERID32 phadid, HINSTANCE32 hinstModule,
801 LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
803 MMRESULT32 WINAPI acmDriverAdd32W(
804 PHACMDRIVERID32 phadid, HINSTANCE32 hinstModule,
805 LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
807 MMRESULT32 WINAPI acmDriverClose32(
808 HACMDRIVER32 had, DWORD fdwClose
810 MMRESULT32 WINAPI acmDriverDetails32A(
811 HACMDRIVERID32 hadid, PACMDRIVERDETAILS32A padd, DWORD fdwDetails
813 MMRESULT32 WINAPI acmDriverDetails32W(
814 HACMDRIVERID32 hadid, PACMDRIVERDETAILS32W padd, DWORD fdwDetails
816 MMRESULT32 WINAPI acmDriverEnum32(
817 ACMDRIVERENUMCB32 fnCallback, DWORD dwInstance, DWORD fdwEnum
819 MMRESULT32 WINAPI acmDriverID32(
820 HACMOBJ32 hao, PHACMDRIVERID32 phadid, DWORD fdwDriverID
822 LRESULT WINAPI acmDriverMessage32(
823 HACMDRIVER32 had, UINT32 uMsg, LPARAM lParam1, LPARAM lParam2
825 MMRESULT32 WINAPI acmDriverOpen32(
826 PHACMDRIVER32 phad, HACMDRIVERID32 hadid, DWORD fdwOpen
828 MMRESULT32 WINAPI acmDriverPriority32(
829 HACMDRIVERID32 hadid, DWORD dwPriority, DWORD fdwPriority
831 MMRESULT32 WINAPI acmDriverRemove32(
832 HACMDRIVERID32 hadid, DWORD fdwRemove
834 MMRESULT32 WINAPI acmFilterChoose32A(
835 PACMFILTERCHOOSE32A pafltrc
837 MMRESULT32 WINAPI acmFilterChoose32W(
838 PACMFILTERCHOOSE32W pafltrc
840 MMRESULT32 WINAPI acmFilterDetails32A(
841 HACMDRIVER32 had, PACMFILTERDETAILS32A pafd, DWORD fdwDetails
843 MMRESULT32 WINAPI acmFilterDetails32W(
844 HACMDRIVER32 had, PACMFILTERDETAILS32W pafd, DWORD fdwDetails
846 MMRESULT32 WINAPI acmFilterEnum32A(
847 HACMDRIVER32 had, PACMFILTERDETAILS32A pafd,
848 ACMFILTERENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum
850 MMRESULT32 WINAPI acmFilterEnum32W(
851 HACMDRIVER32 had, PACMFILTERDETAILS32W pafd,
852 ACMFILTERENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum
854 MMRESULT32 WINAPI acmFilterTagDetails32A(
855 HACMDRIVER32 had, PACMFILTERTAGDETAILS32A paftd, DWORD fdwDetails
857 MMRESULT32 WINAPI acmFilterTagDetails32W(
858 HACMDRIVER32 had, PACMFILTERTAGDETAILS32W paftd, DWORD fdwDetails
860 MMRESULT32 WINAPI acmFilterTagEnum32A(
861 HACMDRIVER32 had, PACMFILTERTAGDETAILS32A paftd,
862 ACMFILTERTAGENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum
864 MMRESULT32 WINAPI acmFilterTagEnum32W(
865 HACMDRIVER32 had, PACMFILTERTAGDETAILS32W paftd,
866 ACMFILTERTAGENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum
868 MMRESULT32 WINAPI acmFormatChoose32A(
869 PACMFORMATCHOOSE32A pafmtc
871 MMRESULT32 WINAPI acmFormatChoose32W(
872 PACMFORMATCHOOSE32W pafmtc
874 MMRESULT32 WINAPI acmFormatDetails32A(
875 HACMDRIVER32 had, PACMFORMATDETAILS32A pafd, DWORD fdwDetails
877 MMRESULT32 WINAPI acmFormatDetails32W(
878 HACMDRIVER32 had, PACMFORMATDETAILS32W pafd, DWORD fdwDetails
880 MMRESULT32 WINAPI acmFormatEnum32A(
881 HACMDRIVER32 had, PACMFORMATDETAILS32A pafd,
882 ACMFORMATENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum
884 MMRESULT32 WINAPI acmFormatEnum32W(
885 HACMDRIVER32 had, PACMFORMATDETAILS32W pafd,
886 ACMFORMATENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum
888 MMRESULT32 WINAPI acmFormatSuggest32(
889 HACMDRIVER32 had, PWAVEFORMATEX32 pwfxSrc, PWAVEFORMATEX32 pwfxDst,
890 DWORD cbwfxDst, DWORD fdwSuggest
892 MMRESULT32 WINAPI acmFormatTagDetails32A(
893 HACMDRIVER32 had, PACMFORMATTAGDETAILS32A paftd, DWORD fdwDetails
895 MMRESULT32 WINAPI acmFormatTagDetails32W(
896 HACMDRIVER32 had, PACMFORMATTAGDETAILS32W paftd, DWORD fdwDetails
898 MMRESULT32 WINAPI acmFormatTagEnum32A(
899 HACMDRIVER32 had, PACMFORMATTAGDETAILS32A paftd,
900 ACMFORMATTAGENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum
902 MMRESULT32 WINAPI acmFormatTagEnum32W(
903 HACMDRIVER32 had, PACMFORMATTAGDETAILS32W paftd,
904 ACMFORMATTAGENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum
906 DWORD WINAPI acmGetVersion32(
908 MMRESULT32 WINAPI acmMetrics32(
909 HACMOBJ32 hao, UINT32 uMetric, LPVOID pMetric
911 MMRESULT32 WINAPI acmStreamClose32(
912 HACMSTREAM32 has, DWORD fdwClose
914 MMRESULT32 WINAPI acmStreamConvert32(
915 HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwConvert
917 MMRESULT32 WINAPI acmStreamMessage32(
918 HACMSTREAM32 has, UINT32 uMsg, LPARAM lParam1, LPARAM lParam2
920 MMRESULT32 WINAPI acmStreamOpen32(
921 PHACMSTREAM32 phas, HACMDRIVER32 had, PWAVEFORMATEX32 pwfxSrc,
922 PWAVEFORMATEX32 pwfxDst, PWAVEFILTER32 pwfltr, DWORD dwCallback,
923 DWORD dwInstance, DWORD fdwOpen
925 MMRESULT32 WINAPI acmStreamPrepareHeader32(
926 HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwPrepare
928 MMRESULT32 WINAPI acmStreamReset32(
929 HACMSTREAM32 has, DWORD fdwReset
931 MMRESULT32 WINAPI acmStreamSize32(
932 HACMSTREAM32 has, DWORD cbInput,
933 LPDWORD pdwOutputBytes, DWORD fdwSize
935 MMRESULT32 WINAPI acmStreamUnprepareHeader32(
936 HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwUnprepare
939 /***********************************************************************
940 * Wine specific - Win32
942 typedef struct _WINE_ACMBUILTINDRIVER32
944 LPSTR pszDriverAlias;
945 DRIVERPROC32 pfnDriverProc;
946 } WINE_ACMBUILTINDRIVER32, *PWINE_ACMBUILTINDRIVER32;
948 typedef struct _WINE_ACMLOCALDRIVER32
950 DRIVERPROC32 pfnDriverProc;
951 } WINE_ACMLOCALDRIVER32, *PWINE_ACMLOCALDRIVER32;
953 typedef struct _WINE_ACMDRIVERID32 *PWINE_ACMDRIVERID32;
955 typedef struct _WINE_ACMOBJ32
957 PWINE_ACMDRIVERID32 pACMDriverID;
958 } WINE_ACMOBJ32, *PWINE_ACMOBJ32;
960 typedef struct _WINE_ACMDRIVER32
962 WINE_ACMOBJ32 obj;
963 HDRVR32 hDrvr;
964 } WINE_ACMDRIVER32, *PWINE_ACMDRIVER32;
966 typedef struct _WINE_ACMSTREAM32
968 WINE_ACMOBJ32 obj;
969 /* FIME: More fields needed */
970 } WINE_ACMSTREAM32, *PWINE_ACMSTREAM32;
972 typedef struct _WINE_ACMDRIVERID32
974 LPSTR pszDriverAlias;
975 LPSTR pszFileName;
976 PWINE_ACMLOCALDRIVER32 pACMLocalDriver;
977 BOOL32 bEnabled;
978 PWINE_ACMDRIVER32 pACMDriver; /* NULL if not open */
979 PWINE_ACMDRIVERID32 pNextACMDriverID;
980 PWINE_ACMDRIVERID32 pPreviousACMDriverID;
981 } WINE_ACMDRIVERID32;
983 /* From builtin.c */
984 extern WINE_ACMBUILTINDRIVER32 MSACM_BuiltinDrivers32[];
986 /* From interal.c */
987 extern HANDLE32 MSACM_hHeap32;
988 extern PWINE_ACMDRIVERID32 MSACM_pFirstACMDriverID32;
989 extern PWINE_ACMDRIVERID32 MSACM_pLastACMDriverID32;
990 PWINE_ACMDRIVERID32 MSACM_RegisterDriver32(
991 LPSTR pszDriverAlias, LPSTR pszFileName,
992 PWINE_ACMLOCALDRIVER32 pLocalDriver);
993 void MSACM_RegisterAllDrivers32();
994 PWINE_ACMDRIVERID32 MSACM_UnregisterDriver32(PWINE_ACMDRIVERID32 p);
995 void MSACM_UnregisterAllDrivers32();
996 PWINE_ACMDRIVERID32 MSACM_GetDriverID32(HACMDRIVERID32 hDriverID);
997 PWINE_ACMDRIVER32 MSACM_GetDriver32(HACMDRIVER32 hDriver);
998 PWINE_ACMOBJ32 MSACM_GetObj32(HACMOBJ32 hObj);
999 HDRVR32 MSACM_OpenDriverProc32(DRIVERPROC32 pfnDriverProc);
1001 #endif /* __WINE_MSACM_H */