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