mfplat: Fix optional buffer argument handling in ConvertToContiguousBuffer().
[wine.git] / include / msacm.h
blob8d459cb24721f20e30ac9770962f1ae1b045f728
1 /*
2 * Declarations for MSACM
4 * Copyright (C) the Wine project
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.
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.
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #ifndef __WINE_MSACM_H
22 #define __WINE_MSACM_H
24 #ifdef __cplusplus
25 extern "C" {
26 #endif /* defined(__cplusplus) */
28 #include <pshpack1.h>
30 #define ACMAPI WINAPI
32 /***********************************************************************
33 * Defines/Enums
35 #define ACMERR_BASE 512
36 #define ACMERR_NOTPOSSIBLE (ACMERR_BASE + 0)
37 #define ACMERR_BUSY (ACMERR_BASE + 1)
38 #define ACMERR_UNPREPARED (ACMERR_BASE + 2)
39 #define ACMERR_CANCELED (ACMERR_BASE + 3)
41 #define MM_ACM_OPEN MM_STREAM_OPEN
42 #define MM_ACM_CLOSE MM_STREAM_CLOSE
43 #define MM_ACM_DONE MM_STREAM_DONE
45 #define ACM_DRIVERADDF_NAME __MSABI_LONG(0x00000001)
46 #define ACM_DRIVERADDF_FUNCTION __MSABI_LONG(0x00000003)
47 #define ACM_DRIVERADDF_NOTIFYHWND __MSABI_LONG(0x00000004)
48 #define ACM_DRIVERADDF_TYPEMASK __MSABI_LONG(0x00000007)
49 #define ACM_DRIVERADDF_LOCAL __MSABI_LONG(0x00000000)
50 #define ACM_DRIVERADDF_GLOBAL __MSABI_LONG(0x00000008)
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
58 #define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
59 #define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED mmioFOURCC('\0', '\0', '\0', '\0')
61 #define ACMDRIVERDETAILS_SUPPORTF_CODEC __MSABI_LONG(0x00000001)
62 #define ACMDRIVERDETAILS_SUPPORTF_CONVERTER __MSABI_LONG(0x00000002)
63 #define ACMDRIVERDETAILS_SUPPORTF_FILTER __MSABI_LONG(0x00000004)
64 #define ACMDRIVERDETAILS_SUPPORTF_HARDWARE __MSABI_LONG(0x00000008)
65 #define ACMDRIVERDETAILS_SUPPORTF_ASYNC __MSABI_LONG(0x00000010)
66 #define ACMDRIVERDETAILS_SUPPORTF_LOCAL __MSABI_LONG(0x40000000)
67 #define ACMDRIVERDETAILS_SUPPORTF_DISABLED __MSABI_LONG(0x80000000)
69 #define ACM_DRIVERENUMF_NOLOCAL __MSABI_LONG(0x40000000)
70 #define ACM_DRIVERENUMF_DISABLED __MSABI_LONG(0x80000000)
72 #define ACM_DRIVERPRIORITYF_ENABLE __MSABI_LONG(0x00000001)
73 #define ACM_DRIVERPRIORITYF_DISABLE __MSABI_LONG(0x00000002)
74 #define ACM_DRIVERPRIORITYF_ABLEMASK __MSABI_LONG(0x00000003)
75 #define ACM_DRIVERPRIORITYF_BEGIN __MSABI_LONG(0x00010000)
76 #define ACM_DRIVERPRIORITYF_END __MSABI_LONG(0x00020000)
77 #define ACM_DRIVERPRIORITYF_DEFERMASK __MSABI_LONG(0x00030000)
79 #define MM_ACM_FILTERCHOOSE 0x8000
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)
86 #define ACMFILTERCHOOSE_STYLEF_SHOWHELP __MSABI_LONG(0x00000004)
87 #define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK __MSABI_LONG(0x00000008)
88 #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE __MSABI_LONG(0x00000010)
89 #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE __MSABI_LONG(0x00000020)
90 #define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT __MSABI_LONG(0x00000040)
91 #define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP __MSABI_LONG(0x00000080)
93 #define ACMFILTERDETAILS_FILTER_CHARS 128
95 #define ACM_FILTERDETAILSF_INDEX __MSABI_LONG(0x00000000)
96 #define ACM_FILTERDETAILSF_FILTER __MSABI_LONG(0x00000001)
97 #define ACM_FILTERDETAILSF_QUERYMASK __MSABI_LONG(0x0000000F)
99 #define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48
101 #define ACM_FILTERTAGDETAILSF_INDEX __MSABI_LONG(0x00000000)
102 #define ACM_FILTERTAGDETAILSF_FILTERTAG __MSABI_LONG(0x00000001)
103 #define ACM_FILTERTAGDETAILSF_LARGESTSIZE __MSABI_LONG(0x00000002)
104 #define ACM_FILTERTAGDETAILSF_QUERYMASK __MSABI_LONG(0x0000000F)
106 #define ACM_FILTERENUMF_DWFILTERTAG __MSABI_LONG(0x00010000)
108 #define ACMHELPMSGSTRINGA "acmchoose_help"
109 #if defined(_MSC_VER) || defined(__MINGW32__)
110 # define ACMHELPMSGSTRINGW L"acmchoose_help"
111 #else
112 static const WCHAR ACMHELPMSGSTRINGW[] = { 'a','c','m',
113 'c','h','o','o','s','e','_','h','e','l','p',0 };
114 #endif
115 #define ACMHELPMSGSTRING WINELIB_NAME_AW(ACMHELPMSGSTRING)
117 #define ACMHELPMSGCONTEXTMENUA "acmchoose_contextmenu"
118 #if defined(_MSC_VER) || defined(__MINGW32__)
119 # define ACMHELPMSGCONTEXTMENUW L"acmchoose_contextmenu"
120 #else
121 static const WCHAR ACMHELPMSGCONTEXTMENUW[] = { 'a','c','m',
122 'c','h','o','o','s','e','_','c','o','n','t','e','x','t','m','e','n','u',0 };
123 #endif
124 #define ACMHELPMSGCONTEXTMENU WINELIB_NAME_AW(ACMHELPMSGCONTEXTMENU)
126 #define ACMHELPMSGCONTEXTHELPA "acmchoose_contexthelp"
127 #if defined(_MSC_VER) || defined(__MINGW32__)
128 # define ACMHELPMSGCONTEXTHELPW L"acmchoose_contexthelp"
129 #else
130 static const WCHAR ACMHELPMSGCONTEXTHELPW[] = { 'a','c','m',
131 'c','h','o','o','s','e','_','c','o','n','t','e','x','t','h','e','l','p',0 };
132 #endif
133 #define ACMHELPMSGCONTEXTHELP WINELIB_NAME_AW(ACMHELPMSGCONTEXTHELP)
135 #define MM_ACM_FORMATCHOOSE 0x8000
137 #define FORMATCHOOSE_MESSAGE 0
138 #define FORMATCHOOSE_FORMATTAG_VERIFY (FORMATCHOOSE_MESSAGE+0)
139 #define FORMATCHOOSE_FORMAT_VERIFY (FORMATCHOOSE_MESSAGE+1)
140 #define FORMATCHOOSE_CUSTOM_VERIFY (FORMATCHOOSE_MESSAGE+2)
142 #define ACMFORMATCHOOSE_STYLEF_SHOWHELP __MSABI_LONG(0x00000004)
143 #define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK __MSABI_LONG(0x00000008)
144 #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE __MSABI_LONG(0x00000010)
145 #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE __MSABI_LONG(0x00000020)
146 #define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT __MSABI_LONG(0x00000040)
147 #define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP __MSABI_LONG(0x00000080)
149 #define ACMFORMATDETAILS_FORMAT_CHARS 128
151 #define ACM_FORMATDETAILSF_INDEX __MSABI_LONG(0x00000000)
152 #define ACM_FORMATDETAILSF_FORMAT __MSABI_LONG(0x00000001)
153 #define ACM_FORMATDETAILSF_QUERYMASK __MSABI_LONG(0x0000000F)
155 #define ACM_FORMATENUMF_WFORMATTAG __MSABI_LONG(0x00010000)
156 #define ACM_FORMATENUMF_NCHANNELS __MSABI_LONG(0x00020000)
157 #define ACM_FORMATENUMF_NSAMPLESPERSEC __MSABI_LONG(0x00040000)
158 #define ACM_FORMATENUMF_WBITSPERSAMPLE __MSABI_LONG(0x00080000)
159 #define ACM_FORMATENUMF_CONVERT __MSABI_LONG(0x00100000)
160 #define ACM_FORMATENUMF_SUGGEST __MSABI_LONG(0x00200000)
161 #define ACM_FORMATENUMF_HARDWARE __MSABI_LONG(0x00400000)
162 #define ACM_FORMATENUMF_INPUT __MSABI_LONG(0x00800000)
163 #define ACM_FORMATENUMF_OUTPUT __MSABI_LONG(0x01000000)
165 #define ACM_FORMATSUGGESTF_WFORMATTAG __MSABI_LONG(0x00010000)
166 #define ACM_FORMATSUGGESTF_NCHANNELS __MSABI_LONG(0x00020000)
167 #define ACM_FORMATSUGGESTF_NSAMPLESPERSEC __MSABI_LONG(0x00040000)
168 #define ACM_FORMATSUGGESTF_WBITSPERSAMPLE __MSABI_LONG(0x00080000)
169 #define ACM_FORMATSUGGESTF_TYPEMASK __MSABI_LONG(0x00FF0000)
171 #define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48
173 #define ACM_FORMATTAGDETAILSF_INDEX __MSABI_LONG(0x00000000)
174 #define ACM_FORMATTAGDETAILSF_FORMATTAG __MSABI_LONG(0x00000001)
175 #define ACM_FORMATTAGDETAILSF_LARGESTSIZE __MSABI_LONG(0x00000002)
176 #define ACM_FORMATTAGDETAILSF_QUERYMASK __MSABI_LONG(0x0000000F)
178 #define ACM_METRIC_COUNT_DRIVERS 1
179 #define ACM_METRIC_COUNT_CODECS 2
180 #define ACM_METRIC_COUNT_CONVERTERS 3
181 #define ACM_METRIC_COUNT_FILTERS 4
182 #define ACM_METRIC_COUNT_DISABLED 5
183 #define ACM_METRIC_COUNT_HARDWARE 6
184 #define ACM_METRIC_COUNT_LOCAL_DRIVERS 20
185 #define ACM_METRIC_COUNT_LOCAL_CODECS 21
186 #define ACM_METRIC_COUNT_LOCAL_CONVERTERS 22
187 #define ACM_METRIC_COUNT_LOCAL_FILTERS 23
188 #define ACM_METRIC_COUNT_LOCAL_DISABLED 24
189 #define ACM_METRIC_HARDWARE_WAVE_INPUT 30
190 #define ACM_METRIC_HARDWARE_WAVE_OUTPUT 31
191 #define ACM_METRIC_MAX_SIZE_FORMAT 50
192 #define ACM_METRIC_MAX_SIZE_FILTER 51
193 #define ACM_METRIC_DRIVER_SUPPORT 100
194 #define ACM_METRIC_DRIVER_PRIORITY 101
196 #define ACM_STREAMCONVERTF_BLOCKALIGN 0x00000004
197 #define ACM_STREAMCONVERTF_START 0x00000010
198 #define ACM_STREAMCONVERTF_END 0x00000020
200 #define ACMSTREAMHEADER_STATUSF_DONE __MSABI_LONG(0x00010000)
201 #define ACMSTREAMHEADER_STATUSF_PREPARED __MSABI_LONG(0x00020000)
202 #define ACMSTREAMHEADER_STATUSF_INQUEUE __MSABI_LONG(0x00100000)
204 #define ACM_STREAMOPENF_QUERY 0x00000001
205 #define ACM_STREAMOPENF_ASYNC 0x00000002
206 #define ACM_STREAMOPENF_NONREALTIME 0x00000004
208 #define ACM_STREAMSIZEF_SOURCE __MSABI_LONG(0x00000000)
209 #define ACM_STREAMSIZEF_DESTINATION __MSABI_LONG(0x00000001)
210 #define ACM_STREAMSIZEF_QUERYMASK __MSABI_LONG(0x0000000F)
212 #define ACMDM_USER (DRV_USER + 0x0000)
213 #define ACMDM_RESERVED_LOW (DRV_USER + 0x2000)
214 #define ACMDM_RESERVED_HIGH (DRV_USER + 0x2FFF)
216 #define ACMDM_BASE ACMDM_RESERVED_LOW
218 #define ACMDM_DRIVER_ABOUT (ACMDM_BASE + 11)
220 /* handles */
222 DECLARE_HANDLE(HACMDRIVERID);
223 DECLARE_HANDLE(HACMDRIVER);
224 DECLARE_HANDLE(HACMSTREAM);
225 DECLARE_HANDLE(HACMOBJ);
226 typedef HACMDRIVERID *PHACMDRIVERID, *LPHACMDRIVERID;
227 typedef HACMDRIVER *PHACMDRIVER, *LPHACMDRIVER;
228 typedef HACMSTREAM *PHACMSTREAM, *LPHACMSTREAM;
229 typedef HACMOBJ *PHACMOBJ, *LPHACMOBJ;
231 /***********************************************************************
232 * Callbacks
235 typedef BOOL (CALLBACK *ACMDRIVERENUMCB)(
236 HACMDRIVERID hadid, DWORD_PTR dwInstance, DWORD fdwSupport
239 typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCA)(
240 HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
243 typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCW)(
244 HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
246 #define ACMFILTERCHOOSEHOOKPROC WINELIB_NAME_AW(ACMFILTERCHOOSEHOOKPROC)
248 typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCA)(
249 HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
252 typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCW)(
253 HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
255 #define ACMFORMATCHOOSEHOOKPROC WINELIB_NAME_AW(ACMFORMATCHOOSEHOOKPROC)
257 /***********************************************************************
258 * Structures
261 typedef struct _ACMDRIVERDETAILSA
263 DWORD cbStruct;
265 FOURCC fccType;
266 FOURCC fccComp;
268 WORD wMid;
269 WORD wPid;
271 DWORD vdwACM;
272 DWORD vdwDriver;
274 DWORD fdwSupport;
275 DWORD cFormatTags;
276 DWORD cFilterTags;
278 HICON hicon;
280 CHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
281 CHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
282 CHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
283 CHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
284 CHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
285 } ACMDRIVERDETAILSA, *PACMDRIVERDETAILSA, *LPACMDRIVERDETAILSA;
287 typedef struct _ACMDRIVERDETAILSW
289 DWORD cbStruct;
291 FOURCC fccType;
292 FOURCC fccComp;
294 WORD wMid;
295 WORD wPid;
297 DWORD vdwACM;
298 DWORD vdwDriver;
300 DWORD fdwSupport;
301 DWORD cFormatTags;
302 DWORD cFilterTags;
304 HICON hicon;
306 WCHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
307 WCHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
308 WCHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
309 WCHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
310 WCHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
311 } ACMDRIVERDETAILSW, *PACMDRIVERDETAILSW, *LPACMDRIVERDETAILSW;
313 DECL_WINELIB_TYPE_AW(ACMDRIVERDETAILS)
314 DECL_WINELIB_TYPE_AW(PACMDRIVERDETAILS)
315 DECL_WINELIB_TYPE_AW(LPACMDRIVERDETAILS)
317 typedef struct _ACMFILTERCHOOSEA
319 DWORD cbStruct;
320 DWORD fdwStyle;
322 HWND hwndOwner;
324 PWAVEFILTER pwfltr;
325 DWORD cbwfltr;
327 LPCSTR pszTitle;
329 CHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
330 CHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
331 LPSTR pszName;
332 DWORD cchName;
334 DWORD fdwEnum;
335 PWAVEFILTER pwfltrEnum;
337 HINSTANCE hInstance;
338 LPCSTR pszTemplateName;
339 LPARAM lCustData;
340 ACMFILTERCHOOSEHOOKPROCA pfnHook;
341 } ACMFILTERCHOOSEA, *PACMFILTERCHOOSEA, *LPACMFILTERCHOOSEA;
343 typedef struct _ACMFILTERCHOOSEW
345 DWORD cbStruct;
346 DWORD fdwStyle;
348 HWND hwndOwner;
350 PWAVEFILTER pwfltr;
351 DWORD cbwfltr;
353 LPCWSTR pszTitle;
355 WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
356 WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
357 LPWSTR pszName;
358 DWORD cchName;
360 DWORD fdwEnum;
361 PWAVEFILTER pwfltrEnum;
363 HINSTANCE hInstance;
364 LPCWSTR pszTemplateName;
365 LPARAM lCustData;
366 ACMFILTERCHOOSEHOOKPROCW pfnHook;
367 } ACMFILTERCHOOSEW, *PACMFILTERCHOOSEW, *LPACMFILTERCHOOSEW;
369 DECL_WINELIB_TYPE_AW(ACMFILTERCHOOSE)
370 DECL_WINELIB_TYPE_AW(PACMFILTERCHOOSE)
371 DECL_WINELIB_TYPE_AW(LPACMFILTERCHOOSE)
373 typedef struct _ACMFILTERDETAILSA
375 DWORD cbStruct;
376 DWORD dwFilterIndex;
377 DWORD dwFilterTag;
378 DWORD fdwSupport;
379 PWAVEFILTER pwfltr;
380 DWORD cbwfltr;
381 CHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
382 } ACMFILTERDETAILSA, *PACMFILTERDETAILSA, *LPACMFILTERDETAILSA;
384 typedef struct _ACMFILTERDETAILSW
386 DWORD cbStruct;
387 DWORD dwFilterIndex;
388 DWORD dwFilterTag;
389 DWORD fdwSupport;
390 PWAVEFILTER pwfltr;
391 DWORD cbwfltr;
392 WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
393 } ACMFILTERDETAILSW, *PACMFILTERDETAILSW, *LPACMFILTERDETAILSW;
395 DECL_WINELIB_TYPE_AW(ACMFILTERDETAILS)
396 DECL_WINELIB_TYPE_AW(PACMFILTERDETAILS)
397 DECL_WINELIB_TYPE_AW(LPACMFILTERDETAILS)
399 typedef struct _ACMFILTERTAGDETAILSA
401 DWORD cbStruct;
402 DWORD dwFilterTagIndex;
403 DWORD dwFilterTag;
404 DWORD cbFilterSize;
405 DWORD fdwSupport;
406 DWORD cStandardFilters;
407 CHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
408 } ACMFILTERTAGDETAILSA, *PACMFILTERTAGDETAILSA, *LPACMFILTERTAGDETAILSA;
410 typedef struct _ACMFILTERTAGDETAILSW
412 DWORD cbStruct;
413 DWORD dwFilterTagIndex;
414 DWORD dwFilterTag;
415 DWORD cbFilterSize;
416 DWORD fdwSupport;
417 DWORD cStandardFilters;
418 WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
419 } ACMFILTERTAGDETAILSW, *PACMFILTERTAGDETAILSW, *LPACMFILTERTAGDETAILSW;
421 DECL_WINELIB_TYPE_AW(ACMFILTERTAGDETAILS)
422 DECL_WINELIB_TYPE_AW(PACMFILTERTAGDETAILS)
423 DECL_WINELIB_TYPE_AW(LPACMFILTERTAGDETAILS)
425 typedef struct _ACMFORMATCHOOSEA
427 DWORD cbStruct;
428 DWORD fdwStyle;
430 HWND hwndOwner;
432 PWAVEFORMATEX pwfx;
433 DWORD cbwfx;
434 LPCSTR pszTitle;
436 CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
437 CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
439 LPSTR pszName;
440 DWORD cchName;
442 DWORD fdwEnum;
443 PWAVEFORMATEX pwfxEnum;
445 HINSTANCE hInstance;
446 LPCSTR pszTemplateName;
447 LPARAM lCustData;
448 ACMFORMATCHOOSEHOOKPROCA pfnHook;
449 } ACMFORMATCHOOSEA, *PACMFORMATCHOOSEA, *LPACMFORMATCHOOSEA;
451 typedef struct _ACMFORMATCHOOSEW
453 DWORD cbStruct;
454 DWORD fdwStyle;
456 HWND hwndOwner;
458 PWAVEFORMATEX pwfx;
459 DWORD cbwfx;
460 LPCWSTR pszTitle;
462 WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
463 WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
465 LPWSTR pszName;
466 DWORD cchName;
468 DWORD fdwEnum;
469 LPWAVEFORMATEX pwfxEnum;
471 HINSTANCE hInstance;
472 LPCWSTR pszTemplateName;
473 LPARAM lCustData;
474 ACMFORMATCHOOSEHOOKPROCW pfnHook;
475 } ACMFORMATCHOOSEW, *PACMFORMATCHOOSEW, *LPACMFORMATCHOOSEW;
477 DECL_WINELIB_TYPE_AW(ACMFORMATCHOOSE)
478 DECL_WINELIB_TYPE_AW(PACMFORMATCHOOSE)
479 DECL_WINELIB_TYPE_AW(LPACMFORMATCHOOSE)
481 typedef struct _ACMFORMATDETAILSA
483 DWORD cbStruct;
484 DWORD dwFormatIndex;
485 DWORD dwFormatTag;
486 DWORD fdwSupport;
487 PWAVEFORMATEX pwfx;
488 DWORD cbwfx;
489 CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
490 } ACMFORMATDETAILSA, *PACMFORMATDETAILSA, *LPACMFORMATDETAILSA;
492 typedef struct _ACMFORMATDETAILSW
494 DWORD cbStruct;
495 DWORD dwFormatIndex;
496 DWORD dwFormatTag;
497 DWORD fdwSupport;
498 PWAVEFORMATEX pwfx;
499 DWORD cbwfx;
500 WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
501 } ACMFORMATDETAILSW, *PACMFORMATDETAILSW, *LPACMFORMATDETAILSW;
503 DECL_WINELIB_TYPE_AW(ACMFORMATDETAILS)
504 DECL_WINELIB_TYPE_AW(PACMFORMATDETAILS)
505 DECL_WINELIB_TYPE_AW(LPACMFORMATDETAILS)
507 typedef struct _ACMFORMATTAGDETAILSA
509 DWORD cbStruct;
510 DWORD dwFormatTagIndex;
511 DWORD dwFormatTag;
512 DWORD cbFormatSize;
513 DWORD fdwSupport;
514 DWORD cStandardFormats;
515 CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
516 } ACMFORMATTAGDETAILSA, *PACMFORMATTAGDETAILSA, *LPACMFORMATTAGDETAILSA;
518 typedef struct _ACMFORMATTAGDETAILSW
520 DWORD cbStruct;
521 DWORD dwFormatTagIndex;
522 DWORD dwFormatTag;
523 DWORD cbFormatSize;
524 DWORD fdwSupport;
525 DWORD cStandardFormats;
526 WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
527 } ACMFORMATTAGDETAILSW, *PACMFORMATTAGDETAILSW, *LPACMFORMATTAGDETAILSW;
529 DECL_WINELIB_TYPE_AW(ACMFORMATTAGDETAILS)
530 DECL_WINELIB_TYPE_AW(PACMFORMATTAGDETAILS)
531 DECL_WINELIB_TYPE_AW(LPACMFORMATTAGDETAILS)
533 #ifdef _WIN64
534 # define _ACMSTREAMHEADERRESERVE 15
535 #else
536 # define _ACMSTREAMHEADERRESERVE 10
537 #endif
539 typedef struct _ACMSTREAMHEADER
541 DWORD cbStruct;
542 DWORD fdwStatus;
543 DWORD_PTR dwUser;
544 LPBYTE pbSrc;
545 DWORD cbSrcLength;
546 DWORD cbSrcLengthUsed;
547 DWORD_PTR dwSrcUser;
548 LPBYTE pbDst;
549 DWORD cbDstLength;
550 DWORD cbDstLengthUsed;
551 DWORD_PTR dwDstUser;
552 DWORD dwReservedDriver[_ACMSTREAMHEADERRESERVE];
553 } ACMSTREAMHEADER, *PACMSTREAMHEADER, *LPACMSTREAMHEADER;
555 #undef _ACMSTREAMHEADERRESERVE
557 /***********************************************************************
558 * Callbacks 2
561 typedef BOOL (CALLBACK *ACMFILTERENUMCBA)(
562 HACMDRIVERID hadid, PACMFILTERDETAILSA pafd,
563 DWORD_PTR dwInstance, DWORD fdwSupport
566 typedef BOOL (CALLBACK *ACMFILTERENUMCBW)(
567 HACMDRIVERID hadid, PACMFILTERDETAILSW pafd,
568 DWORD_PTR dwInstance, DWORD fdwSupport
571 #define ACMFILTERENUMCB WINELIB_NAME_AW(ACMFILTERENUMCB)
573 typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBA)(
574 HACMDRIVERID hadid, PACMFILTERTAGDETAILSA paftd,
575 DWORD_PTR dwInstance, DWORD fdwSupport
578 typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBW)(
579 HACMDRIVERID hadid, PACMFILTERTAGDETAILSW paftd,
580 DWORD_PTR dwInstance, DWORD fdwSupport
583 #define ACMFILTERTAGENUMCB WINELIB_NAME_AW(ACMFILTERTAGENUMCB)
585 typedef BOOL (CALLBACK *ACMFORMATENUMCBA)(
586 HACMDRIVERID hadid, PACMFORMATDETAILSA pafd,
587 DWORD_PTR dwInstance, DWORD fdwSupport
590 typedef BOOL (CALLBACK *ACMFORMATENUMCBW)(
591 HACMDRIVERID hadid, PACMFORMATDETAILSW pafd,
592 DWORD_PTR dwInstance, DWORD fdwSupport
595 #define ACMFORMATENUMCB WINELIB_NAME_AW(ACMFORMATENUMCB)
597 typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA)(
598 HACMDRIVERID hadid, PACMFORMATTAGDETAILSA paftd,
599 DWORD_PTR dwInstance, DWORD fdwSupport
602 typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW)(
603 HACMDRIVERID hadid, PACMFORMATTAGDETAILSW paftd,
604 DWORD_PTR dwInstance, DWORD fdwSupport
607 #define ACMFORMATTAGENUMCB WINELIB_NAME_AW(ACMFORMATTAGENUMCB)
609 /***********************************************************************
610 * Functions - Win32
613 MMRESULT WINAPI acmDriverAddA(
614 PHACMDRIVERID phadid, HINSTANCE hinstModule,
615 LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
617 MMRESULT WINAPI acmDriverAddW(
618 PHACMDRIVERID phadid, HINSTANCE hinstModule,
619 LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
621 #define acmDriverAdd WINELIB_NAME_AW(acmDriverAdd)
623 MMRESULT WINAPI acmDriverClose(
624 HACMDRIVER had, DWORD fdwClose
626 MMRESULT WINAPI acmDriverDetailsA(
627 HACMDRIVERID hadid, PACMDRIVERDETAILSA padd, DWORD fdwDetails
629 MMRESULT WINAPI acmDriverDetailsW(
630 HACMDRIVERID hadid, PACMDRIVERDETAILSW padd, DWORD fdwDetails
632 #define acmDriverDetails WINELIB_NAME_AW(acmDriverDetails)
634 MMRESULT WINAPI acmDriverEnum(
635 ACMDRIVERENUMCB fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum
637 MMRESULT WINAPI acmDriverID(
638 HACMOBJ hao, PHACMDRIVERID phadid, DWORD fdwDriverID
640 LRESULT WINAPI acmDriverMessage(
641 HACMDRIVER had, UINT uMsg, LPARAM lParam1, LPARAM lParam2
643 MMRESULT WINAPI acmDriverOpen(
644 PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen
646 MMRESULT WINAPI acmDriverPriority(
647 HACMDRIVERID hadid, DWORD dwPriority, DWORD fdwPriority
649 MMRESULT WINAPI acmDriverRemove(
650 HACMDRIVERID hadid, DWORD fdwRemove
652 MMRESULT WINAPI acmFilterChooseA(
653 PACMFILTERCHOOSEA pafltrc
655 MMRESULT WINAPI acmFilterChooseW(
656 PACMFILTERCHOOSEW pafltrc
658 #define acmFilterChoose WINELIB_NAME_AW(acmFilterChoose)
660 MMRESULT WINAPI acmFilterDetailsA(
661 HACMDRIVER had, PACMFILTERDETAILSA pafd, DWORD fdwDetails
663 MMRESULT WINAPI acmFilterDetailsW(
664 HACMDRIVER had, PACMFILTERDETAILSW pafd, DWORD fdwDetails
666 #define acmFilterDetails WINELIB_NAME_AW(acmFilterDetails)
668 MMRESULT WINAPI acmFilterEnumA(
669 HACMDRIVER had, PACMFILTERDETAILSA pafd,
670 ACMFILTERENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum
672 MMRESULT WINAPI acmFilterEnumW(
673 HACMDRIVER had, PACMFILTERDETAILSW pafd,
674 ACMFILTERENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum
676 #define acmFilterEnum WINELIB_NAME_AW(acmFilterEnum)
678 MMRESULT WINAPI acmFilterTagDetailsA(
679 HACMDRIVER had, PACMFILTERTAGDETAILSA paftd, DWORD fdwDetails
681 MMRESULT WINAPI acmFilterTagDetailsW(
682 HACMDRIVER had, PACMFILTERTAGDETAILSW paftd, DWORD fdwDetails
684 #define acmFilterTagDetails WINELIB_NAME_AW(acmFilterTagDetails)
686 MMRESULT WINAPI acmFilterTagEnumA(
687 HACMDRIVER had, PACMFILTERTAGDETAILSA paftd,
688 ACMFILTERTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum
690 MMRESULT WINAPI acmFilterTagEnumW(
691 HACMDRIVER had, PACMFILTERTAGDETAILSW paftd,
692 ACMFILTERTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum
694 #define acmFilterTagEnum WINELIB_NAME_AW(acmFilterTagEnum)
696 MMRESULT WINAPI acmFormatChooseA(
697 PACMFORMATCHOOSEA pafmtc
699 MMRESULT WINAPI acmFormatChooseW(
700 PACMFORMATCHOOSEW pafmtc
702 #define acmFormatChoose WINELIB_NAME_AW(acmFormatChoose)
704 MMRESULT WINAPI acmFormatDetailsA(
705 HACMDRIVER had, PACMFORMATDETAILSA pafd, DWORD fdwDetails
707 MMRESULT WINAPI acmFormatDetailsW(
708 HACMDRIVER had, PACMFORMATDETAILSW pafd, DWORD fdwDetails
710 #define acmFormatDetails WINELIB_NAME_AW(acmFormatDetails)
712 MMRESULT WINAPI acmFormatEnumA(
713 HACMDRIVER had, PACMFORMATDETAILSA pafd,
714 ACMFORMATENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum
716 MMRESULT WINAPI acmFormatEnumW(
717 HACMDRIVER had, PACMFORMATDETAILSW pafd,
718 ACMFORMATENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum
720 #define acmFormatEnum WINELIB_NAME_AW(acmFormatEnum)
722 MMRESULT WINAPI acmFormatSuggest(
723 HACMDRIVER had, PWAVEFORMATEX pwfxSrc, PWAVEFORMATEX pwfxDst,
724 DWORD cbwfxDst, DWORD fdwSuggest
726 MMRESULT WINAPI acmFormatTagDetailsA(
727 HACMDRIVER had, PACMFORMATTAGDETAILSA paftd, DWORD fdwDetails
729 MMRESULT WINAPI acmFormatTagDetailsW(
730 HACMDRIVER had, PACMFORMATTAGDETAILSW paftd, DWORD fdwDetails
732 #define acmFormatTagDetails WINELIB_NAME_AW(acmFormatTagDetails)
734 MMRESULT WINAPI acmFormatTagEnumA(
735 HACMDRIVER had, PACMFORMATTAGDETAILSA paftd,
736 ACMFORMATTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum
738 MMRESULT WINAPI acmFormatTagEnumW(
739 HACMDRIVER had, PACMFORMATTAGDETAILSW paftd,
740 ACMFORMATTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum
742 #define acmFormatTagEnum WINELIB_NAME_AW(acmFormatTagEnum)
744 DWORD WINAPI acmGetVersion(void
746 MMRESULT WINAPI acmMetrics(
747 HACMOBJ hao, UINT uMetric, LPVOID pMetric
749 MMRESULT WINAPI acmStreamClose(
750 HACMSTREAM has, DWORD fdwClose
752 MMRESULT WINAPI acmStreamConvert(
753 HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwConvert
755 MMRESULT WINAPI acmStreamMessage(
756 HACMSTREAM has, UINT uMsg, LPARAM lParam1, LPARAM lParam2
758 MMRESULT WINAPI acmStreamOpen(
759 PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pwfxSrc,
760 PWAVEFORMATEX pwfxDst, PWAVEFILTER pwfltr, DWORD_PTR dwCallback,
761 DWORD_PTR dwInstance, DWORD fdwOpen
763 MMRESULT WINAPI acmStreamPrepareHeader(
764 HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwPrepare
766 MMRESULT WINAPI acmStreamReset(
767 HACMSTREAM has, DWORD fdwReset
769 MMRESULT WINAPI acmStreamSize(
770 HACMSTREAM has, DWORD cbInput,
771 LPDWORD pdwOutputBytes, DWORD fdwSize
773 MMRESULT WINAPI acmStreamUnprepareHeader(
774 HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwUnprepare
777 #include <poppack.h>
779 #ifdef __cplusplus
780 } /* extern "C" */
781 #endif /* defined(__cplusplus) */
783 #endif /* __WINE_MSACM_H */