Authors: Chris Morgan <cmorgan@wpi.edu>, James Abbatiello <abbeyj@wpi.edu>
[wine/multimedia.git] / include / msacm.h
blob5958a1760e93e43c55da55a139ff666d6f75bcc6
1 /*
2 * msacm.h - Declarations for MSACM
3 */
5 #ifndef __WINE_MSACM_H
6 #define __WINE_MSACM_H
8 #include "windef.h"
9 #include "driver.h"
10 #include "mmsystem.h"
11 #include "mmreg.h"
13 /***********************************************************************
14 * Types
17 /* FIXME: Move to windef.h */
18 #define DECLARE_HANDLE(a) \
19 typedef HANDLE16 a##16; \
20 typedef HANDLE a; \
21 typedef a##16 *P##a##16; \
22 typedef a##16 *NP##a##16; \
23 typedef a##16 *LP##a##16; \
24 typedef a *P##a;
26 DECLARE_HANDLE(HACMDRIVERID)
27 DECLARE_HANDLE(HACMDRIVER)
28 DECLARE_HANDLE(HACMSTREAM)
29 DECLARE_HANDLE(HACMOBJ)
31 /* FIXME: Remove when define moved to windef.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 ACMHELPMSGSTRINGA "acmchoose_help"
111 #define ACMHELPMSGSTRINGW L"acmchoose_help"
112 #define ACMHELPMSGSTRING16 "acmchoose_help"
114 #define ACMHELPMSGCONTEXTMENUA "acmchoose_contextmenu"
115 #define ACMHELPMSGCONTEXTMENUW L"acmchoose_contextmenu"
116 #define ACMHELPMSGCONTEXTMENU16 "acmchoose_contextmenu"
118 #define ACMHELPMSGCONTEXTHELPA "acmchoose_contexthelp"
119 #define ACMHELPMSGCONTEXTHELPW 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 BOOL (CALLBACK *ACMDRIVERENUMCB)(
212 HACMDRIVERID hadid, DWORD dwInstance, DWORD fdwSupport
215 typedef BOOL16 (CALLBACK *ACMDRIVERENUMCB16)(
216 HACMDRIVERID16 hadid, DWORD dwInstance, DWORD fdwSupport
219 typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCA)(
220 HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
223 typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCW)(
224 HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
227 typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROC16)(
228 HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
231 typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCA)(
232 HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
235 typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCW)(
236 HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
239 typedef UINT16 (CALLBACK *ACMFORMATCHOOSEHOOKPROC16)(
240 HWND16 hwnd, UINT16 uMsg, WPARAM16 wParam, LPARAM lParam
243 /***********************************************************************
244 * Structures
247 typedef struct _ACMDRIVERDETAILSA
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 HICON 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 } ACMDRIVERDETAILSA, *PACMDRIVERDETAILSA;
273 typedef struct _ACMDRIVERDETAILSW
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 HICON 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 } ACMDRIVERDETAILSW, *PACMDRIVERDETAILSW;
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 _ACMFILTERCHOOSEA
327 DWORD cbStruct;
328 DWORD fdwStyle;
330 HWND hwndOwner;
332 PWAVEFILTER 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 PWAVEFILTER pwfltrEnum;
345 HINSTANCE hInstance;
346 LPCSTR pszTemplateName;
347 LPARAM lCustData;
348 ACMFILTERCHOOSEHOOKPROCA pfnHook;
349 } ACMFILTERCHOOSEA, *PACMFILTERCHOOSEA;
351 typedef struct _ACMFILTERCHOOSEW
353 DWORD cbStruct;
354 DWORD fdwStyle;
356 HWND hwndOwner;
358 PWAVEFILTER 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 PWAVEFILTER pwfltrEnum;
371 HINSTANCE hInstance;
372 LPCWSTR pszTemplateName;
373 LPARAM lCustData;
374 ACMFILTERCHOOSEHOOKPROCW pfnHook;
375 } ACMFILTERCHOOSEW, *PACMFILTERCHOOSEW;
377 typedef struct _ACMFILTERCHOOSE16
379 DWORD cbStruct;
380 DWORD fdwStyle;
382 HWND16 hwndOwner;
384 LPWAVEFILTER 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 LPWAVEFILTER pwfltrEnum;
397 HINSTANCE16 hInstance;
398 LPCSTR pszTemplateName;
399 LPARAM lCustData;
400 ACMFILTERCHOOSEHOOKPROC16 pfnHook;
401 } ACMFILTERCHOOSE16, *NPACMFILTERCHOOSE16, *LPACMFILTERCHOOSE16;
403 typedef struct _ACMFILTERDETAILSA
405 DWORD cbStruct;
406 DWORD dwFilterIndex;
407 DWORD dwFilterTag;
408 DWORD fdwSupport;
409 PWAVEFILTER pwfltr;
410 DWORD cbwfltr;
411 CHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
412 } ACMFILTERDETAILSA, *PACMFILTERDETAILSA;
414 typedef struct _ACMFILTERDETAILSW
416 DWORD cbStruct;
417 DWORD dwFilterIndex;
418 DWORD dwFilterTag;
419 DWORD fdwSupport;
420 PWAVEFILTER pwfltr;
421 DWORD cbwfltr;
422 WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
423 } ACMFILTERDETAILSW, *PACMFILTERDETAILSW;
425 typedef struct _ACMFILTERDETAILS16
427 DWORD cbStruct;
428 DWORD dwFilterIndex;
429 DWORD dwFilterTag;
430 DWORD fdwSupport;
431 LPWAVEFILTER pwfltr;
432 DWORD cbwfltr;
433 CHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
434 } ACMFILTERDETAILS16, *NPACMFILTERDETAILS16, *LPACMFILTERDETAILS16;
436 typedef struct _ACMFILTERTAGDETAILSA
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 } ACMFILTERTAGDETAILSA, *PACMFILTERTAGDETAILSA;
447 typedef struct _ACMFILTERTAGDETAILSW
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 } ACMFILTERTAGDETAILSW, *PACMFILTERTAGDETAILSW;
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 _ACMFORMATCHOOSEA
471 DWORD cbStruct;
472 DWORD fdwStyle;
474 HWND hwndOwner;
476 PWAVEFORMATEX 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 PWAVEFORMATEX pwfxEnum;
489 HINSTANCE hInstance;
490 LPCSTR pszTemplateName;
491 LPARAM lCustData;
492 ACMFORMATCHOOSEHOOKPROCA pfnHook;
493 } ACMFORMATCHOOSEA, *PACMFORMATCHOOSEA;
495 typedef struct _ACMFORMATCHOOSEW
497 DWORD cbStruct;
498 DWORD fdwStyle;
500 HWND hwndOwner;
502 PWAVEFORMATEX 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 HINSTANCE hInstance;
516 LPCWSTR pszTemplateName;
517 LPARAM lCustData;
518 ACMFORMATCHOOSEHOOKPROCW pfnHook;
519 } ACMFORMATCHOOSEW, *PACMFORMATCHOOSEW;
521 typedef struct _ACMFORMATCHOOSE16
523 DWORD cbStruct;
524 DWORD fdwStyle;
526 HWND16 hwndOwner;
528 LPWAVEFORMATEX 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 LPWAVEFORMATEX pwfxEnum;
541 HINSTANCE16 hInstance;
542 LPCSTR pszTemplateName;
543 LPARAM lCustData;
544 ACMFORMATCHOOSEHOOKPROC16 pfnHook;
545 } ACMFORMATCHOOSE16, *NPACMFORMATCHOOSE16, *LPACMFORMATCHOOSE16;
547 typedef struct _ACMFORMATDETAILSA
549 DWORD cbStruct;
550 DWORD dwFormatIndex;
551 DWORD dwFormatTag;
552 DWORD fdwSupport;
553 PWAVEFORMATEX pwfx;
554 DWORD cbwfx;
555 CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
556 } ACMFORMATDETAILSA, *PACMFORMATDETAILSA;
558 typedef struct _ACMFORMATDETAILSW
560 DWORD cbStruct;
561 DWORD dwFormatIndex;
562 DWORD dwFormatTag;
563 DWORD fdwSupport;
564 PWAVEFORMATEX pwfx;
565 DWORD cbwfx;
566 WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
567 } ACMFORMATDETAILSW, *PACMFORMATDETAILSW;
569 typedef struct _ACMFORMATDETAILS16
571 DWORD cbStruct;
572 DWORD dwFormatIndex;
573 DWORD dwFormatTag;
574 DWORD fdwSupport;
575 LPWAVEFORMATEX pwfx;
576 DWORD cbwfx;
577 CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
578 } ACMFORMATDETAILS16, *NPACMFORMATDETAILS16, *LPACMFORMATDETAILS16;
580 typedef struct _ACMFORMATTAGDETAILSA
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 } ACMFORMATTAGDETAILSA, *PACMFORMATTAGDETAILSA;
591 typedef struct _ACMFORMATTAGDETAILSW
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 } ACMFORMATTAGDETAILSW, *PACMFORMATTAGDETAILSW;
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 ACMSTREAMHEADER, *PACMSTREAMHEADER;
630 /***********************************************************************
631 * Callbacks 2
634 typedef BOOL (CALLBACK *ACMFILTERENUMCBA)(
635 HACMDRIVERID hadid, PACMFILTERDETAILSA pafd,
636 DWORD dwInstance, DWORD fdwSupport
639 typedef BOOL (CALLBACK *ACMFILTERENUMCBW)(
640 HACMDRIVERID hadid, PACMFILTERDETAILSW pafd,
641 DWORD dwInstance, DWORD fdwSupport
644 typedef BOOL16 (CALLBACK *ACMFILTERENUMCB16)(
645 HACMDRIVERID16 hadid, LPACMFILTERDETAILS16 pafd,
646 DWORD dwInstance, DWORD fdwSupport
649 typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBA)(
650 HACMDRIVERID hadid, PACMFILTERTAGDETAILSA paftd,
651 DWORD dwInstance, DWORD fdwSupport
654 typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBW)(
655 HACMDRIVERID hadid, PACMFILTERTAGDETAILSW paftd,
656 DWORD dwInstance, DWORD fdwSupport
659 typedef BOOL16 (CALLBACK *ACMFILTERTAGENUMCB16)(
660 HACMDRIVERID16 hadid, LPACMFILTERTAGDETAILS16 paftd,
661 DWORD dwInstance, DWORD fdwSupport
664 typedef BOOL (CALLBACK *ACMFORMATENUMCBA)(
665 HACMDRIVERID hadid, PACMFORMATDETAILSA pafd,
666 DWORD dwInstance, DWORD fdwSupport
669 typedef BOOL (CALLBACK *ACMFORMATENUMCBW)(
670 HACMDRIVERID hadid, PACMFORMATDETAILSW pafd,
671 DWORD dwInstance, DWORD fdwSupport
674 typedef BOOL16 (CALLBACK *ACMFORMATENUMCB16)(
675 HACMDRIVERID16 hadid, LPACMFORMATDETAILS16 pafd,
676 DWORD dwInstance, DWORD fdwSupport
679 typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA)(
680 HACMDRIVERID hadid, PACMFORMATTAGDETAILSA paftd,
681 DWORD dwInstance, DWORD fdwSupport
684 typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW)(
685 HACMDRIVERID hadid, PACMFORMATTAGDETAILSW 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, LPWAVEFORMATEX pwfxSrc,
750 LPWAVEFORMATEX 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 LPWAVEFORMATEX pwfxSrc, LPWAVEFORMATEX pwfxDst,
772 LPWAVEFILTER 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 MMRESULT WINAPI acmDriverAddA(
800 PHACMDRIVERID phadid, HINSTANCE hinstModule,
801 LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
803 MMRESULT WINAPI acmDriverAddW(
804 PHACMDRIVERID phadid, HINSTANCE hinstModule,
805 LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
807 MMRESULT WINAPI acmDriverClose(
808 HACMDRIVER had, DWORD fdwClose
810 MMRESULT WINAPI acmDriverDetailsA(
811 HACMDRIVERID hadid, PACMDRIVERDETAILSA padd, DWORD fdwDetails
813 MMRESULT WINAPI acmDriverDetailsW(
814 HACMDRIVERID hadid, PACMDRIVERDETAILSW padd, DWORD fdwDetails
816 MMRESULT WINAPI acmDriverEnum(
817 ACMDRIVERENUMCB fnCallback, DWORD dwInstance, DWORD fdwEnum
819 MMRESULT WINAPI acmDriverID(
820 HACMOBJ hao, PHACMDRIVERID phadid, DWORD fdwDriverID
822 LRESULT WINAPI acmDriverMessage(
823 HACMDRIVER had, UINT uMsg, LPARAM lParam1, LPARAM lParam2
825 MMRESULT WINAPI acmDriverOpen(
826 PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen
828 MMRESULT WINAPI acmDriverPriority(
829 HACMDRIVERID hadid, DWORD dwPriority, DWORD fdwPriority
831 MMRESULT WINAPI acmDriverRemove(
832 HACMDRIVERID hadid, DWORD fdwRemove
834 MMRESULT WINAPI acmFilterChooseA(
835 PACMFILTERCHOOSEA pafltrc
837 MMRESULT WINAPI acmFilterChooseW(
838 PACMFILTERCHOOSEW pafltrc
840 MMRESULT WINAPI acmFilterDetailsA(
841 HACMDRIVER had, PACMFILTERDETAILSA pafd, DWORD fdwDetails
843 MMRESULT WINAPI acmFilterDetailsW(
844 HACMDRIVER had, PACMFILTERDETAILSW pafd, DWORD fdwDetails
846 MMRESULT WINAPI acmFilterEnumA(
847 HACMDRIVER had, PACMFILTERDETAILSA pafd,
848 ACMFILTERENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
850 MMRESULT WINAPI acmFilterEnumW(
851 HACMDRIVER had, PACMFILTERDETAILSW pafd,
852 ACMFILTERENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
854 MMRESULT WINAPI acmFilterTagDetailsA(
855 HACMDRIVER had, PACMFILTERTAGDETAILSA paftd, DWORD fdwDetails
857 MMRESULT WINAPI acmFilterTagDetailsW(
858 HACMDRIVER had, PACMFILTERTAGDETAILSW paftd, DWORD fdwDetails
860 MMRESULT WINAPI acmFilterTagEnumA(
861 HACMDRIVER had, PACMFILTERTAGDETAILSA paftd,
862 ACMFILTERTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
864 MMRESULT WINAPI acmFilterTagEnumW(
865 HACMDRIVER had, PACMFILTERTAGDETAILSW paftd,
866 ACMFILTERTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
868 MMRESULT WINAPI acmFormatChooseA(
869 PACMFORMATCHOOSEA pafmtc
871 MMRESULT WINAPI acmFormatChooseW(
872 PACMFORMATCHOOSEW pafmtc
874 MMRESULT WINAPI acmFormatDetailsA(
875 HACMDRIVER had, PACMFORMATDETAILSA pafd, DWORD fdwDetails
877 MMRESULT WINAPI acmFormatDetailsW(
878 HACMDRIVER had, PACMFORMATDETAILSW pafd, DWORD fdwDetails
880 MMRESULT WINAPI acmFormatEnumA(
881 HACMDRIVER had, PACMFORMATDETAILSA pafd,
882 ACMFORMATENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
884 MMRESULT WINAPI acmFormatEnumW(
885 HACMDRIVER had, PACMFORMATDETAILSW pafd,
886 ACMFORMATENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
888 MMRESULT WINAPI acmFormatSuggest(
889 HACMDRIVER had, PWAVEFORMATEX pwfxSrc, PWAVEFORMATEX pwfxDst,
890 DWORD cbwfxDst, DWORD fdwSuggest
892 MMRESULT WINAPI acmFormatTagDetailsA(
893 HACMDRIVER had, PACMFORMATTAGDETAILSA paftd, DWORD fdwDetails
895 MMRESULT WINAPI acmFormatTagDetailsW(
896 HACMDRIVER had, PACMFORMATTAGDETAILSW paftd, DWORD fdwDetails
898 MMRESULT WINAPI acmFormatTagEnumA(
899 HACMDRIVER had, PACMFORMATTAGDETAILSA paftd,
900 ACMFORMATTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
902 MMRESULT WINAPI acmFormatTagEnumW(
903 HACMDRIVER had, PACMFORMATTAGDETAILSW paftd,
904 ACMFORMATTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
906 DWORD WINAPI acmGetVersion(
908 MMRESULT WINAPI acmMetrics(
909 HACMOBJ hao, UINT uMetric, LPVOID pMetric
911 MMRESULT WINAPI acmStreamClose(
912 HACMSTREAM has, DWORD fdwClose
914 MMRESULT WINAPI acmStreamConvert(
915 HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwConvert
917 MMRESULT WINAPI acmStreamMessage(
918 HACMSTREAM has, UINT uMsg, LPARAM lParam1, LPARAM lParam2
920 MMRESULT WINAPI acmStreamOpen(
921 PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pwfxSrc,
922 PWAVEFORMATEX pwfxDst, PWAVEFILTER pwfltr, DWORD dwCallback,
923 DWORD dwInstance, DWORD fdwOpen
925 MMRESULT WINAPI acmStreamPrepareHeader(
926 HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwPrepare
928 MMRESULT WINAPI acmStreamReset(
929 HACMSTREAM has, DWORD fdwReset
931 MMRESULT WINAPI acmStreamSize(
932 HACMSTREAM has, DWORD cbInput,
933 LPDWORD pdwOutputBytes, DWORD fdwSize
935 MMRESULT WINAPI acmStreamUnprepareHeader(
936 HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwUnprepare
939 /***********************************************************************
940 * Wine specific - Win32
942 typedef struct _WINE_ACMBUILTINDRIVER
944 LPSTR pszDriverAlias;
945 DRIVERPROC pfnDriverProc;
946 } WINE_ACMBUILTINDRIVER, *PWINE_ACMBUILTINDRIVER;
948 typedef struct _WINE_ACMLOCALDRIVER
950 DRIVERPROC pfnDriverProc;
951 } WINE_ACMLOCALDRIVER, *PWINE_ACMLOCALDRIVER;
953 typedef struct _WINE_ACMDRIVERID *PWINE_ACMDRIVERID;
955 typedef struct _WINE_ACMOBJ
957 PWINE_ACMDRIVERID pACMDriverID;
958 } WINE_ACMOBJ, *PWINE_ACMOBJ;
960 typedef struct _WINE_ACMDRIVER
962 WINE_ACMOBJ obj;
963 HDRVR hDrvr;
964 } WINE_ACMDRIVER, *PWINE_ACMDRIVER;
966 typedef struct _WINE_ACMSTREAM
968 WINE_ACMOBJ obj;
969 /* FIME: More fields needed */
970 } WINE_ACMSTREAM, *PWINE_ACMSTREAM;
972 typedef struct _WINE_ACMDRIVERID
974 LPSTR pszDriverAlias;
975 LPSTR pszFileName;
976 PWINE_ACMLOCALDRIVER pACMLocalDriver;
977 BOOL bEnabled;
978 PWINE_ACMDRIVER pACMDriver; /* NULL if not open */
979 PWINE_ACMDRIVERID pNextACMDriverID;
980 PWINE_ACMDRIVERID pPreviousACMDriverID;
981 } WINE_ACMDRIVERID;
983 /* From builtin.c */
984 extern WINE_ACMBUILTINDRIVER MSACM_BuiltinDrivers[];
986 /* From interal.c */
987 extern HANDLE MSACM_hHeap;
988 extern PWINE_ACMDRIVERID MSACM_pFirstACMDriverID;
989 extern PWINE_ACMDRIVERID MSACM_pLastACMDriverID;
990 PWINE_ACMDRIVERID MSACM_RegisterDriver(
991 LPSTR pszDriverAlias, LPSTR pszFileName,
992 PWINE_ACMLOCALDRIVER pLocalDriver);
993 void MSACM_RegisterAllDrivers();
994 PWINE_ACMDRIVERID MSACM_UnregisterDriver(PWINE_ACMDRIVERID p);
995 void MSACM_UnregisterAllDrivers();
996 PWINE_ACMDRIVERID MSACM_GetDriverID(HACMDRIVERID hDriverID);
997 PWINE_ACMDRIVER MSACM_GetDriver(HACMDRIVER hDriver);
998 PWINE_ACMOBJ MSACM_GetObj(HACMOBJ hObj);
999 HDRVR MSACM_OpenDriverProc(DRIVERPROC pfnDriverProc);
1001 #endif /* __WINE_MSACM_H */