1/** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6#ifndef _INC_ACM 7#define _INC_ACM 8 9#if !defined(_INC_MMREG) || (_INC_MMREG < 142) 10#ifndef RC_INVOKED 11#error MMREG.H version 142 or greater to be included first 12#endif 13#endif 14 15#if defined(UNICODE) && !defined(_UNICODE) 16#ifndef RC_INVOKED 17#warning MSACM.H: Defining _UNICODE because application defined UNICODE 18#endif 19#define _UNICODE 20#endif 21 22#include "pshpack1.h" 23 24#ifdef __cplusplus 25extern "C" { 26#endif 27 28#ifndef DRV_MAPPER_PREFERRED_INPUT_GET 29#define DRV_MAPPER_PREFERRED_INPUT_GET (DRV_USER + 0) 30#endif 31 32#ifndef DRV_MAPPER_PREFERRED_OUTPUT_GET 33#define DRV_MAPPER_PREFERRED_OUTPUT_GET (DRV_USER + 2) 34#endif 35 36#ifndef DRVM_MAPPER_STATUS 37#define DRVM_MAPPER (0x2000) 38#define DRVM_MAPPER_STATUS (DRVM_MAPPER+0) 39#endif 40 41#ifndef WIDM_MAPPER_STATUS 42#define WIDM_MAPPER_STATUS (DRVM_MAPPER_STATUS + 0) 43#define WAVEIN_MAPPER_STATUS_DEVICE 0 44#define WAVEIN_MAPPER_STATUS_MAPPED 1 45#define WAVEIN_MAPPER_STATUS_FORMAT 2 46#endif 47 48#ifndef WODM_MAPPER_STATUS 49#define WODM_MAPPER_STATUS (DRVM_MAPPER_STATUS + 0) 50#define WAVEOUT_MAPPER_STATUS_DEVICE 0 51#define WAVEOUT_MAPPER_STATUS_MAPPED 1 52#define WAVEOUT_MAPPER_STATUS_FORMAT 2 53#endif 54 55#define ACMAPI WINAPI 56 57 DECLARE_HANDLE(HACMDRIVERID); 58 59 typedef HACMDRIVERID *PHACMDRIVERID; 60 typedef HACMDRIVERID *LPHACMDRIVERID; 61 62 DECLARE_HANDLE(HACMDRIVER); 63 64 typedef HACMDRIVER *PHACMDRIVER; 65 typedef HACMDRIVER *LPHACMDRIVER; 66 67 DECLARE_HANDLE(HACMSTREAM); 68 69 typedef HACMSTREAM *PHACMSTREAM; 70 typedef HACMSTREAM *LPHACMSTREAM; 71 72 DECLARE_HANDLE(HACMOBJ); 73 74 typedef HACMOBJ *PHACMOBJ; 75 typedef HACMOBJ *LPHACMOBJ; 76 77#ifndef _MMRESULT_ 78#define _MMRESULT_ 79 typedef UINT MMRESULT; 80#endif 81 82#define ACMERR_BASE (512) 83#define ACMERR_NOTPOSSIBLE (ACMERR_BASE + 0) 84#define ACMERR_BUSY (ACMERR_BASE + 1) 85#define ACMERR_UNPREPARED (ACMERR_BASE + 2) 86#define ACMERR_CANCELED (ACMERR_BASE + 3) 87 88#define MM_ACM_OPEN (MM_STREAM_OPEN) 89#define MM_ACM_CLOSE (MM_STREAM_CLOSE) 90#define MM_ACM_DONE (MM_STREAM_DONE) 91 92 DWORD ACMAPI acmGetVersion(void); 93 MMRESULT ACMAPI acmMetrics(HACMOBJ hao,UINT uMetric,LPVOID pMetric); 94 95#define ACM_METRIC_COUNT_DRIVERS 1 96#define ACM_METRIC_COUNT_CODECS 2 97#define ACM_METRIC_COUNT_CONVERTERS 3 98#define ACM_METRIC_COUNT_FILTERS 4 99#define ACM_METRIC_COUNT_DISABLED 5 100#define ACM_METRIC_COUNT_HARDWARE 6 101#define ACM_METRIC_COUNT_LOCAL_DRIVERS 20 102#define ACM_METRIC_COUNT_LOCAL_CODECS 21 103#define ACM_METRIC_COUNT_LOCAL_CONVERTERS 22 104#define ACM_METRIC_COUNT_LOCAL_FILTERS 23 105#define ACM_METRIC_COUNT_LOCAL_DISABLED 24 106#define ACM_METRIC_HARDWARE_WAVE_INPUT 30 107#define ACM_METRIC_HARDWARE_WAVE_OUTPUT 31 108#define ACM_METRIC_MAX_SIZE_FORMAT 50 109#define ACM_METRIC_MAX_SIZE_FILTER 51 110#define ACM_METRIC_DRIVER_SUPPORT 100 111#define ACM_METRIC_DRIVER_PRIORITY 101 112 113 typedef WINBOOL (CALLBACK *ACMDRIVERENUMCB)(HACMDRIVERID hadid,DWORD_PTR dwInstance,DWORD fdwSupport); 114 115 MMRESULT ACMAPI acmDriverEnum(ACMDRIVERENUMCB fnCallback,DWORD_PTR dwInstance,DWORD fdwEnum); 116 117#define ACM_DRIVERENUMF_NOLOCAL __MSABI_LONG(0x40000000) 118#define ACM_DRIVERENUMF_DISABLED __MSABI_LONG(0x80000000) 119 120 MMRESULT ACMAPI acmDriverID(HACMOBJ hao,LPHACMDRIVERID phadid,DWORD fdwDriverID); 121 MMRESULT ACMAPI acmDriverAddA(LPHACMDRIVERID phadid,HINSTANCE hinstModule,LPARAM lParam,DWORD dwPriority,DWORD fdwAdd); 122 MMRESULT ACMAPI acmDriverAddW(LPHACMDRIVERID phadid,HINSTANCE hinstModule,LPARAM lParam,DWORD dwPriority,DWORD fdwAdd); 123#ifdef _UNICODE 124#define acmDriverAdd acmDriverAddW 125#else 126#define acmDriverAdd acmDriverAddA 127#endif 128 129#define ACM_DRIVERADDF_NAME __MSABI_LONG(0x00000001) 130#define ACM_DRIVERADDF_FUNCTION __MSABI_LONG(0x00000003) 131#define ACM_DRIVERADDF_NOTIFYHWND __MSABI_LONG(0x00000004) 132#define ACM_DRIVERADDF_TYPEMASK __MSABI_LONG(0x00000007) 133#define ACM_DRIVERADDF_LOCAL __MSABI_LONG(0x00000000) 134#define ACM_DRIVERADDF_GLOBAL __MSABI_LONG(0x00000008) 135 136 typedef LRESULT (CALLBACK *ACMDRIVERPROC)(DWORD_PTR,HACMDRIVERID,UINT,LPARAM,LPARAM); 137 typedef ACMDRIVERPROC *LPACMDRIVERPROC; 138 139 MMRESULT ACMAPI acmDriverRemove(HACMDRIVERID hadid,DWORD fdwRemove); 140 MMRESULT ACMAPI acmDriverOpen(LPHACMDRIVER phad,HACMDRIVERID hadid,DWORD fdwOpen); 141 MMRESULT ACMAPI acmDriverClose(HACMDRIVER had,DWORD fdwClose); 142 LRESULT ACMAPI acmDriverMessage(HACMDRIVER had,UINT uMsg,LPARAM lParam1,LPARAM lParam2); 143 144#define ACMDM_USER (DRV_USER + 0x0000) 145#define ACMDM_RESERVED_LOW (DRV_USER + 0x2000) 146#define ACMDM_RESERVED_HIGH (DRV_USER + 0x2FFF) 147 148#define ACMDM_BASE ACMDM_RESERVED_LOW 149 150#define ACMDM_DRIVER_ABOUT (ACMDM_BASE + 11) 151 152 MMRESULT ACMAPI acmDriverPriority(HACMDRIVERID hadid,DWORD dwPriority,DWORD fdwPriority); 153 154#define ACM_DRIVERPRIORITYF_ENABLE __MSABI_LONG(0x00000001) 155#define ACM_DRIVERPRIORITYF_DISABLE __MSABI_LONG(0x00000002) 156#define ACM_DRIVERPRIORITYF_ABLEMASK __MSABI_LONG(0x00000003) 157#define ACM_DRIVERPRIORITYF_BEGIN __MSABI_LONG(0x00010000) 158#define ACM_DRIVERPRIORITYF_END __MSABI_LONG(0x00020000) 159#define ACM_DRIVERPRIORITYF_DEFERMASK __MSABI_LONG(0x00030000) 160 161#define ACMDRIVERDETAILS_SHORTNAME_CHARS 32 162#define ACMDRIVERDETAILS_LONGNAME_CHARS 128 163#define ACMDRIVERDETAILS_COPYRIGHT_CHARS 80 164#define ACMDRIVERDETAILS_LICENSING_CHARS 128 165#define ACMDRIVERDETAILS_FEATURES_CHARS 512 166 167 typedef struct tACMDRIVERDETAILSA { 168 DWORD cbStruct; 169 FOURCC fccType; 170 FOURCC fccComp; 171 WORD wMid; 172 WORD wPid; 173 DWORD vdwACM; 174 DWORD vdwDriver; 175 DWORD fdwSupport; 176 DWORD cFormatTags; 177 DWORD cFilterTags; 178 HICON hicon; 179 char szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS]; 180 char szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS]; 181 char szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS]; 182 char szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS]; 183 char szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS]; 184 } ACMDRIVERDETAILSA,*PACMDRIVERDETAILSA,*LPACMDRIVERDETAILSA; 185 186 typedef struct tACMDRIVERDETAILSW { 187 DWORD cbStruct; 188 FOURCC fccType; 189 FOURCC fccComp; 190 WORD wMid; 191 WORD wPid; 192 DWORD vdwACM; 193 DWORD vdwDriver; 194 DWORD fdwSupport; 195 DWORD cFormatTags; 196 DWORD cFilterTags; 197 HICON hicon; 198 WCHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS]; 199 WCHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS]; 200 WCHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS]; 201 WCHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS]; 202 WCHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS]; 203 } ACMDRIVERDETAILSW,*PACMDRIVERDETAILSW,*LPACMDRIVERDETAILSW; 204#ifdef _UNICODE 205#define ACMDRIVERDETAILS ACMDRIVERDETAILSW 206#define PACMDRIVERDETAILS PACMDRIVERDETAILSW 207#define LPACMDRIVERDETAILS LPACMDRIVERDETAILSW 208#else 209#define ACMDRIVERDETAILS ACMDRIVERDETAILSA 210#define PACMDRIVERDETAILS PACMDRIVERDETAILSA 211#define LPACMDRIVERDETAILS LPACMDRIVERDETAILSA 212#endif 213 214#define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a','u','d','c') 215#define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED mmioFOURCC('\0','\0','\0','\0') 216 217#define ACMDRIVERDETAILS_SUPPORTF_CODEC __MSABI_LONG(0x00000001) 218#define ACMDRIVERDETAILS_SUPPORTF_CONVERTER __MSABI_LONG(0x00000002) 219#define ACMDRIVERDETAILS_SUPPORTF_FILTER __MSABI_LONG(0x00000004) 220#define ACMDRIVERDETAILS_SUPPORTF_HARDWARE __MSABI_LONG(0x00000008) 221#define ACMDRIVERDETAILS_SUPPORTF_ASYNC __MSABI_LONG(0x00000010) 222#define ACMDRIVERDETAILS_SUPPORTF_LOCAL __MSABI_LONG(0x40000000) 223#define ACMDRIVERDETAILS_SUPPORTF_DISABLED __MSABI_LONG(0x80000000) 224 225 MMRESULT ACMAPI acmDriverDetailsA(HACMDRIVERID hadid,LPACMDRIVERDETAILSA padd,DWORD fdwDetails); 226 MMRESULT ACMAPI acmDriverDetailsW(HACMDRIVERID hadid,LPACMDRIVERDETAILSW padd,DWORD fdwDetails); 227#ifdef _UNICODE 228#define acmDriverDetails acmDriverDetailsW 229#else 230#define acmDriverDetails acmDriverDetailsA 231#endif 232 233#define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48 234 235 typedef struct tACMFORMATTAGDETAILSA { 236 DWORD cbStruct; 237 DWORD dwFormatTagIndex; 238 DWORD dwFormatTag; 239 DWORD cbFormatSize; 240 DWORD fdwSupport; 241 DWORD cStandardFormats; 242 char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]; 243 } ACMFORMATTAGDETAILSA,*PACMFORMATTAGDETAILSA,*LPACMFORMATTAGDETAILSA; 244 245 typedef struct tACMFORMATTAGDETAILSW { 246 DWORD cbStruct; 247 DWORD dwFormatTagIndex; 248 DWORD dwFormatTag; 249 DWORD cbFormatSize; 250 DWORD fdwSupport; 251 DWORD cStandardFormats; 252 WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]; 253 } ACMFORMATTAGDETAILSW,*PACMFORMATTAGDETAILSW,*LPACMFORMATTAGDETAILSW; 254#ifdef _UNICODE 255#define ACMFORMATTAGDETAILS ACMFORMATTAGDETAILSW 256#define PACMFORMATTAGDETAILS PACMFORMATTAGDETAILSW 257#define LPACMFORMATTAGDETAILS LPACMFORMATTAGDETAILSW 258#else 259#define ACMFORMATTAGDETAILS ACMFORMATTAGDETAILSA 260#define PACMFORMATTAGDETAILS PACMFORMATTAGDETAILSA 261#define LPACMFORMATTAGDETAILS LPACMFORMATTAGDETAILSA 262#endif 263 264 MMRESULT ACMAPI acmFormatTagDetailsA(HACMDRIVER had,LPACMFORMATTAGDETAILSA paftd,DWORD fdwDetails); 265 MMRESULT ACMAPI acmFormatTagDetailsW(HACMDRIVER had,LPACMFORMATTAGDETAILSW paftd,DWORD fdwDetails); 266#ifdef _UNICODE 267#define acmFormatTagDetails acmFormatTagDetailsW 268#else 269#define acmFormatTagDetails acmFormatTagDetailsA 270#endif 271 272#define ACM_FORMATTAGDETAILSF_INDEX __MSABI_LONG(0x00000000) 273#define ACM_FORMATTAGDETAILSF_FORMATTAG __MSABI_LONG(0x00000001) 274#define ACM_FORMATTAGDETAILSF_LARGESTSIZE __MSABI_LONG(0x00000002) 275#define ACM_FORMATTAGDETAILSF_QUERYMASK __MSABI_LONG(0x0000000F) 276 277 typedef WINBOOL (CALLBACK *ACMFORMATTAGENUMCBA)(HACMDRIVERID hadid,LPACMFORMATTAGDETAILSA paftd,DWORD_PTR dwInstance,DWORD fdwSupport); 278 typedef WINBOOL (CALLBACK *ACMFORMATTAGENUMCBW)(HACMDRIVERID hadid,LPACMFORMATTAGDETAILSW paftd,DWORD_PTR dwInstance,DWORD fdwSupport); 279 280 MMRESULT ACMAPI acmFormatTagEnumA(HACMDRIVER had,LPACMFORMATTAGDETAILSA paftd,ACMFORMATTAGENUMCBA fnCallback,DWORD_PTR dwInstance,DWORD fdwEnum); 281 MMRESULT ACMAPI acmFormatTagEnumW(HACMDRIVER had,LPACMFORMATTAGDETAILSW paftd,ACMFORMATTAGENUMCBW fnCallback,DWORD_PTR dwInstance,DWORD fdwEnum); 282#ifdef _UNICODE 283#define ACMFORMATTAGENUMCB ACMFORMATTAGENUMCBW 284#define acmFormatTagEnum acmFormatTagEnumW 285#else 286#define ACMFORMATTAGENUMCB ACMFORMATTAGENUMCBA 287#define acmFormatTagEnum acmFormatTagEnumA 288#endif 289 290#define ACMFORMATDETAILS_FORMAT_CHARS 128 291 292 typedef struct tACMFORMATDETAILSA { 293 DWORD cbStruct; 294 DWORD dwFormatIndex; 295 DWORD dwFormatTag; 296 DWORD fdwSupport; 297 LPWAVEFORMATEX pwfx; 298 DWORD cbwfx; 299 char szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; 300 } ACMFORMATDETAILSA,*PACMFORMATDETAILSA,*LPACMFORMATDETAILSA; 301 302 typedef struct tACMFORMATDETAILSW { 303 DWORD cbStruct; 304 DWORD dwFormatIndex; 305 DWORD dwFormatTag; 306 DWORD fdwSupport; 307 LPWAVEFORMATEX pwfx; 308 DWORD cbwfx; 309 WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; 310 } ACMFORMATDETAILSW,*PACMFORMATDETAILSW,*LPACMFORMATDETAILSW; 311#ifdef _UNICODE 312#define ACMFORMATDETAILS ACMFORMATDETAILSW 313#define PACMFORMATDETAILS PACMFORMATDETAILSW 314#define LPACMFORMATDETAILS LPACMFORMATDETAILSW 315#else 316#define ACMFORMATDETAILS ACMFORMATDETAILSA 317#define PACMFORMATDETAILS PACMFORMATDETAILSA 318#define LPACMFORMATDETAILS LPACMFORMATDETAILSA 319#endif 320 321 MMRESULT ACMAPI acmFormatDetailsA(HACMDRIVER had,LPACMFORMATDETAILSA pafd,DWORD fdwDetails); 322 MMRESULT ACMAPI acmFormatDetailsW(HACMDRIVER had,LPACMFORMATDETAILSW pafd,DWORD fdwDetails); 323#ifdef _UNICODE 324#define acmFormatDetails acmFormatDetailsW 325#else 326#define acmFormatDetails acmFormatDetailsA 327#endif 328 329#define ACM_FORMATDETAILSF_INDEX __MSABI_LONG(0x00000000) 330#define ACM_FORMATDETAILSF_FORMAT __MSABI_LONG(0x00000001) 331#define ACM_FORMATDETAILSF_QUERYMASK __MSABI_LONG(0x0000000F) 332 333 typedef WINBOOL (CALLBACK *ACMFORMATENUMCBA)(HACMDRIVERID hadid,LPACMFORMATDETAILSA pafd,DWORD_PTR dwInstance,DWORD fdwSupport); 334 typedef WINBOOL (CALLBACK *ACMFORMATENUMCBW)(HACMDRIVERID hadid,LPACMFORMATDETAILSW pafd,DWORD_PTR dwInstance,DWORD fdwSupport); 335 336 MMRESULT ACMAPI acmFormatEnumA(HACMDRIVER had,LPACMFORMATDETAILSA pafd,ACMFORMATENUMCBA fnCallback,DWORD_PTR dwInstance,DWORD fdwEnum); 337 MMRESULT ACMAPI acmFormatEnumW(HACMDRIVER had,LPACMFORMATDETAILSW pafd,ACMFORMATENUMCBW fnCallback,DWORD_PTR dwInstance,DWORD fdwEnum); 338#ifdef _UNICODE 339#define ACMFORMATENUMCB ACMFORMATENUMCBW 340#define acmFormatEnum acmFormatEnumW 341#else 342#define ACMFORMATENUMCB ACMFORMATENUMCBA 343#define acmFormatEnum acmFormatEnumA 344#endif 345 346#define ACM_FORMATENUMF_WFORMATTAG __MSABI_LONG(0x00010000) 347#define ACM_FORMATENUMF_NCHANNELS __MSABI_LONG(0x00020000) 348#define ACM_FORMATENUMF_NSAMPLESPERSEC __MSABI_LONG(0x00040000) 349#define ACM_FORMATENUMF_WBITSPERSAMPLE __MSABI_LONG(0x00080000) 350#define ACM_FORMATENUMF_CONVERT __MSABI_LONG(0x00100000) 351#define ACM_FORMATENUMF_SUGGEST __MSABI_LONG(0x00200000) 352#define ACM_FORMATENUMF_HARDWARE __MSABI_LONG(0x00400000) 353#define ACM_FORMATENUMF_INPUT __MSABI_LONG(0x00800000) 354#define ACM_FORMATENUMF_OUTPUT __MSABI_LONG(0x01000000) 355 356 MMRESULT ACMAPI acmFormatSuggest 357 (HACMDRIVER had,LPWAVEFORMATEX pwfxSrc,LPWAVEFORMATEX pwfxDst,DWORD cbwfxDst,DWORD fdwSuggest); 358 359#define ACM_FORMATSUGGESTF_WFORMATTAG __MSABI_LONG(0x00010000) 360#define ACM_FORMATSUGGESTF_NCHANNELS __MSABI_LONG(0x00020000) 361#define ACM_FORMATSUGGESTF_NSAMPLESPERSEC __MSABI_LONG(0x00040000) 362#define ACM_FORMATSUGGESTF_WBITSPERSAMPLE __MSABI_LONG(0x00080000) 363 364#define ACM_FORMATSUGGESTF_TYPEMASK __MSABI_LONG(0x00FF0000) 365 366#define ACMHELPMSGSTRINGA "acmchoose_help" 367#define ACMHELPMSGSTRINGW L"acmchoose_help" 368#define ACMHELPMSGCONTEXTMENUA "acmchoose_contextmenu" 369#define ACMHELPMSGCONTEXTMENUW L"acmchoose_contextmenu" 370#define ACMHELPMSGCONTEXTHELPA "acmchoose_contexthelp" 371#define ACMHELPMSGCONTEXTHELPW L"acmchoose_contexthelp" 372#ifdef _UNICODE 373#define ACMHELPMSGSTRING ACMHELPMSGSTRINGW 374#define ACMHELPMSGCONTEXTMENU ACMHELPMSGCONTEXTMENUW 375#define ACMHELPMSGCONTEXTHELP ACMHELPMSGCONTEXTHELPW 376#else 377#define ACMHELPMSGSTRING ACMHELPMSGSTRINGA 378#define ACMHELPMSGCONTEXTMENU ACMHELPMSGCONTEXTMENUA 379#define ACMHELPMSGCONTEXTHELP ACMHELPMSGCONTEXTHELPA 380#endif 381 382#define MM_ACM_FORMATCHOOSE (0x8000) 383 384#define FORMATCHOOSE_MESSAGE 0 385#define FORMATCHOOSE_FORMATTAG_VERIFY (FORMATCHOOSE_MESSAGE+0) 386#define FORMATCHOOSE_FORMAT_VERIFY (FORMATCHOOSE_MESSAGE+1) 387#define FORMATCHOOSE_CUSTOM_VERIFY (FORMATCHOOSE_MESSAGE+2) 388 389 typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCA)(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); 390 typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCW)(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); 391#ifdef _UNICODE 392#define ACMFORMATCHOOSEHOOKPROC ACMFORMATCHOOSEHOOKPROCW 393#else 394#define ACMFORMATCHOOSEHOOKPROC ACMFORMATCHOOSEHOOKPROCA 395#endif 396 397 typedef struct tACMFORMATCHOOSEA { 398 DWORD cbStruct; 399 DWORD fdwStyle; 400 HWND hwndOwner; 401 LPWAVEFORMATEX pwfx; 402 DWORD cbwfx; 403 LPCSTR pszTitle; 404 char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]; 405 char szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; 406 LPSTR pszName; 407 DWORD cchName; 408 DWORD fdwEnum; 409 LPWAVEFORMATEX pwfxEnum; 410 HINSTANCE hInstance; 411 LPCSTR pszTemplateName; 412 LPARAM lCustData; 413 ACMFORMATCHOOSEHOOKPROCA pfnHook; 414 } ACMFORMATCHOOSEA,*PACMFORMATCHOOSEA,*LPACMFORMATCHOOSEA; 415 416 typedef struct tACMFORMATCHOOSEW { 417 DWORD cbStruct; 418 DWORD fdwStyle; 419 HWND hwndOwner; 420 LPWAVEFORMATEX pwfx; 421 DWORD cbwfx; 422 LPCWSTR pszTitle; 423 WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]; 424 WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; 425 LPWSTR pszName; 426 DWORD cchName; 427 DWORD fdwEnum; 428 LPWAVEFORMATEX pwfxEnum; 429 HINSTANCE hInstance; 430 LPCWSTR pszTemplateName; 431 LPARAM lCustData; 432 ACMFORMATCHOOSEHOOKPROCW pfnHook; 433 } ACMFORMATCHOOSEW,*PACMFORMATCHOOSEW,*LPACMFORMATCHOOSEW; 434#ifdef _UNICODE 435#define ACMFORMATCHOOSE ACMFORMATCHOOSEW 436#define PACMFORMATCHOOSE PACMFORMATCHOOSEW 437#define LPACMFORMATCHOOSE LPACMFORMATCHOOSEW 438#else 439#define ACMFORMATCHOOSE ACMFORMATCHOOSEA 440#define PACMFORMATCHOOSE PACMFORMATCHOOSEA 441#define LPACMFORMATCHOOSE LPACMFORMATCHOOSEA 442#endif 443 444#define ACMFORMATCHOOSE_STYLEF_SHOWHELP __MSABI_LONG(0x00000004) 445#define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK __MSABI_LONG(0x00000008) 446#define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE __MSABI_LONG(0x00000010) 447#define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE __MSABI_LONG(0x00000020) 448#define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT __MSABI_LONG(0x00000040) 449#define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP __MSABI_LONG(0x00000080) 450 451 MMRESULT ACMAPI acmFormatChooseA(LPACMFORMATCHOOSEA pafmtc); 452 MMRESULT ACMAPI acmFormatChooseW(LPACMFORMATCHOOSEW pafmtc); 453#ifdef _UNICODE 454#define acmFormatChoose acmFormatChooseW 455#else 456#define acmFormatChoose acmFormatChooseA 457#endif 458 459#define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48 460 461 typedef struct tACMFILTERTAGDETAILSA { 462 DWORD cbStruct; 463 DWORD dwFilterTagIndex; 464 DWORD dwFilterTag; 465 DWORD cbFilterSize; 466 DWORD fdwSupport; 467 DWORD cStandardFilters; 468 char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS]; 469 } ACMFILTERTAGDETAILSA,*PACMFILTERTAGDETAILSA,*LPACMFILTERTAGDETAILSA; 470 471 typedef struct tACMFILTERTAGDETAILSW { 472 DWORD cbStruct; 473 DWORD dwFilterTagIndex; 474 DWORD dwFilterTag; 475 DWORD cbFilterSize; 476 DWORD fdwSupport; 477 DWORD cStandardFilters; 478 WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS]; 479 } ACMFILTERTAGDETAILSW,*PACMFILTERTAGDETAILSW,*LPACMFILTERTAGDETAILSW; 480#ifdef _UNICODE 481#define ACMFILTERTAGDETAILS ACMFILTERTAGDETAILSW 482#define PACMFILTERTAGDETAILS PACMFILTERTAGDETAILSW 483#define LPACMFILTERTAGDETAILS LPACMFILTERTAGDETAILSW 484#else 485#define ACMFILTERTAGDETAILS ACMFILTERTAGDETAILSA 486#define PACMFILTERTAGDETAILS PACMFILTERTAGDETAILSA 487#define LPACMFILTERTAGDETAILS LPACMFILTERTAGDETAILSA 488#endif 489 490 MMRESULT ACMAPI acmFilterTagDetailsA(HACMDRIVER had,LPACMFILTERTAGDETAILSA paftd,DWORD fdwDetails); 491 MMRESULT ACMAPI acmFilterTagDetailsW(HACMDRIVER had,LPACMFILTERTAGDETAILSW paftd,DWORD fdwDetails); 492#ifdef _UNICODE 493#define acmFilterTagDetails acmFilterTagDetailsW 494#else 495#define acmFilterTagDetails acmFilterTagDetailsA 496#endif 497 498#define ACM_FILTERTAGDETAILSF_INDEX __MSABI_LONG(0x00000000) 499#define ACM_FILTERTAGDETAILSF_FILTERTAG __MSABI_LONG(0x00000001) 500#define ACM_FILTERTAGDETAILSF_LARGESTSIZE __MSABI_LONG(0x00000002) 501#define ACM_FILTERTAGDETAILSF_QUERYMASK __MSABI_LONG(0x0000000F) 502 503 typedef WINBOOL (CALLBACK *ACMFILTERTAGENUMCBA)(HACMDRIVERID hadid,LPACMFILTERTAGDETAILSA paftd,DWORD_PTR dwInstance,DWORD fdwSupport); 504 typedef WINBOOL (CALLBACK *ACMFILTERTAGENUMCBW)(HACMDRIVERID hadid,LPACMFILTERTAGDETAILSW paftd,DWORD_PTR dwInstance,DWORD fdwSupport); 505 506 MMRESULT ACMAPI acmFilterTagEnumA(HACMDRIVER had,LPACMFILTERTAGDETAILSA paftd,ACMFILTERTAGENUMCBA fnCallback,DWORD_PTR dwInstance,DWORD fdwEnum); 507 MMRESULT ACMAPI acmFilterTagEnumW(HACMDRIVER had,LPACMFILTERTAGDETAILSW paftd,ACMFILTERTAGENUMCBW fnCallback,DWORD_PTR dwInstance,DWORD fdwEnum); 508#ifdef _UNICODE 509#define ACMFILTERTAGENUMCB ACMFILTERTAGENUMCBW 510#define acmFilterTagEnum acmFilterTagEnumW 511#else 512#define ACMFILTERTAGENUMCB ACMFILTERTAGENUMCBA 513#define acmFilterTagEnum acmFilterTagEnumA 514#endif 515 516#define ACMFILTERDETAILS_FILTER_CHARS 128 517 518 typedef struct tACMFILTERDETAILSA { 519 DWORD cbStruct; 520 DWORD dwFilterIndex; 521 DWORD dwFilterTag; 522 DWORD fdwSupport; 523 LPWAVEFILTER pwfltr; 524 DWORD cbwfltr; 525 char szFilter[ACMFILTERDETAILS_FILTER_CHARS]; 526 } ACMFILTERDETAILSA,*PACMFILTERDETAILSA,*LPACMFILTERDETAILSA; 527 528 typedef struct tACMFILTERDETAILSW { 529 DWORD cbStruct; 530 DWORD dwFilterIndex; 531 DWORD dwFilterTag; 532 DWORD fdwSupport; 533 LPWAVEFILTER pwfltr; 534 DWORD cbwfltr; 535 WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS]; 536 } ACMFILTERDETAILSW,*PACMFILTERDETAILSW,*LPACMFILTERDETAILSW; 537#ifdef _UNICODE 538#define ACMFILTERDETAILS ACMFILTERDETAILSW 539#define PACMFILTERDETAILS PACMFILTERDETAILSW 540#define LPACMFILTERDETAILS LPACMFILTERDETAILSW 541#else 542#define ACMFILTERDETAILS ACMFILTERDETAILSA 543#define PACMFILTERDETAILS PACMFILTERDETAILSA 544#define LPACMFILTERDETAILS LPACMFILTERDETAILSA 545#endif 546 547 MMRESULT ACMAPI acmFilterDetailsA(HACMDRIVER had,LPACMFILTERDETAILSA pafd,DWORD fdwDetails); 548 MMRESULT ACMAPI acmFilterDetailsW(HACMDRIVER had,LPACMFILTERDETAILSW pafd,DWORD fdwDetails); 549#ifdef _UNICODE 550#define acmFilterDetails acmFilterDetailsW 551#else 552#define acmFilterDetails acmFilterDetailsA 553#endif 554 555#define ACM_FILTERDETAILSF_INDEX __MSABI_LONG(0x00000000) 556#define ACM_FILTERDETAILSF_FILTER __MSABI_LONG(0x00000001) 557#define ACM_FILTERDETAILSF_QUERYMASK __MSABI_LONG(0x0000000F) 558 559 typedef WINBOOL (CALLBACK *ACMFILTERENUMCBA)(HACMDRIVERID hadid,LPACMFILTERDETAILSA pafd,DWORD_PTR dwInstance,DWORD fdwSupport); 560 typedef WINBOOL (CALLBACK *ACMFILTERENUMCBW)(HACMDRIVERID hadid,LPACMFILTERDETAILSW pafd,DWORD_PTR dwInstance,DWORD fdwSupport); 561 562 MMRESULT ACMAPI acmFilterEnumA(HACMDRIVER had,LPACMFILTERDETAILSA pafd,ACMFILTERENUMCBA fnCallback,DWORD_PTR dwInstance,DWORD fdwEnum); 563 MMRESULT ACMAPI acmFilterEnumW(HACMDRIVER had,LPACMFILTERDETAILSW pafd,ACMFILTERENUMCBW fnCallback,DWORD_PTR dwInstance,DWORD fdwEnum); 564#ifdef _UNICODE 565#define ACMFILTERENUMCB ACMFILTERENUMCBW 566#define acmFilterEnum acmFilterEnumW 567#else 568#define ACMFILTERENUMCB ACMFILTERENUMCBA 569#define acmFilterEnum acmFilterEnumA 570#endif 571 572#define ACM_FILTERENUMF_DWFILTERTAG __MSABI_LONG(0x00010000) 573 574#define MM_ACM_FILTERCHOOSE (0x8000) 575 576#define FILTERCHOOSE_MESSAGE 0 577#define FILTERCHOOSE_FILTERTAG_VERIFY (FILTERCHOOSE_MESSAGE+0) 578#define FILTERCHOOSE_FILTER_VERIFY (FILTERCHOOSE_MESSAGE+1) 579#define FILTERCHOOSE_CUSTOM_VERIFY (FILTERCHOOSE_MESSAGE+2) 580 581 typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCA)(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); 582 typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCW)(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); 583#ifdef _UNICODE 584#define ACMFILTERCHOOSEHOOKPROC ACMFILTERCHOOSEHOOKPROCW 585#else 586#define ACMFILTERCHOOSEHOOKPROC ACMFILTERCHOOSEHOOKPROCA 587#endif 588 589 typedef struct tACMFILTERCHOOSEA { 590 DWORD cbStruct; 591 DWORD fdwStyle; 592 HWND hwndOwner; 593 LPWAVEFILTER pwfltr; 594 DWORD cbwfltr; 595 LPCSTR pszTitle; 596 char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS]; 597 char szFilter[ACMFILTERDETAILS_FILTER_CHARS]; 598 LPSTR pszName; 599 DWORD cchName; 600 DWORD fdwEnum; 601 LPWAVEFILTER pwfltrEnum; 602 HINSTANCE hInstance; 603 LPCSTR pszTemplateName; 604 LPARAM lCustData; 605 ACMFILTERCHOOSEHOOKPROCA pfnHook; 606 } ACMFILTERCHOOSEA,*PACMFILTERCHOOSEA,*LPACMFILTERCHOOSEA; 607 608 typedef struct tACMFILTERCHOOSEW { 609 DWORD cbStruct; 610 DWORD fdwStyle; 611 HWND hwndOwner; 612 LPWAVEFILTER pwfltr; 613 DWORD cbwfltr; 614 LPCWSTR pszTitle; 615 WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS]; 616 WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS]; 617 LPWSTR pszName; 618 DWORD cchName; 619 DWORD fdwEnum; 620 LPWAVEFILTER pwfltrEnum; 621 HINSTANCE hInstance; 622 LPCWSTR pszTemplateName; 623 LPARAM lCustData; 624 ACMFILTERCHOOSEHOOKPROCW pfnHook; 625 } ACMFILTERCHOOSEW,*PACMFILTERCHOOSEW,*LPACMFILTERCHOOSEW; 626#ifdef _UNICODE 627#define ACMFILTERCHOOSE ACMFILTERCHOOSEW 628#define PACMFILTERCHOOSE PACMFILTERCHOOSEW 629#define LPACMFILTERCHOOSE LPACMFILTERCHOOSEW 630#else 631#define ACMFILTERCHOOSE ACMFILTERCHOOSEA 632#define PACMFILTERCHOOSE PACMFILTERCHOOSEA 633#define LPACMFILTERCHOOSE LPACMFILTERCHOOSEA 634#endif 635 636#define ACMFILTERCHOOSE_STYLEF_SHOWHELP __MSABI_LONG(0x00000004) 637#define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK __MSABI_LONG(0x00000008) 638#define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE __MSABI_LONG(0x00000010) 639#define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE __MSABI_LONG(0x00000020) 640#define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT __MSABI_LONG(0x00000040) 641#define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP __MSABI_LONG(0x00000080) 642 643 MMRESULT ACMAPI acmFilterChooseA(LPACMFILTERCHOOSEA pafltrc); 644 MMRESULT ACMAPI acmFilterChooseW(LPACMFILTERCHOOSEW pafltrc); 645#ifdef _UNICODE 646#define acmFilterChoose acmFilterChooseW 647#else 648#define acmFilterChoose acmFilterChooseA 649#endif 650 651#ifdef _WIN64 652#define _DRVRESERVED 15 653#else 654#define _DRVRESERVED 10 655#endif 656 657 typedef struct tACMSTREAMHEADER { 658 DWORD cbStruct; 659 DWORD fdwStatus; 660 DWORD_PTR dwUser; 661 LPBYTE pbSrc; 662 DWORD cbSrcLength; 663 DWORD cbSrcLengthUsed; 664 DWORD_PTR dwSrcUser; 665 LPBYTE pbDst; 666 DWORD cbDstLength; 667 DWORD cbDstLengthUsed; 668 DWORD_PTR dwDstUser; 669 DWORD dwReservedDriver[_DRVRESERVED]; 670 } ACMSTREAMHEADER,*PACMSTREAMHEADER,*LPACMSTREAMHEADER; 671 672#define ACMSTREAMHEADER_STATUSF_DONE __MSABI_LONG(0x00010000) 673#define ACMSTREAMHEADER_STATUSF_PREPARED __MSABI_LONG(0x00020000) 674#define ACMSTREAMHEADER_STATUSF_INQUEUE __MSABI_LONG(0x00100000) 675 676 MMRESULT ACMAPI acmStreamOpen(LPHACMSTREAM phas,HACMDRIVER had,LPWAVEFORMATEX pwfxSrc,LPWAVEFORMATEX pwfxDst,LPWAVEFILTER pwfltr,DWORD_PTR dwCallback,DWORD_PTR dwInstance,DWORD fdwOpen); 677 678#define ACM_STREAMOPENF_QUERY 0x00000001 679#define ACM_STREAMOPENF_ASYNC 0x00000002 680#define ACM_STREAMOPENF_NONREALTIME 0x00000004 681 682 MMRESULT ACMAPI acmStreamClose 683 (HACMSTREAM has,DWORD fdwClose); 684 685 MMRESULT ACMAPI acmStreamSize(HACMSTREAM has,DWORD cbInput,LPDWORD pdwOutputBytes,DWORD fdwSize); 686 687#define ACM_STREAMSIZEF_SOURCE __MSABI_LONG(0x00000000) 688#define ACM_STREAMSIZEF_DESTINATION __MSABI_LONG(0x00000001) 689#define ACM_STREAMSIZEF_QUERYMASK __MSABI_LONG(0x0000000F) 690 691 MMRESULT ACMAPI acmStreamReset(HACMSTREAM has,DWORD fdwReset); 692 MMRESULT ACMAPI acmStreamMessage(HACMSTREAM has,UINT uMsg,LPARAM lParam1,LPARAM lParam2); 693 MMRESULT ACMAPI acmStreamConvert(HACMSTREAM has,LPACMSTREAMHEADER pash,DWORD fdwConvert); 694 695#define ACM_STREAMCONVERTF_BLOCKALIGN 0x00000004 696#define ACM_STREAMCONVERTF_START 0x00000010 697#define ACM_STREAMCONVERTF_END 0x00000020 698 699 MMRESULT ACMAPI acmStreamPrepareHeader(HACMSTREAM has,LPACMSTREAMHEADER pash,DWORD fdwPrepare); 700 MMRESULT ACMAPI acmStreamUnprepareHeader(HACMSTREAM has,LPACMSTREAMHEADER pash,DWORD fdwUnprepare); 701 702#include "poppack.h" 703 704#ifdef __cplusplus 705} 706#endif 707#endif 708