home *** CD-ROM | disk | FTP | other *** search
/ Total Destruction / Total_Destruction.iso / addons / Lccwin32.exe / Lccwin32 / lccpub / include / msacm.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-27  |  21.9 KB  |  596 lines

  1. #ifndef _GNU_H_WIN32Headers
  2. #include <win.h>
  3. #endif
  4. #ifndef _LCC_ACM
  5. #define _LCC_ACM
  6. #if !defined(_LCC_MMREG) 
  7. #ifndef RC_INVOKED
  8. #error MMREG.H version 142 or greater must be included first
  9. #endif
  10. #endif
  11.  
  12. #ifndef RC_INVOKED
  13. #pragma pack(1) /* Assume byte packing throughout */
  14. #endif
  15. #ifndef DRV_MAPPER_PREFERRED_INPUT_GET
  16. #define DRV_MAPPER_PREFERRED_INPUT_GET (DRV_USER+0)
  17. #endif
  18. #ifndef DRV_MAPPER_PREFERRED_OUTPUT_GET
  19. #define DRV_MAPPER_PREFERRED_OUTPUT_GET (DRV_USER+2)
  20. #endif
  21. #ifndef DRVM_MAPPER_STATUS
  22. #define DRVM_MAPPER_STATUS (0x2000)
  23. #endif
  24. #ifndef WIDM_MAPPER_STATUS
  25. #define WIDM_MAPPER_STATUS (DRVM_MAPPER_STATUS + 0)
  26. #define WAVEIN_MAPPER_STATUS_DEVICE 0
  27. #define WAVEIN_MAPPER_STATUS_MAPPED 1
  28. #define WAVEIN_MAPPER_STATUS_FORMAT 2
  29. #endif
  30. #ifndef WODM_MAPPER_STATUS
  31. #define WODM_MAPPER_STATUS (DRVM_MAPPER_STATUS + 0)
  32. #define WAVEOUT_MAPPER_STATUS_DEVICE 0
  33. #define WAVEOUT_MAPPER_STATUS_MAPPED 1
  34. #define WAVEOUT_MAPPER_STATUS_FORMAT 2
  35. #endif
  36. #define ACMAPI WINAPI
  37. DECLARE_HANDLE(HACMDRIVERID);
  38. typedef HACMDRIVERID *PHACMDRIVERID;
  39. typedef HACMDRIVERID *LPHACMDRIVERID;
  40. DECLARE_HANDLE(HACMDRIVER);
  41. typedef HACMDRIVER *PHACMDRIVER;
  42. typedef HACMDRIVER *LPHACMDRIVER;
  43. DECLARE_HANDLE(HACMSTREAM);
  44. typedef HACMSTREAM *PHACMSTREAM;
  45. typedef HACMSTREAM *LPHACMSTREAM;
  46. DECLARE_HANDLE(HACMOBJ);
  47. typedef HACMOBJ *PHACMOBJ;
  48. typedef HACMOBJ *LPHACMOBJ;
  49. #ifndef _MMRESULT_DEFINED
  50. #define _MMRESULT_DEFINED
  51. typedef UINT MMRESULT;
  52. #endif
  53. #define ACMERR_BASE (512)
  54. #define ACMERR_NOTPOSSIBLE (ACMERR_BASE + 0)
  55. #define ACMERR_BUSY (ACMERR_BASE + 1)
  56. #define ACMERR_UNPREPARED (ACMERR_BASE + 2)
  57. #define ACMERR_CANCELED (ACMERR_BASE + 3)
  58. #define MM_ACM_OPEN (MM_STREAM_OPEN)
  59. #define MM_ACM_CLOSE (MM_STREAM_CLOSE)
  60. #define MM_ACM_DONE (MM_STREAM_DONE)
  61. DWORD ACMAPI acmGetVersion(void);
  62. MMRESULT ACMAPI acmMetrics(HACMOBJ,UINT,LPVOID);
  63. #define ACM_METRIC_COUNT_DRIVERS 1
  64. #define ACM_METRIC_COUNT_CODECS 2
  65. #define ACM_METRIC_COUNT_CONVERTERS 3
  66. #define ACM_METRIC_COUNT_FILTERS 4
  67. #define ACM_METRIC_COUNT_DISABLED 5
  68. #define ACM_METRIC_COUNT_HARDWARE 6
  69. #define ACM_METRIC_COUNT_LOCAL_DRIVERS 20
  70. #define ACM_METRIC_COUNT_LOCAL_CODECS 21
  71. #define ACM_METRIC_COUNT_LOCAL_CONVERTERS 22
  72. #define ACM_METRIC_COUNT_LOCAL_FILTERS 23
  73. #define ACM_METRIC_COUNT_LOCAL_DISABLED 24
  74. #define ACM_METRIC_HARDWARE_WAVE_INPUT 30
  75. #define ACM_METRIC_HARDWARE_WAVE_OUTPUT 31
  76. #define ACM_METRIC_MAX_SIZE_FORMAT 50
  77. #define ACM_METRIC_MAX_SIZE_FILTER 51
  78. #define ACM_METRIC_DRIVER_SUPPORT 100
  79. #define ACM_METRIC_DRIVER_PRIORITY 101
  80. typedef BOOL (CALLBACK *ACMDRIVERENUMCB)(HACMDRIVERID,DWORD,DWORD);
  81. MMRESULT ACMAPI acmDriverEnum(ACMDRIVERENUMCB,DWORD,DWORD);
  82. #define ACM_DRIVERENUMF_NOLOCAL 0x40000000L
  83. #define ACM_DRIVERENUMF_DISABLED 0x80000000L
  84. MMRESULT ACMAPI acmDriverID(HACMOBJ,LPHACMDRIVERID,DWORD);
  85. MMRESULT ACMAPI acmDriverAddA(LPHACMDRIVERID,HINSTANCE,LPARAM,DWORD,DWORD);
  86. MMRESULT ACMAPI acmDriverAddW(LPHACMDRIVERID,HINSTANCE,LPARAM,DWORD,DWORD);
  87. #ifdef UNICODE
  88. #define acmDriverAdd acmDriverAddW
  89. #else
  90. #define acmDriverAdd acmDriverAddA
  91. #endif
  92. #define ACM_DRIVERADDF_FUNCTION 3
  93. #define ACM_DRIVERADDF_NOTIFYHWND 4
  94. #define ACM_DRIVERADDF_TYPEMASK 7
  95. #define ACM_DRIVERADDF_LOCAL 0
  96. #define ACM_DRIVERADDF_GLOBAL 8
  97. typedef LRESULT(CALLBACK *ACMDRIVERPROC)(DWORD,HACMDRIVERID,UINT,LPARAM,LPARAM);
  98. typedef ACMDRIVERPROC *LPACMDRIVERPROC;
  99. MMRESULT ACMAPI acmDriverRemove(HACMDRIVERID,DWORD);
  100. MMRESULT ACMAPI acmDriverOpen(LPHACMDRIVER,HACMDRIVERID,DWORD);
  101. MMRESULT ACMAPI acmDriverClose(HACMDRIVER,DWORD);
  102. LRESULT ACMAPI acmDriverMessage(HACMDRIVER,UINT,LPARAM,LPARAM);
  103. #define ACMDM_USER (DRV_USER + 0x0000)
  104. #define ACMDM_RESERVED_LOW (DRV_USER + 0x2000)
  105. #define ACMDM_RESERVED_HIGH (DRV_USER + 0x2FFF)
  106. #define ACMDM_BASE ACMDM_RESERVED_LOW
  107. #define ACMDM_DRIVER_ABOUT (ACMDM_BASE + 11)
  108. MMRESULT ACMAPI acmDriverPriority(HACMDRIVERID,DWORD,DWORD);
  109. #define ACM_DRIVERPRIORITYF_ENABLE 1
  110. #define ACM_DRIVERPRIORITYF_DISABLE 2
  111. #define ACM_DRIVERPRIORITYF_ABLEMASK 3
  112. #define ACM_DRIVERPRIORITYF_BEGIN 0x10000L
  113. #define ACM_DRIVERPRIORITYF_END 0x20000L
  114. #define ACM_DRIVERPRIORITYF_DEFERMASK 0x30000L
  115. #define ACMDRIVERDETAILS_SHORTNAME_CHARS 32
  116. #define ACMDRIVERDETAILS_LONGNAME_CHARS 128
  117. #define ACMDRIVERDETAILS_COPYRIGHT_CHARS 80
  118. #define ACMDRIVERDETAILS_LICENSING_CHARS 128
  119. #define ACMDRIVERDETAILS_FEATURES_CHARS 512
  120. typedef struct tACMDRIVERDETAILSA {
  121.     DWORD cbStruct;
  122.     FOURCC fccType;
  123.     FOURCC fccComp;
  124.     WORD wMid;
  125.     WORD wPid;
  126.     DWORD vdwACM;
  127.     DWORD vdwDriver;
  128.     DWORD fdwSupport;
  129.     DWORD cFormatTags;
  130.     DWORD cFilterTags;
  131.     HICON hicon;
  132.     char szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
  133.     char szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
  134.     char szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
  135.     char szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
  136.     char szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
  137. } ACMDRIVERDETAILSA, *PACMDRIVERDETAILSA, *LPACMDRIVERDETAILSA;
  138. typedef struct tACMDRIVERDETAILSW {
  139.     DWORD cbStruct;
  140.     FOURCC fccType;
  141.     FOURCC fccComp;
  142.     WORD wMid;
  143.     WORD wPid;
  144.     DWORD vdwACM;
  145.     DWORD vdwDriver;
  146.     DWORD fdwSupport;
  147.     DWORD cFormatTags;
  148.     DWORD cFilterTags;
  149.     HICON hicon;
  150.     WCHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
  151.     WCHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
  152.     WCHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
  153.     WCHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
  154.     WCHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
  155. } ACMDRIVERDETAILSW, *PACMDRIVERDETAILSW, *LPACMDRIVERDETAILSW;
  156. #ifdef UNICODE
  157. #define ACMDRIVERDETAILS ACMDRIVERDETAILSW
  158. #define PACMDRIVERDETAILS PACMDRIVERDETAILSW
  159. #define LPACMDRIVERDETAILS LPACMDRIVERDETAILSW
  160. #else
  161. #define ACMDRIVERDETAILS ACMDRIVERDETAILSA
  162. #define PACMDRIVERDETAILS PACMDRIVERDETAILSA
  163. #define LPACMDRIVERDETAILS LPACMDRIVERDETAILSA
  164. #endif
  165. #define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
  166. #define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED mmioFOURCC('\0', '\0', '\0', '\0')
  167. #define ACMDRIVERDETAILS_SUPPORTF_CODEC 1
  168. #define ACMDRIVERDETAILS_SUPPORTF_CONVERTER 2
  169. #define ACMDRIVERDETAILS_SUPPORTF_FILTER 4
  170. #define ACMDRIVERDETAILS_SUPPORTF_HARDWARE 8
  171. #define ACMDRIVERDETAILS_SUPPORTF_ASYNC 0x10
  172. #define ACMDRIVERDETAILS_SUPPORTF_LOCAL 0x40000000
  173. #define ACMDRIVERDETAILS_SUPPORTF_DISABLED 0x80000000
  174. MMRESULT ACMAPI acmDriverDetailsA(HACMDRIVERID,LPACMDRIVERDETAILSA,DWORD);
  175. MMRESULT ACMAPI acmDriverDetailsW(HACMDRIVERID,LPACMDRIVERDETAILSW,DWORD);
  176. #ifdef UNICODE
  177. #define acmDriverDetails acmDriverDetailsW
  178. #else
  179. #define acmDriverDetails acmDriverDetailsA
  180. #endif
  181. #define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48
  182. typedef struct _ACMFORMATTAGDETAILSA {
  183.     DWORD cbStruct;
  184.     DWORD dwFormatTagIndex;
  185.     DWORD dwFormatTag;
  186.     DWORD cbFormatSize;
  187.     DWORD fdwSupport;
  188.     DWORD cStandardFormats;
  189.     char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  190. } ACMFORMATTAGDETAILSA, *PACMFORMATTAGDETAILSA, *LPACMFORMATTAGDETAILSA;
  191. typedef struct _ACMFORMATTAGDETAILSW {
  192.     DWORD cbStruct;
  193.     DWORD dwFormatTagIndex;
  194.     DWORD dwFormatTag;
  195.     DWORD cbFormatSize;
  196.     DWORD fdwSupport;
  197.     DWORD cStandardFormats;
  198.     WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  199. } ACMFORMATTAGDETAILSW, *PACMFORMATTAGDETAILSW, *LPACMFORMATTAGDETAILSW;
  200.  
  201. #ifdef UNICODE
  202. #define ACMFORMATTAGDETAILS ACMFORMATTAGDETAILSW
  203. #define PACMFORMATTAGDETAILS PACMFORMATTAGDETAILSW
  204. #define LPACMFORMATTAGDETAILS LPACMFORMATTAGDETAILSW
  205. #else
  206. #define ACMFORMATTAGDETAILS ACMFORMATTAGDETAILSA
  207. #define PACMFORMATTAGDETAILS PACMFORMATTAGDETAILSA
  208. #define LPACMFORMATTAGDETAILS LPACMFORMATTAGDETAILSA
  209. #endif
  210. MMRESULT ACMAPI acmFormatTagDetailsA(HACMDRIVER,LPACMFORMATTAGDETAILSA,DWORD);
  211. MMRESULT ACMAPI acmFormatTagDetailsW(HACMDRIVER,LPACMFORMATTAGDETAILSW,DWORD);
  212. #ifdef UNICODE
  213. #define acmFormatTagDetails acmFormatTagDetailsW
  214. #else
  215. #define acmFormatTagDetails acmFormatTagDetailsA
  216. #endif
  217. #define ACM_FORMATTAGDETAILSF_INDEX 0x00000000L
  218. #define ACM_FORMATTAGDETAILSF_FORMATTAG 0x00000001L
  219. #define ACM_FORMATTAGDETAILSF_LARGESTSIZE 0x00000002L
  220. #define ACM_FORMATTAGDETAILSF_QUERYMASK 0x0000000FL
  221. typedef BOOL(CALLBACK *ACMFORMATTAGENUMCBA)(HACMDRIVERID,LPACMFORMATTAGDETAILSA,DWORD,DWORD);
  222. MMRESULT ACMAPI acmFormatTagEnumA(HACMDRIVER,LPACMFORMATTAGDETAILSA,ACMFORMATTAGENUMCBA,DWORD,DWORD);
  223. typedef BOOL(CALLBACK *ACMFORMATTAGENUMCBW)(HACMDRIVERID,LPACMFORMATTAGDETAILSW,DWORD,DWORD);
  224. MMRESULT ACMAPI acmFormatTagEnumW(HACMDRIVER,LPACMFORMATTAGDETAILSW,ACMFORMATTAGENUMCBW,DWORD,DWORD);
  225. #ifdef UNICODE
  226. #define ACMFORMATTAGENUMCB ACMFORMATTAGENUMCBW
  227. #define acmFormatTagEnum acmFormatTagEnumW
  228. #else
  229. #define ACMFORMATTAGENUMCB ACMFORMATTAGENUMCBA
  230. #define acmFormatTagEnum acmFormatTagEnumA
  231. #endif
  232. #define ACMFORMATDETAILS_FORMAT_CHARS 128
  233. typedef struct _ACMFORMATDETAILSA {
  234.     DWORD cbStruct;
  235.     DWORD dwFormatIndex;
  236.     DWORD dwFormatTag;
  237.     DWORD fdwSupport;
  238.     LPWAVEFORMATEX pwfx;
  239.     DWORD cbwfx;
  240.     char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
  241. } ACMFORMATDETAILSA, *PACMFORMATDETAILSA, *LPACMFORMATDETAILSA;
  242. typedef struct tACMFORMATDETAILSW {
  243.     DWORD cbStruct;
  244.     DWORD dwFormatIndex;
  245.     DWORD dwFormatTag;
  246.     DWORD fdwSupport;
  247.     LPWAVEFORMATEX pwfx;
  248.     DWORD cbwfx;
  249.     WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
  250. } ACMFORMATDETAILSW, *PACMFORMATDETAILSW, *LPACMFORMATDETAILSW;
  251. #ifdef UNICODE
  252. #define ACMFORMATDETAILS ACMFORMATDETAILSW
  253. #define PACMFORMATDETAILS PACMFORMATDETAILSW
  254. #define LPACMFORMATDETAILS LPACMFORMATDETAILSW
  255. #else
  256. #define ACMFORMATDETAILS ACMFORMATDETAILSA
  257. #define PACMFORMATDETAILS PACMFORMATDETAILSA
  258. #define LPACMFORMATDETAILS LPACMFORMATDETAILSA
  259. #endif
  260. MMRESULT ACMAPI acmFormatDetailsA(HACMDRIVER,LPACMFORMATDETAILSA,DWORD);
  261. MMRESULT ACMAPI acmFormatDetailsW(HACMDRIVER,LPACMFORMATDETAILSW,DWORD);
  262. #ifdef UNICODE
  263. #define acmFormatDetails acmFormatDetailsW
  264. #else
  265. #define acmFormatDetails acmFormatDetailsA
  266. #endif
  267. #define ACM_FORMATDETAILSF_INDEX 0x00000000L
  268. #define ACM_FORMATDETAILSF_FORMAT 0x00000001L
  269. #define ACM_FORMATDETAILSF_QUERYMASK 0x0000000FL
  270. typedef BOOL (CALLBACK *ACMFORMATENUMCBA)(HACMDRIVERID,LPACMFORMATDETAILSA,DWORD,DWORD);
  271. MMRESULT ACMAPI acmFormatEnumA (HACMDRIVER,LPACMFORMATDETAILSA,ACMFORMATENUMCBA,DWORD, DWORD);
  272. typedef BOOL (CALLBACK *ACMFORMATENUMCBW)(HACMDRIVERID,LPACMFORMATDETAILSW,DWORD,DWORD);
  273. MMRESULT ACMAPI acmFormatEnumW
  274. (
  275.     HACMDRIVER had,
  276.     LPACMFORMATDETAILSW pafd,
  277.     ACMFORMATENUMCBW fnCallback,
  278.     DWORD dwInstance, 
  279.     DWORD fdwEnum
  280. );
  281.  
  282. #ifdef UNICODE
  283. #define ACMFORMATENUMCB ACMFORMATENUMCBW
  284. #define acmFormatEnum acmFormatEnumW
  285. #else
  286. #define ACMFORMATENUMCB ACMFORMATENUMCBA
  287. #define acmFormatEnum acmFormatEnumA
  288. #endif
  289. #define ACM_FORMATENUMF_WFORMATTAG 0x00010000L
  290. #define ACM_FORMATENUMF_NCHANNELS 0x00020000L
  291. #define ACM_FORMATENUMF_NSAMPLESPERSEC 0x00040000L
  292. #define ACM_FORMATENUMF_WBITSPERSAMPLE 0x00080000L
  293. #define ACM_FORMATENUMF_CONVERT 0x00100000L
  294. #define ACM_FORMATENUMF_SUGGEST 0x00200000L
  295. #define ACM_FORMATENUMF_HARDWARE 0x00400000L
  296. #define ACM_FORMATENUMF_INPUT 0x00800000L
  297. #define ACM_FORMATENUMF_OUTPUT 0x01000000L
  298. MMRESULT ACMAPI acmFormatSuggest (HACMDRIVER,LPWAVEFORMATEX,LPWAVEFORMATEX,DWORD,DWORD);
  299. #define ACM_FORMATSUGGESTF_WFORMATTAG 0x00010000L
  300. #define ACM_FORMATSUGGESTF_NCHANNELS 0x00020000L
  301. #define ACM_FORMATSUGGESTF_NSAMPLESPERSEC 0x00040000L
  302. #define ACM_FORMATSUGGESTF_WBITSPERSAMPLE 0x00080000L
  303. #define ACM_FORMATSUGGESTF_TYPEMASK 0x00FF0000L
  304. #define ACMHELPMSGSTRINGA "acmchoose_help"
  305. #define ACMHELPMSGSTRINGW L"acmchoose_help"
  306. #define ACMHELPMSGCONTEXTMENUA "acmchoose_contextmenu"
  307. #define ACMHELPMSGCONTEXTMENUW L"acmchoose_contextmenu"
  308. #define ACMHELPMSGCONTEXTHELPA "acmchoose_contexthelp"
  309. #define ACMHELPMSGCONTEXTHELPW L"acmchoose_contexthelp"
  310. #ifdef UNICODE
  311. #define ACMHELPMSGSTRING ACMHELPMSGSTRINGW
  312. #define ACMHELPMSGCONTEXTMENU ACMHELPMSGCONTEXTMENUW
  313. #define ACMHELPMSGCONTEXTHELP ACMHELPMSGCONTEXTHELPW
  314. #else
  315. #define ACMHELPMSGSTRING ACMHELPMSGSTRINGA
  316. #define ACMHELPMSGCONTEXTMENU ACMHELPMSGCONTEXTMENUA
  317. #define ACMHELPMSGCONTEXTHELP ACMHELPMSGCONTEXTHELPA
  318. #endif
  319. #define MM_ACM_FORMATCHOOSE (0x8000)
  320. #define FORMATCHOOSE_MESSAGE 0
  321. #define FORMATCHOOSE_FORMATTAG_VERIFY (FORMATCHOOSE_MESSAGE+0)
  322. #define FORMATCHOOSE_FORMAT_VERIFY (FORMATCHOOSE_MESSAGE+1)
  323. #define FORMATCHOOSE_CUSTOM_VERIFY (FORMATCHOOSE_MESSAGE+2)
  324. typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCA)(HWND,UINT,WPARAM,LPARAM);
  325. typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCW)(HWND,UINT,WPARAM,LPARAM);
  326. #ifdef UNICODE
  327. #define ACMFORMATCHOOSEHOOKPROC ACMFORMATCHOOSEHOOKPROCW
  328. #else
  329. #define ACMFORMATCHOOSEHOOKPROC ACMFORMATCHOOSEHOOKPROCA
  330. #endif
  331. typedef struct tACMFORMATCHOOSEA
  332. {
  333.     DWORD cbStruct; 
  334.     DWORD fdwStyle; 
  335.     HWND hwndOwner; 
  336.     LPWAVEFORMATEX pwfx; 
  337.     DWORD cbwfx; 
  338.     LPCSTR pszTitle; 
  339.     char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  340.     char szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; 
  341.     LPSTR pszName; 
  342.     DWORD cchName; 
  343.     DWORD fdwEnum; 
  344.     LPWAVEFORMATEX pwfxEnum; 
  345.     HINSTANCE hInstance; 
  346.     LPCSTR pszTemplateName; 
  347.     LPARAM lCustData; 
  348.     ACMFORMATCHOOSEHOOKPROCA pfnHook; 
  349. } ACMFORMATCHOOSEA, *PACMFORMATCHOOSEA, *LPACMFORMATCHOOSEA;
  350. typedef struct tACMFORMATCHOOSEW
  351. {
  352.     DWORD cbStruct; 
  353.     DWORD fdwStyle; 
  354.     HWND hwndOwner; 
  355.     LPWAVEFORMATEX pwfx; 
  356.     DWORD cbwfx; 
  357.     LPCWSTR pszTitle; 
  358.     WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  359.     WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; 
  360.     LPWSTR pszName; 
  361.     DWORD cchName; 
  362.     DWORD fdwEnum; 
  363.     LPWAVEFORMATEX pwfxEnum; 
  364.     HINSTANCE hInstance; 
  365.     LPCWSTR pszTemplateName; 
  366.     LPARAM lCustData; 
  367.     ACMFORMATCHOOSEHOOKPROCW pfnHook; 
  368. } ACMFORMATCHOOSEW, *PACMFORMATCHOOSEW, *LPACMFORMATCHOOSEW;
  369. #ifdef UNICODE
  370. #define ACMFORMATCHOOSE ACMFORMATCHOOSEW
  371. #define PACMFORMATCHOOSE PACMFORMATCHOOSEW
  372. #define LPACMFORMATCHOOSE LPACMFORMATCHOOSEW
  373. #else
  374. #define ACMFORMATCHOOSE ACMFORMATCHOOSEA
  375. #define PACMFORMATCHOOSE PACMFORMATCHOOSEA
  376. #define LPACMFORMATCHOOSE LPACMFORMATCHOOSEA
  377. #endif
  378. #define ACMFORMATCHOOSE_STYLEF_SHOWHELP 0x00000004L
  379. #define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK 0x00000008L
  380. #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE 0x00000010L
  381. #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
  382. #define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT 0x00000040L
  383. #define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP 0x00000080L
  384. MMRESULT ACMAPI acmFormatChooseA(LPACMFORMATCHOOSEA);
  385. MMRESULT ACMAPI acmFormatChooseW(LPACMFORMATCHOOSEW);
  386. #ifdef UNICODE
  387. #define acmFormatChoose acmFormatChooseW
  388. #else
  389. #define acmFormatChoose acmFormatChooseA
  390. #endif
  391. #define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48
  392. typedef struct _ACMFILTERTAGDETAILSA {
  393.     DWORD cbStruct;
  394.     DWORD dwFilterTagIndex;
  395.     DWORD dwFilterTag;
  396.     DWORD cbFilterSize;
  397.     DWORD fdwSupport;
  398.     DWORD cStandardFilters;
  399.     char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  400. } ACMFILTERTAGDETAILSA, *PACMFILTERTAGDETAILSA, *LPACMFILTERTAGDETAILSA;
  401. typedef struct tACMFILTERTAGDETAILSW {
  402.     DWORD cbStruct;
  403.     DWORD dwFilterTagIndex;
  404.     DWORD dwFilterTag;
  405.     DWORD cbFilterSize;
  406.     DWORD fdwSupport;
  407.     DWORD cStandardFilters;
  408.     WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  409. } ACMFILTERTAGDETAILSW, *PACMFILTERTAGDETAILSW, *LPACMFILTERTAGDETAILSW;
  410. #ifdef UNICODE
  411. #define ACMFILTERTAGDETAILS ACMFILTERTAGDETAILSW
  412. #define PACMFILTERTAGDETAILS PACMFILTERTAGDETAILSW
  413. #define LPACMFILTERTAGDETAILS LPACMFILTERTAGDETAILSW
  414. #else
  415. #define ACMFILTERTAGDETAILS ACMFILTERTAGDETAILSA
  416. #define PACMFILTERTAGDETAILS PACMFILTERTAGDETAILSA
  417. #define LPACMFILTERTAGDETAILS LPACMFILTERTAGDETAILSA
  418. #endif
  419. MMRESULT ACMAPI acmFilterTagDetailsA(HACMDRIVER,LPACMFILTERTAGDETAILSA,DWORD);
  420. MMRESULT ACMAPI acmFilterTagDetailsW(HACMDRIVER,LPACMFILTERTAGDETAILSW,DWORD);
  421. #ifdef UNICODE
  422. #define acmFilterTagDetails acmFilterTagDetailsW
  423. #else
  424. #define acmFilterTagDetails acmFilterTagDetailsA
  425. #endif
  426. #define ACM_FILTERTAGDETAILSF_INDEX 0x00000000L
  427. #define ACM_FILTERTAGDETAILSF_FILTERTAG 0x00000001L
  428. #define ACM_FILTERTAGDETAILSF_LARGESTSIZE 0x00000002L
  429. #define ACM_FILTERTAGDETAILSF_QUERYMASK 0x0000000FL
  430. typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBA)(HACMDRIVERID,LPACMFILTERTAGDETAILSA,DWORD,DWORD);
  431. MMRESULT ACMAPI acmFilterTagEnumA(HACMDRIVER,LPACMFILTERTAGDETAILSA,ACMFILTERTAGENUMCBA,DWORD,DWORD);
  432. typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBW) (HACMDRIVERID,LPACMFILTERTAGDETAILSW,DWORD,DWORD);
  433. MMRESULT ACMAPI acmFilterTagEnumW(HACMDRIVER,LPACMFILTERTAGDETAILSW,ACMFILTERTAGENUMCBW,DWORD,DWORD);
  434. #ifdef UNICODE
  435. #define ACMFILTERTAGENUMCB ACMFILTERTAGENUMCBW
  436. #define acmFilterTagEnum acmFilterTagEnumW
  437. #else
  438. #define ACMFILTERTAGENUMCB ACMFILTERTAGENUMCBA
  439. #define acmFilterTagEnum acmFilterTagEnumA
  440. #endif
  441. #define ACMFILTERDETAILS_FILTER_CHARS 128
  442. typedef struct _ACMFILTERDETAILSA {
  443.     DWORD cbStruct;
  444.     DWORD dwFilterIndex;
  445.     DWORD dwFilterTag;
  446.     DWORD fdwSupport;
  447.     LPWAVEFILTER pwfltr;
  448.     DWORD cbwfltr;
  449.     char szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  450. } ACMFILTERDETAILSA, *PACMFILTERDETAILSA, *LPACMFILTERDETAILSA;
  451. typedef struct tACMFILTERDETAILSW {
  452.     DWORD cbStruct;
  453.     DWORD dwFilterIndex;
  454.     DWORD dwFilterTag;
  455.     DWORD fdwSupport;
  456.     LPWAVEFILTER pwfltr;
  457.     DWORD cbwfltr;
  458.     WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  459. } ACMFILTERDETAILSW, *PACMFILTERDETAILSW, *LPACMFILTERDETAILSW;
  460. #ifdef UNICODE
  461. #define ACMFILTERDETAILS ACMFILTERDETAILSW
  462. #define PACMFILTERDETAILS PACMFILTERDETAILSW
  463. #define LPACMFILTERDETAILS LPACMFILTERDETAILSW
  464. #else
  465. #define ACMFILTERDETAILS ACMFILTERDETAILSA
  466. #define PACMFILTERDETAILS PACMFILTERDETAILSA
  467. #define LPACMFILTERDETAILS LPACMFILTERDETAILSA
  468. #endif
  469. MMRESULT ACMAPI acmFilterDetailsA(HACMDRIVER,LPACMFILTERDETAILSA,DWORD);
  470. MMRESULT ACMAPI acmFilterDetailsW(HACMDRIVER,LPACMFILTERDETAILSW,DWORD);
  471. #ifdef UNICODE
  472. #define acmFilterDetails acmFilterDetailsW
  473. #else
  474. #define acmFilterDetails acmFilterDetailsA
  475. #endif
  476. #define ACM_FILTERDETAILSF_INDEX 0x00000000L
  477. #define ACM_FILTERDETAILSF_FILTER 0x00000001L
  478. #define ACM_FILTERDETAILSF_QUERYMASK 0x0000000FL
  479. typedef BOOL (CALLBACK *ACMFILTERENUMCBA)(HACMDRIVERID,LPACMFILTERDETAILSA,DWORD,DWORD);
  480. MMRESULT ACMAPI acmFilterEnumA(HACMDRIVER,LPACMFILTERDETAILSA,ACMFILTERENUMCBA,DWORD,DWORD);
  481. typedef BOOL (CALLBACK *ACMFILTERENUMCBW)(HACMDRIVERID,LPACMFILTERDETAILSW,DWORD,DWORD);
  482. MMRESULT ACMAPI acmFilterEnumW(HACMDRIVER,LPACMFILTERDETAILSW,ACMFILTERENUMCBW,DWORD,DWORD);
  483. #ifdef UNICODE
  484. #define ACMFILTERENUMCB ACMFILTERENUMCBW
  485. #define acmFilterEnum acmFilterEnumW
  486. #else
  487. #define ACMFILTERENUMCB ACMFILTERENUMCBA
  488. #define acmFilterEnum acmFilterEnumA
  489. #endif
  490. #define ACM_FILTERENUMF_DWFILTERTAG 0x00010000L
  491. #define MM_ACM_FILTERCHOOSE (0x8000)
  492. #define FILTERCHOOSE_MESSAGE 0
  493. #define FILTERCHOOSE_FILTERTAG_VERIFY (FILTERCHOOSE_MESSAGE+0)
  494. #define FILTERCHOOSE_FILTER_VERIFY (FILTERCHOOSE_MESSAGE+1)
  495. #define FILTERCHOOSE_CUSTOM_VERIFY (FILTERCHOOSE_MESSAGE+2)
  496. typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCA)(HWND,UINT,WPARAM,LPARAM);
  497. typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCW)(HWND,UINT,WPARAM,LPARAM);
  498. #ifdef UNICODE
  499. #define ACMFILTERCHOOSEHOOKPROC ACMFILTERCHOOSEHOOKPROCW
  500. #else
  501. #define ACMFILTERCHOOSEHOOKPROC ACMFILTERCHOOSEHOOKPROCA
  502. #endif
  503. typedef struct _ACMFILTERCHOOSEA {
  504.     DWORD cbStruct; 
  505.     DWORD fdwStyle; 
  506.     HWND hwndOwner; 
  507.     LPWAVEFILTER pwfltr; 
  508.     DWORD cbwfltr; 
  509.     LPCSTR pszTitle;
  510.     char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  511.     char szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  512.     LPSTR pszName; 
  513.     DWORD cchName; 
  514.     DWORD fdwEnum; 
  515.     LPWAVEFILTER pwfltrEnum; 
  516.     HINSTANCE hInstance; 
  517.     LPCSTR pszTemplateName; 
  518.     LPARAM lCustData; 
  519.     ACMFILTERCHOOSEHOOKPROCA pfnHook; 
  520. } ACMFILTERCHOOSEA, *PACMFILTERCHOOSEA, *LPACMFILTERCHOOSEA;
  521. typedef struct _ACMFILTERCHOOSEW {
  522.     DWORD cbStruct; 
  523.     DWORD fdwStyle; 
  524.     HWND hwndOwner; 
  525.     LPWAVEFILTER pwfltr; 
  526.     DWORD cbwfltr; 
  527.     LPCWSTR pszTitle;
  528.     WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  529.     WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  530.     LPWSTR pszName; 
  531.     DWORD cchName; 
  532.     DWORD fdwEnum; 
  533.     LPWAVEFILTER pwfltrEnum; 
  534.     HINSTANCE hInstance; 
  535.     LPCWSTR pszTemplateName; 
  536.     LPARAM lCustData; 
  537.     ACMFILTERCHOOSEHOOKPROCW pfnHook; 
  538. } ACMFILTERCHOOSEW, *PACMFILTERCHOOSEW, *LPACMFILTERCHOOSEW;
  539. #ifdef UNICODE
  540. #define ACMFILTERCHOOSE ACMFILTERCHOOSEW
  541. #define PACMFILTERCHOOSE PACMFILTERCHOOSEW
  542. #define LPACMFILTERCHOOSE LPACMFILTERCHOOSEW
  543. #else
  544. #define ACMFILTERCHOOSE ACMFILTERCHOOSEA
  545. #define PACMFILTERCHOOSE PACMFILTERCHOOSEA
  546. #define LPACMFILTERCHOOSE LPACMFILTERCHOOSEA
  547. #endif
  548. #define ACMFILTERCHOOSE_STYLEF_SHOWHELP 0x00000004L
  549. #define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK 0x00000008L
  550. #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE 0x00000010L
  551. #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
  552. #define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT 0x00000040L
  553. #define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP 0x00000080L
  554. MMRESULT ACMAPI acmFilterChooseA(LPACMFILTERCHOOSEA);
  555. MMRESULT ACMAPI acmFilterChooseW(LPACMFILTERCHOOSEW);
  556. #ifdef UNICODE
  557. #define acmFilterChoose acmFilterChooseW
  558. #else
  559. #define acmFilterChoose acmFilterChooseA
  560. #endif
  561. typedef struct _ACMSTREAMHEADER {
  562.     DWORD cbStruct; 
  563.     DWORD fdwStatus; 
  564.     DWORD dwUser; 
  565.     LPBYTE pbSrc;
  566.     DWORD cbSrcLength;
  567.     DWORD cbSrcLengthUsed;
  568.     DWORD dwSrcUser; 
  569.     LPBYTE pbDst;
  570.     DWORD cbDstLength;
  571.     DWORD cbDstLengthUsed;
  572.     DWORD dwDstUser; 
  573.     DWORD dwReservedDriver[10]; 
  574. } ACMSTREAMHEADER, *PACMSTREAMHEADER, *LPACMSTREAMHEADER;
  575. #define ACMSTREAMHEADER_STATUSF_DONE 0x00010000L
  576. #define ACMSTREAMHEADER_STATUSF_PREPARED 0x00020000L
  577. #define ACMSTREAMHEADER_STATUSF_INQUEUE 0x00100000L
  578. MMRESULT ACMAPI acmStreamOpen(LPHACMSTREAM,HACMDRIVER,LPWAVEFORMATEX,LPWAVEFORMATEX,LPWAVEFILTER,DWORD,DWORD,DWORD);
  579. #define ACM_STREAMOPENF_QUERY 1
  580. #define ACM_STREAMOPENF_ASYNC 2
  581. #define ACM_STREAMOPENF_NONREALTIME 4
  582. MMRESULT ACMAPI acmStreamClose(HACMSTREAM,DWORD);
  583. MMRESULT ACMAPI acmStreamSize(HACMSTREAM,DWORD,LPDWORD,DWORD);
  584. #define ACM_STREAMSIZEF_SOURCE 0
  585. #define ACM_STREAMSIZEF_DESTINATION 1
  586. #define ACM_STREAMSIZEF_QUERYMASK 0xF
  587. MMRESULT ACMAPI acmStreamReset(HACMSTREAM,DWORD);
  588. MMRESULT ACMAPI acmStreamMessage(HACMSTREAM,UINT,LPARAM,LPARAM );
  589. MMRESULT ACMAPI acmStreamConvert(HACMSTREAM,LPACMSTREAMHEADER,DWORD);
  590. #define ACM_STREAMCONVERTF_BLOCKALIGN 0x00000004
  591. #define ACM_STREAMCONVERTF_START 0x00000010
  592. #define ACM_STREAMCONVERTF_END 0x00000020
  593. MMRESULT ACMAPI acmStreamPrepareHeader(HACMSTREAM,LPACMSTREAMHEADER,DWORD);
  594. MMRESULT ACMAPI acmStreamUnprepareHeader(HACMSTREAM,LPACMSTREAMHEADER,DWORD);
  595. #endif
  596.