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 */ 793