msacm.h 24 KB

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