Home | History | Annotate | Download | only in include
      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
     25 extern "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