PageRenderTime 58ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 1ms

/common/unaMsAcmAPI.pas

http://github.com/lakeofsoft/vcpub
Pascal | 3458 lines | 1564 code | 229 blank | 1665 comment | 20 complexity | 29994943da320be5a6be30afd2d0f77d MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. (*
  2. ----------------------------------------------
  3. Microsoft Audio Compression Manager (ACM) interface
  4. Original Delphi conversion by Armin Sander,
  5. Digital SimpleX / armin@dsx.de
  6. Additional programming:
  7. Copyright (c) 2002-2010 Lake of Soft
  8. All rights reserved
  9. http://lakeofsoft.com/
  10. ----------------------------------------------
  11. modified by:
  12. Lake, Jan-Dec 2002
  13. Lake, Feb 2003
  14. ----------------------------------------------
  15. *)
  16. {$I unaDef.inc }
  17. {*
  18. This unit contains Object Pascal version of MSAcm.h originally done by Armin Sander, Digital SimpleX
  19. Most of the functions in this unit are documented in Microsoft Platform SDK.
  20. @Author Additional modification by Lake
  21. 2.5.2008.07 Still here
  22. }
  23. unit
  24. unaMsAcmAPI;
  25. interface
  26. uses
  27. Windows, unaTypes, MMSystem;
  28. // C++Builders stuff
  29. {$HPPEMIT '#include "MMREG.H"' }
  30. {$HPPEMIT '#include "msacm.h"' }
  31. type
  32. {$EXTERNALSYM WAVEFORMATEX }
  33. WAVEFORMATEX = tWAVEFORMATEX;
  34. // some MMREG.H and MMSYSTEM.H includes missed from MMSystem.pas
  35. const
  36. {$EXTERNALSYM WAVE_FILTER_UNKNOWN }
  37. WAVE_FILTER_UNKNOWN = $0000;
  38. {$EXTERNALSYM WAVE_FILTER_DEVELOPMENT }
  39. WAVE_FILTER_DEVELOPMENT = $FFFF;
  40. {$EXTERNALSYM WAVE_FORMAT_DIRECT}
  41. WAVE_FORMAT_DIRECT = $0008;
  42. type
  43. pWAVEFILTER = ^WAVEFILTER;
  44. {$EXTERNALSYM WAVEFILTER}
  45. WAVEFILTER = record
  46. cbStruct : DWORD; // Size of the filter in bytes
  47. dwFilterTag: DWORD; // filter type
  48. fdwFilter : DWORD; // Flags for the filter (Universal Dfns)
  49. dwReserved : array[0..5] of DWORD; // Reserved for system use
  50. end;
  51. const
  52. {$EXTERNALSYM DRV_MAPPER_PREFERRED_INPUT_GET }
  53. DRV_MAPPER_PREFERRED_INPUT_GET = (DRV_USER + 0);
  54. {$EXTERNALSYM DRV_MAPPER_PREFERRED_OUTPUT_GET }
  55. DRV_MAPPER_PREFERRED_OUTPUT_GET = (DRV_USER + 2);
  56. {$EXTERNALSYM DRVM_MAPPER_STATUS }
  57. DRVM_MAPPER_STATUS = $2000;
  58. {$EXTERNALSYM WIDM_MAPPER_STATUS }
  59. WIDM_MAPPER_STATUS = (DRVM_MAPPER_STATUS + 0);
  60. {$EXTERNALSYM WAVEIN_MAPPER_STATUS_DEVICE }
  61. WAVEIN_MAPPER_STATUS_DEVICE = 0;
  62. {$EXTERNALSYM WAVEIN_MAPPER_STATUS_MAPPED }
  63. WAVEIN_MAPPER_STATUS_MAPPED = 1;
  64. {$EXTERNALSYM WAVEIN_MAPPER_STATUS_FORMAT }
  65. WAVEIN_MAPPER_STATUS_FORMAT = 2;
  66. {$EXTERNALSYM WODM_MAPPER_STATUS }
  67. WODM_MAPPER_STATUS = (DRVM_MAPPER_STATUS + 0);
  68. {$EXTERNALSYM WAVEOUT_MAPPER_STATUS_DEVICE }
  69. WAVEOUT_MAPPER_STATUS_DEVICE = 0;
  70. {$EXTERNALSYM WAVEOUT_MAPPER_STATUS_MAPPED }
  71. WAVEOUT_MAPPER_STATUS_MAPPED = 1;
  72. {$EXTERNALSYM WAVEOUT_MAPPER_STATUS_FORMAT }
  73. WAVEOUT_MAPPER_STATUS_FORMAT = 2;
  74. // MSACM.H
  75. //--------------------------------------------------------------------------;
  76. //
  77. // ACM General API's and Defines
  78. //
  79. //
  80. type
  81. {
  82. there are four types of 'handles' used by the ACM. the first three
  83. are unique types that define specific objects:
  84. HACMDRIVERID: used to _identify_ an ACM driver. this identifier can be
  85. used to _open_ the driver for querying details, etc about the driver.
  86. }
  87. pHACMDRIVERID = ^HACMDRIVERID;
  88. {$EXTERNALSYM HACMDRIVERID }
  89. HACMDRIVERID = tHandle;
  90. {
  91. HACMDRIVER: used to manage a driver (codec, filter, etc). this handle
  92. is much like a handle to other media drivers -- you use it to send
  93. messages to the converter, query for capabilities, etc.
  94. }
  95. pHACMDRIVER = ^HACMDRIVER;
  96. {$EXTERNALSYM HACMDRIVER }
  97. HACMDRIVER = tHandle;
  98. {
  99. HACMSTREAM: used to manage a 'stream' (conversion channel) with the
  100. ACM. you use a stream handle to convert data from one format/type
  101. to another -- much like dealing with a file handle.
  102. }
  103. pHACMSTREAM = ^HACMSTREAM;
  104. {$EXTERNALSYM HACMSTREAM }
  105. HACMSTREAM = tHandle;
  106. {
  107. the fourth handle type is a generic type used on ACM functions that
  108. can accept two or more of the above handle types (for example the
  109. acmMetrics and acmDriverID functions).
  110. HACMOBJ: used to identify ACM objects. this handle is used on functions
  111. that can accept two or more ACM handle types.
  112. }
  113. pHACMOBJ = ^HACMOBJ;
  114. {$EXTERNALSYM HACMOBJ }
  115. HACMOBJ = tHandle;
  116. const
  117. {
  118. ACM Error Codes
  119. Note that these error codes are specific errors that apply to the ACM
  120. directly--general errors are defined as MMSYSERR_*.
  121. }
  122. {$EXTERNALSYM ACMERR_BASE }
  123. ACMERR_BASE = 512;
  124. {$EXTERNALSYM ACMERR_NOTPOSSIBLE }
  125. ACMERR_NOTPOSSIBLE = ACMERR_BASE + 0;
  126. {$EXTERNALSYM ACMERR_BUSY }
  127. ACMERR_BUSY = ACMERR_BASE + 1;
  128. {$EXTERNALSYM ACMERR_UNPREPARED }
  129. ACMERR_UNPREPARED = ACMERR_BASE + 2;
  130. {$EXTERNALSYM ACMERR_CANCELED }
  131. ACMERR_CANCELED = ACMERR_BASE + 3;
  132. {
  133. ACM Window Messages
  134. These window messages are sent by the ACM or ACM drivers to notify
  135. applications of events.
  136. Note that these window message numbers will also be defined in
  137. mmsystem.
  138. }
  139. {$EXTERNALSYM MM_ACM_OPEN }
  140. MM_ACM_OPEN = MM_STREAM_OPEN; // conversion callback messages
  141. {$EXTERNALSYM MM_ACM_CLOSE }
  142. MM_ACM_CLOSE = MM_STREAM_CLOSE;
  143. {$EXTERNALSYM MM_ACM_DONE }
  144. MM_ACM_DONE = MM_STREAM_DONE;
  145. {
  146. the ACM version is a 32 bit number that is broken into three parts as
  147. follows:
  148. bits 24 - 31: 8 bit _major_ version number
  149. bits 16 - 23: 8 bit _minor_ version number
  150. bits 0 - 15: 16 bit build number
  151. this is then displayed as follows:
  152. bMajor = (BYTE)(dwVersion >> 24)
  153. bMinor = (BYTE)(dwVersion >> 16) &
  154. wBuild = LOWORD(dwVersion)
  155. }
  156. {$EXTERNALSYM acm_GetVersion}
  157. function acm_getVersion: DWORD; stdcall;
  158. {$EXTERNALSYM acm_Metrics }
  159. function acm_metrics(hao: HACMOBJ; uMetric: UINT; var pMetric): MMRESULT; stdcall;
  160. const
  161. {$EXTERNALSYM ACM_METRIC_COUNT_DRIVERS }
  162. ACM_METRIC_COUNT_DRIVERS = 1;
  163. {$EXTERNALSYM ACM_METRIC_COUNT_CODECS }
  164. ACM_METRIC_COUNT_CODECS = 2;
  165. {$EXTERNALSYM ACM_METRIC_COUNT_CONVERTERS }
  166. ACM_METRIC_COUNT_CONVERTERS = 3;
  167. {$EXTERNALSYM ACM_METRIC_COUNT_FILTERS }
  168. ACM_METRIC_COUNT_FILTERS = 4;
  169. {$EXTERNALSYM ACM_METRIC_COUNT_DISABLED }
  170. ACM_METRIC_COUNT_DISABLED = 5;
  171. {$EXTERNALSYM ACM_METRIC_COUNT_HARDWARE }
  172. ACM_METRIC_COUNT_HARDWARE = 6;
  173. {$EXTERNALSYM ACM_METRIC_COUNT_LOCAL_DRIVERS }
  174. ACM_METRIC_COUNT_LOCAL_DRIVERS = 20;
  175. {$EXTERNALSYM ACM_METRIC_COUNT_LOCAL_CODECS }
  176. ACM_METRIC_COUNT_LOCAL_CODECS = 21;
  177. {$EXTERNALSYM ACM_METRIC_COUNT_LOCAL_CONVERTERS }
  178. ACM_METRIC_COUNT_LOCAL_CONVERTERS = 22;
  179. {$EXTERNALSYM ACM_METRIC_COUNT_LOCAL_FILTERS }
  180. ACM_METRIC_COUNT_LOCAL_FILTERS = 23;
  181. {$EXTERNALSYM ACM_METRIC_COUNT_LOCAL_DISABLED }
  182. ACM_METRIC_COUNT_LOCAL_DISABLED = 24;
  183. {$EXTERNALSYM ACM_METRIC_HARDWARE_WAVE_INPUT }
  184. ACM_METRIC_HARDWARE_WAVE_INPUT = 30;
  185. {$EXTERNALSYM ACM_METRIC_HARDWARE_WAVE_OUTPUT }
  186. ACM_METRIC_HARDWARE_WAVE_OUTPUT = 31;
  187. {$EXTERNALSYM ACM_METRIC_MAX_SIZE_FORMAT }
  188. ACM_METRIC_MAX_SIZE_FORMAT = 50;
  189. {$EXTERNALSYM ACM_METRIC_MAX_SIZE_FILTER }
  190. ACM_METRIC_MAX_SIZE_FILTER = 51;
  191. {$EXTERNALSYM ACM_METRIC_DRIVER_SUPPORT }
  192. ACM_METRIC_DRIVER_SUPPORT = 100;
  193. {$EXTERNALSYM ACM_METRIC_DRIVER_PRIORITY }
  194. ACM_METRIC_DRIVER_PRIORITY = 101;
  195. //--------------------------------------------------------------------------
  196. //
  197. // ACM Drivers
  198. //
  199. type
  200. {$EXTERNALSYM ACMDRIVERENUMCB }
  201. ACMDRIVERENUMCB = function(hadid: HACMDRIVERID; dwInstance: DWORD; fdwSupport: DWORD): Windows.BOOL; stdcall;
  202. {$EXTERNALSYM acm_DriverEnum }
  203. function acm_driverEnum(fnCallback: ACMDRIVERENUMCB; dwInstance: DWORD; fdwEnum: DWORD): MMRESULT; stdcall;
  204. const
  205. {$EXTERNALSYM ACM_DRIVERENUMF_NOLOCAL }
  206. ACM_DRIVERENUMF_NOLOCAL = $40000000;
  207. {$EXTERNALSYM ACM_DRIVERENUMF_DISABLED }
  208. ACM_DRIVERENUMF_DISABLED = $80000000;
  209. {$EXTERNALSYM acm_DriverID }
  210. function acm_driverID(hao: HACMOBJ; phadid: pHACMDRIVERID; fdwDriverID: DWORD): MMRESULT; stdcall;
  211. {$EXTERNALSYM acm_DriverAddA }
  212. function acm_driverAddA(phadid: pHACMDRIVERID; hinstModule: HINST; lParam: LPARAM; dwPriority: DWORD; fdwAdd: DWORD): MMRESULT; stdcall;
  213. {$EXTERNALSYM acm_DriverAddW }
  214. function acm_driverAddW(phadid: pHACMDRIVERID; hinstModule: HINST; lParam: LPARAM; dwPriority: DWORD; fdwAdd: DWORD): MMRESULT; stdcall;
  215. {$EXTERNALSYM acm_DriverAdd }
  216. function acm_driverAdd (phadid: pHACMDRIVERID; hinstModule: HINST; lParam: LPARAM; dwPriority: DWORD; fdwAdd: DWORD): MMRESULT; stdcall;
  217. const
  218. {$EXTERNALSYM ACM_DRIVERADDF_FUNCTION }
  219. ACM_DRIVERADDF_FUNCTION = $00000003; // lParam is a procedure
  220. {$EXTERNALSYM ACM_DRIVERADDF_NOTIFYHWND }
  221. ACM_DRIVERADDF_NOTIFYHWND = $00000004; // lParam is notify hwnd
  222. {$EXTERNALSYM ACM_DRIVERADDF_TYPEMASK }
  223. ACM_DRIVERADDF_TYPEMASK = $00000007; // driver type mask
  224. {$EXTERNALSYM ACM_DRIVERADDF_LOCAL }
  225. ACM_DRIVERADDF_LOCAL = $00000000; // is local to current task
  226. {$EXTERNALSYM ACM_DRIVERADDF_GLOBAL }
  227. ACM_DRIVERADDF_GLOBAL = $00000008; // is global
  228. type
  229. {
  230. prototype for ACM driver procedures that are installed as _functions_
  231. or _notifations_ instead of as a standalone installable driver.
  232. }
  233. {$EXTERNALSYM ACMDRIVERPROC }
  234. ACMDRIVERPROC = function(a_0: DWORD; a_1: HACMDRIVERID; a_2: UINT; a_3: LPARAM; a_4: LPARAM): LRESULT; stdcall;
  235. {$EXTERNALSYM LPACMDRIVERPROC }
  236. LPACMDRIVERPROC = ^ACMDRIVERPROC;
  237. {$EXTERNALSYM acm_DriverRemove }
  238. function acm_driverRemove(hadid: HACMDRIVERID; fdwRemove: DWORD): MMRESULT; stdcall;
  239. {$EXTERNALSYM acm_DriverOpen }
  240. function acm_driverOpen(phad: pHACMDRIVER; hadid: HACMDRIVERID; fdwOpen: DWORD): MMRESULT; stdcall;
  241. {$EXTERNALSYM acm_DriverClose }
  242. function acm_driverClose(had: HACMDRIVER; fdwClose: DWORD): MMRESULT; stdcall;
  243. {$EXTERNALSYM acm_DriverMessage }
  244. function acm_driverMessage(had: HACMDRIVER; uMsg: UINT; lParam1: LPARAM; lParam2: LPARAM): LRESULT; stdcall;
  245. const
  246. {$EXTERNALSYM ACMDM_USER }
  247. ACMDM_USER = (DRV_USER + $0000);
  248. {$EXTERNALSYM ACMDM_RESERVED_LOW }
  249. ACMDM_RESERVED_LOW = (DRV_USER + $2000);
  250. {$EXTERNALSYM ACMDM_RESERVED_HIGH }
  251. ACMDM_RESERVED_HIGH = (DRV_USER + $2FFF);
  252. {$EXTERNALSYM ACMDM_BASE }
  253. ACMDM_BASE = ACMDM_RESERVED_LOW;
  254. {$EXTERNALSYM ACMDM_DRIVER_ABOUT }
  255. ACMDM_DRIVER_ABOUT = (ACMDM_BASE + 11);
  256. // -- MSACMDRV.H --
  257. type
  258. //
  259. //
  260. ACMDRVSTREAMINSTANCE = record
  261. cbStruct : DWORD;
  262. pwfxSrc : PWAVEFORMATEX;
  263. pwfxDst : PWAVEFORMATEX;
  264. pwfltr : PWAVEFILTER;
  265. dwCallback: DWORD;
  266. dwInstance: DWORD;
  267. fdwOpen : DWORD;
  268. fdwDriver : DWORD;
  269. dwDriver : DWORD;
  270. has : HACMSTREAM;
  271. end;
  272. //
  273. // structure for ACMDM_STREAM_SIZE message
  274. //
  275. //
  276. ACMDRVSTREAMSIZE = record
  277. cbStruct: DWORD;
  278. fdwSize: DWORD;
  279. cbSrcLength: DWORD;
  280. cbDstLength: DWORD;
  281. end;
  282. //
  283. // NOTE! this structure must match the ACMSTREAMHEADER in msacm.h but
  284. // defines more information for the driver writing convenience
  285. //
  286. PACMDRVSTREAMHEADER = ^ACMDRVSTREAMHEADER;
  287. ACMDRVSTREAMHEADER = record
  288. cbStruct: DWORD;
  289. fdwStatus: DWORD;
  290. dwUser: DWORD_PTR;
  291. pbSrc: PBYTE;
  292. cbSrcLength: DWORD;
  293. cbSrcLengthUsed: DWORD;
  294. dwSrcUser: DWORD_PTR;
  295. pbDst: PBYTE;
  296. cbDstLength: DWORD;
  297. cbDstLengthUsed: DWORD;
  298. dwDstUser: DWORD_PTR;
  299. fdwConvert: DWORD; // flags passed from convert func
  300. padshNext: PACMDRVSTREAMHEADER; // for async driver queueing
  301. fdwDriver: DWORD; // driver instance flags
  302. dwDriver: DWORD; // driver instance data
  303. //
  304. // all remaining fields are used by the ACM for bookkeeping purposes.
  305. // an ACM driver should never use these fields (though than can be
  306. // helpful for debugging)--note that the meaning of these fields
  307. // may change, so do NOT rely on them in shipping code.
  308. //
  309. fdwPrepared: DWORD;
  310. dwPrepared: DWORD;
  311. pbPreparedSrc: PBYTE;
  312. cbPreparedSrcLength: DWORD;
  313. pbPreparedDst: PBYTE;
  314. cbPreparedDstLength: DWORD;
  315. end;
  316. //
  317. // structure containing the information for the ACMDM_FORMAT_SUGGEST message
  318. //
  319. //
  320. ACMDRVFORMATSUGGEST = record
  321. cbStruct: DWORD; // sizeof(ACMDRVFORMATSUGGEST)
  322. fdwSuggest: DWORD; // Suggest flags
  323. pwfxSrc: PWAVEFORMATEX; // Source Format
  324. cbwfxSrc: DWORD; // Source Size
  325. pwfxDst: PWAVEFORMATEX; // Dest format
  326. cbwfxDst: DWORD; // Dest Size
  327. end;
  328. const
  329. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  330. //
  331. // ACM Driver Messages
  332. //
  333. //
  334. //
  335. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  336. ACMDM_DRIVER_NOTIFY = (ACMDM_BASE + 1);
  337. ACMDM_DRIVER_DETAILS = (ACMDM_BASE + 10);
  338. ACMDM_HARDWARE_WAVE_CAPS_INPUT = (ACMDM_BASE + 20);
  339. ACMDM_HARDWARE_WAVE_CAPS_OUTPUT = (ACMDM_BASE + 21);
  340. ACMDM_FORMATTAG_DETAILS = (ACMDM_BASE + 25);
  341. ACMDM_FORMAT_DETAILS = (ACMDM_BASE + 26);
  342. ACMDM_FORMAT_SUGGEST = (ACMDM_BASE + 27);
  343. ACMDM_FILTERTAG_DETAILS = (ACMDM_BASE + 50);
  344. ACMDM_FILTER_DETAILS = (ACMDM_BASE + 51);
  345. ACMDM_STREAM_OPEN = (ACMDM_BASE + 76);
  346. ACMDM_STREAM_CLOSE = (ACMDM_BASE + 77);
  347. ACMDM_STREAM_SIZE = (ACMDM_BASE + 78);
  348. ACMDM_STREAM_CONVERT = (ACMDM_BASE + 79);
  349. ACMDM_STREAM_RESET = (ACMDM_BASE + 80);
  350. ACMDM_STREAM_PREPARE = (ACMDM_BASE + 81);
  351. ACMDM_STREAM_UNPREPARE = (ACMDM_BASE + 82);
  352. {$EXTERNALSYM acm_DriverPriority }
  353. function acm_driverPriority(hadid: HACMDRIVERID; dwPriority: DWORD; fdwPriority: DWORD): MMRESULT; stdcall;
  354. const
  355. {$EXTERNALSYM ACM_DRIVERPRIORITYF_ENABLE }
  356. ACM_DRIVERPRIORITYF_ENABLE = $00000001;
  357. {$EXTERNALSYM ACM_DRIVERPRIORITYF_DISABLE }
  358. ACM_DRIVERPRIORITYF_DISABLE = $00000002;
  359. {$EXTERNALSYM ACM_DRIVERPRIORITYF_ABLEMASK }
  360. ACM_DRIVERPRIORITYF_ABLEMASK = $00000003;
  361. {$EXTERNALSYM ACM_DRIVERPRIORITYF_BEGIN }
  362. ACM_DRIVERPRIORITYF_BEGIN = $00010000;
  363. {$EXTERNALSYM ACM_DRIVERPRIORITYF_END }
  364. ACM_DRIVERPRIORITYF_END = $00020000;
  365. {$EXTERNALSYM ACM_DRIVERPRIORITYF_DEFERMASK }
  366. ACM_DRIVERPRIORITYF_DEFERMASK = $00030000;
  367. {
  368. ACMDRIVERDETAILS
  369. the ACMDRIVERDETAILS structure is used to get various capabilities from
  370. an ACM driver (codec, converter, filter).
  371. }
  372. {$EXTERNALSYM ACMDRIVERDETAILS_SHORTNAME_CHARS }
  373. ACMDRIVERDETAILS_SHORTNAME_CHARS = 32;
  374. {$EXTERNALSYM ACMDRIVERDETAILS_LONGNAME_CHARS }
  375. ACMDRIVERDETAILS_LONGNAME_CHARS = 128;
  376. {$EXTERNALSYM ACMDRIVERDETAILS_COPYRIGHT_CHARS }
  377. ACMDRIVERDETAILS_COPYRIGHT_CHARS = 80;
  378. {$EXTERNALSYM ACMDRIVERDETAILS_LICENSING_CHARS }
  379. ACMDRIVERDETAILS_LICENSING_CHARS = 128;
  380. {$EXTERNALSYM ACMDRIVERDETAILS_FEATURES_CHARS }
  381. ACMDRIVERDETAILS_FEATURES_CHARS = 512;
  382. type
  383. pACMDRIVERDETAILSA = ^ACMDRIVERDETAILSA;
  384. {$EXTERNALSYM ACMDRIVERDETAILSA }
  385. ACMDRIVERDETAILSA = record
  386. cbStruct : DWORD; // number of valid bytes in structure
  387. fccType : FOURCC; // compressor type 'audc'
  388. fccComp : FOURCC; // sub-type (not used; reserved)
  389. wMid : WORD; // manufacturer id
  390. wPid : WORD; // product id
  391. vdwACM : DWORD; // version of the ACM *compiled* for
  392. vdwDriver : DWORD; // version of the driver
  393. fdwSupport : DWORD; // misc. support flags
  394. cFormatTags : DWORD; // total unique format tags supported
  395. cFilterTags : DWORD; // total unique filter tags supported
  396. hicon : HICON; // handle to custom icon
  397. szShortName : array[0..ACMDRIVERDETAILS_SHORTNAME_CHARS - 1] of aChar;
  398. szLongName : array[0..ACMDRIVERDETAILS_LONGNAME_CHARS - 1] of aChar;
  399. szCopyright : array[0..ACMDRIVERDETAILS_COPYRIGHT_CHARS - 1] of aChar;
  400. szLicensing : array[0..ACMDRIVERDETAILS_LICENSING_CHARS - 1] of aChar;
  401. szFeatures : array[0..ACMDRIVERDETAILS_FEATURES_CHARS - 1] of aChar;
  402. end;
  403. pACMDRIVERDETAILSW = ^ACMDRIVERDETAILSW;
  404. {$EXTERNALSYM ACMDRIVERDETAILSW }
  405. ACMDRIVERDETAILSW = record
  406. cbStruct : DWORD; // number of valid bytes in structure
  407. fccType : FOURCC; // compressor type 'audc'
  408. fccComp : FOURCC; // sub-type (not used; reserved)
  409. wMid : WORD; // manufacturer id
  410. wPid : WORD; // product id
  411. vdwACM : DWORD; // version of the ACM *compiled* for
  412. vdwDriver : DWORD; // version of the driver
  413. fdwSupport : DWORD; // misc. support flags
  414. cFormatTags : DWORD; // total unique format tags supported
  415. cFilterTags : DWORD; // total unique filter tags supported
  416. hicon : HICON; // handle to custom icon
  417. szShortName : array[0..ACMDRIVERDETAILS_SHORTNAME_CHARS - 1] of wChar;
  418. szLongName : array[0..ACMDRIVERDETAILS_LONGNAME_CHARS - 1] of wChar;
  419. szCopyright : array[0..ACMDRIVERDETAILS_COPYRIGHT_CHARS - 1] of wChar;
  420. szLicensing : array[0..ACMDRIVERDETAILS_LICENSING_CHARS - 1] of wChar;
  421. szFeatures : array[0..ACMDRIVERDETAILS_FEATURES_CHARS - 1] of wChar;
  422. end;
  423. {$EXTERNALSYM ACMDRIVERDETAILS }
  424. ACMDRIVERDETAILS = ACMDRIVERDETAILSA;
  425. pACMDRIVERDETAILS = pACMDRIVERDETAILSA;
  426. // ACMDRIVERDETAILS.fccType
  427. //
  428. // ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC: the FOURCC used in the fccType
  429. // field of the ACMDRIVERDETAILS structure to specify that this is an ACM
  430. // codec designed for audio.
  431. // ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC = mmioFOURCC('a', 'u', 'd', 'c');
  432. {$EXTERNALSYM ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC }
  433. function ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC(): FOURCC;
  434. const
  435. // ACMDRIVERDETAILS.fccComp
  436. //
  437. // ACMDRIVERDETAILS_FCCCOMP_UNDEFINED: the FOURCC used in the fccComp
  438. // field of the ACMDRIVERDETAILS structure. this is currently an unused
  439. // field.
  440. //
  441. {$EXTERNALSYM ACMDRIVERDETAILS_FCCCOMP_UNDEFINED }
  442. ACMDRIVERDETAILS_FCCCOMP_UNDEFINED = 0;
  443. const
  444. //
  445. // the following flags are used to specify the type of conversion(s) that
  446. // the converter/codec/filter supports. these are placed in the fdwSupport
  447. // field of the ACMDRIVERDETAILS structure. note that a converter can
  448. // support one or more of these flags in any combination.
  449. //
  450. // ACMDRIVERDETAILS_SUPPORTF_CODEC: this flag is set if the driver supports
  451. // conversions from one format tag to another format tag. for example, if a
  452. // converter compresses WAVE_FORMAT_PCM to WAVE_FORMAT_ADPCM, then this bit
  453. // should be set.
  454. //
  455. {$EXTERNALSYM ACMDRIVERDETAILS_SUPPORTF_CODEC }
  456. ACMDRIVERDETAILS_SUPPORTF_CODEC = $00000001;
  457. // ACMDRIVERDETAILS_SUPPORTF_CONVERTER: this flags is set if the driver
  458. // supports conversions on the same format tag. as an example, the PCM
  459. // converter that is built into the ACM sets this bit (and only this bit)
  460. // because it converts only PCM formats (bits, sample rate).
  461. {$EXTERNALSYM ACMDRIVERDETAILS_SUPPORTF_CONVERTER }
  462. ACMDRIVERDETAILS_SUPPORTF_CONVERTER = $00000002;
  463. // ACMDRIVERDETAILS_SUPPORTF_FILTER: this flag is set if the driver supports
  464. // transformations on a single format. for example, a converter that changed
  465. // the 'volume' of PCM data would set this bit. 'echo' and 'reverb' are
  466. // also filter types.
  467. {$EXTERNALSYM ACMDRIVERDETAILS_SUPPORTF_FILTER }
  468. ACMDRIVERDETAILS_SUPPORTF_FILTER = $00000004;
  469. // ACMDRIVERDETAILS_SUPPORTF_HARDWARE: this flag is set if the driver supports
  470. // hardware input and/or output through a waveform device.
  471. {$EXTERNALSYM ACMDRIVERDETAILS_SUPPORTF_HARDWARE }
  472. ACMDRIVERDETAILS_SUPPORTF_HARDWARE = $00000008;
  473. // ACMDRIVERDETAILS_SUPPORTF_ASYNC: this flag is set if the driver supports
  474. // async conversions.
  475. {$EXTERNALSYM ACMDRIVERDETAILS_SUPPORTF_ASYNC }
  476. ACMDRIVERDETAILS_SUPPORTF_ASYNC = $00000010;
  477. //
  478. // ACMDRIVERDETAILS_SUPPORTF_LOCAL: this flag is set _by the ACM_ if a
  479. // driver has been installed local to the current task. this flag is also
  480. // set in the fdwSupport argument to the enumeration callback function
  481. // for drivers.
  482. {$EXTERNALSYM ACMDRIVERDETAILS_SUPPORTF_LOCAL }
  483. ACMDRIVERDETAILS_SUPPORTF_LOCAL = $40000000;
  484. // ACMDRIVERDETAILS_SUPPORTF_DISABLED: this flag is set _by the ACM_ if a
  485. // driver has been disabled. this flag is also passed set in the fdwSupport
  486. // argument to the enumeration callback function for drivers.
  487. {$EXTERNALSYM ACMDRIVERDETAILS_SUPPORTF_DISABLED }
  488. ACMDRIVERDETAILS_SUPPORTF_DISABLED = $80000000;
  489. {$EXTERNALSYM acm_DriverDetailsA }
  490. function acm_driverDetailsA(hadid: hACMDRIVERID; padd: pACMDRIVERDETAILSA; fdwDetails: DWORD): MMRESULT; stdcall;
  491. {$EXTERNALSYM acm_DriverDetailsW }
  492. function acm_driverDetailsW(hadid: hACMDRIVERID; padd: pACMDRIVERDETAILSW; fdwDetails: DWORD): MMRESULT; stdcall;
  493. {$EXTERNALSYM acm_DriverDetails }
  494. function acm_driverDetails (hadid: hACMDRIVERID; padd: pACMDRIVERDETAILS; fdwDetails: DWORD): MMRESULT; stdcall;
  495. //--------------------------------------------------------------------------
  496. //
  497. // ACM Format Tags
  498. //
  499. const
  500. {$EXTERNALSYM ACMFORMATTAGDETAILS_FORMATTAG_CHARS }
  501. ACMFORMATTAGDETAILS_FORMATTAG_CHARS = 48;
  502. type
  503. pACMFORMATTAGDETAILSA = ^ACMFORMATTAGDETAILSA;
  504. {$EXTERNALSYM ACMFORMATTAGDETAILSA }
  505. ACMFORMATTAGDETAILSA = record
  506. cbStruct : DWORD;
  507. dwFormatTagIndex : DWORD;
  508. dwFormatTag : DWORD;
  509. cbFormatSize : DWORD;
  510. fdwSupport : DWORD;
  511. cStandardFormats : DWORD;
  512. szFormatTag : array[0..ACMFORMATTAGDETAILS_FORMATTAG_CHARS - 1] of aChar;
  513. end;
  514. pACMFORMATTAGDETAILSW = ^ACMFORMATTAGDETAILSW;
  515. {$EXTERNALSYM ACMFORMATTAGDETAILSW }
  516. ACMFORMATTAGDETAILSW = record
  517. cbStruct : DWORD;
  518. dwFormatTagIndex : DWORD;
  519. dwFormatTag : DWORD;
  520. cbFormatSize : DWORD;
  521. fdwSupport : DWORD;
  522. cStandardFormats : DWORD;
  523. szFormatTag : array[0..ACMFORMATTAGDETAILS_FORMATTAG_CHARS - 1] of wChar;
  524. end;
  525. {$EXTERNALSYM ACMFORMATTAGDETAILS }
  526. ACMFORMATTAGDETAILS = ACMFORMATTAGDETAILSA;
  527. pACMFORMATTAGDETAILS = pACMFORMATTAGDETAILSA;
  528. {$EXTERNALSYM acm_FormatTagDetailsA }
  529. function acm_formatTagDetailsA(had: HACMDRIVER; paftd: pACMFORMATTAGDETAILSA; fdwDetails: DWORD): MMRESULT; stdcall;
  530. {$EXTERNALSYM acm_FormatTagDetailsW }
  531. function acm_formatTagDetailsW(had: HACMDRIVER; paftd: pACMFORMATTAGDETAILSW; fdwDetails: DWORD): MMRESULT; stdcall;
  532. {$EXTERNALSYM acm_FormatTagDetails }
  533. function acm_formatTagDetails (had: HACMDRIVER; paftd: pACMFORMATTAGDETAILS; fdwDetails: DWORD): MMRESULT; stdcall;
  534. const
  535. {$EXTERNALSYM ACM_FORMATTAGDETAILSF_INDEX }
  536. ACM_FORMATTAGDETAILSF_INDEX = $00000000;
  537. {$EXTERNALSYM ACM_FORMATTAGDETAILSF_FORMATTAG }
  538. ACM_FORMATTAGDETAILSF_FORMATTAG = $00000001;
  539. {$EXTERNALSYM ACM_FORMATTAGDETAILSF_LARGESTSIZE }
  540. ACM_FORMATTAGDETAILSF_LARGESTSIZE = $00000002;
  541. {$EXTERNALSYM ACM_FORMATTAGDETAILSF_QUERYMASK }
  542. ACM_FORMATTAGDETAILSF_QUERYMASK = $0000000F;
  543. type
  544. {$EXTERNALSYM ACMFORMATTAGENUMCBA }
  545. ACMFORMATTAGENUMCBA = function(hadid: HACMDRIVERID; paftd: pACMFORMATTAGDETAILSA; dwInstance: DWORD; fdwSupport: DWORD): Windows.BOOL; stdcall;
  546. {$EXTERNALSYM ACMFORMATTAGENUMCBW }
  547. ACMFORMATTAGENUMCBW = function(hadid: HACMDRIVERID; paftd: pACMFORMATTAGDETAILSW; dwInstance: DWORD; fdwSupport: DWORD): Windows.BOOL; stdcall;
  548. {$EXTERNALSYM ACMFORMATTAGENUMCB }
  549. ACMFORMATTAGENUMCB = ACMFORMATTAGENUMCBA;
  550. {$EXTERNALSYM acm_FormatTagEnumA }
  551. function acm_formatTagEnumA(had: HACMDRIVER; paftd: pACMFORMATTAGDETAILSA; fnCallback: ACMFORMATTAGENUMCBA; dwInstance: DWORD; fdwEnum: DWORD): MMRESULT; stdcall;
  552. {$EXTERNALSYM acm_FormatTagEnumW }
  553. function acm_formatTagEnumW(had: HACMDRIVER; paftd: pACMFORMATTAGDETAILSW; fnCallback: ACMFORMATTAGENUMCBW; dwInstance: DWORD; fdwEnum: DWORD): MMRESULT; stdcall;
  554. {$EXTERNALSYM acm_FormatTagEnum }
  555. function acm_formatTagEnum (had: HACMDRIVER; paftd: pACMFORMATTAGDETAILS; fnCallback: ACMFORMATTAGENUMCB; dwInstance: DWORD; fdwEnum: DWORD): MMRESULT; stdcall;
  556. //--------------------------------------------------------------------------;
  557. //
  558. // ACM Formats
  559. //
  560. const
  561. {$EXTERNALSYM ACMFORMATDETAILS_FORMAT_CHARS }
  562. ACMFORMATDETAILS_FORMAT_CHARS = 128;
  563. type
  564. pACMFORMATDETAILSA = ^ACMFORMATDETAILSA;
  565. {$EXTERNALSYM ACMFORMATDETAILSA }
  566. ACMFORMATDETAILSA = record
  567. cbStruct : DWORD;
  568. dwFormatIndex : DWORD;
  569. dwFormatTag : DWORD;
  570. fdwSupport : DWORD;
  571. pwfx : PWAVEFORMATEX;
  572. cbwfx : DWORD;
  573. szFormat : array[0..ACMFORMATDETAILS_FORMAT_CHARS - 1] of aChar;
  574. end;
  575. pACMFORMATDETAILSW = ^ACMFORMATDETAILSW;
  576. {$EXTERNALSYM ACMFORMATDETAILSW }
  577. ACMFORMATDETAILSW = record
  578. cbStruct : DWORD;
  579. dwFormatIndex : DWORD;
  580. dwFormatTag : DWORD;
  581. fdwSupport : DWORD;
  582. pwfx : PWAVEFORMATEX;
  583. cbwfx : DWORD;
  584. szFormat : array[0..ACMFORMATDETAILS_FORMAT_CHARS - 1] of wChar;
  585. end;
  586. type
  587. pACMFORMATDETAILS = pACMFORMATDETAILSA;
  588. {$EXTERNALSYM ACMFORMATDETAILS }
  589. ACMFORMATDETAILS = ACMFORMATDETAILSA;
  590. {$EXTERNALSYM acm_FormatDetailsA }
  591. function acm_formatDetailsA(had: HACMDRIVER; pafd: pACMFORMATDETAILSA; fdwDetails: DWORD): MMRESULT; stdcall;
  592. {$EXTERNALSYM acm_FormatDetailsW }
  593. function acm_formatDetailsW(had: HACMDRIVER; pafd: pACMFORMATDETAILSW; fdwDetails: DWORD): MMRESULT; stdcall;
  594. {$EXTERNALSYM acm_FormatDetails }
  595. function acm_formatDetails (had: HACMDRIVER; pafd: pACMFORMATDETAILS; fdwDetails: DWORD): MMRESULT; stdcall;
  596. const
  597. {$EXTERNALSYM ACM_FORMATDETAILSF_INDEX }
  598. ACM_FORMATDETAILSF_INDEX = $00000000;
  599. {$EXTERNALSYM ACM_FORMATDETAILSF_FORMAT }
  600. ACM_FORMATDETAILSF_FORMAT = $00000001;
  601. {$EXTERNALSYM ACM_FORMATDETAILSF_QUERYMASK }
  602. ACM_FORMATDETAILSF_QUERYMASK = $0000000F;
  603. type
  604. {$EXTERNALSYM ACMFORMATENUMCBA }
  605. ACMFORMATENUMCBA = function(hadid: HACMDRIVERID; pafd: pACMFORMATDETAILSA; dwInstance: DWORD; fdwSupport: DWORD): Windows.BOOL; stdcall;
  606. {$EXTERNALSYM ACMFORMATENUMCBW }
  607. ACMFORMATENUMCBW = function(hadid: HACMDRIVERID; pafd: pACMFORMATDETAILSW; dwInstance: DWORD; fdwSupport: DWORD): Windows.BOOL; stdcall;
  608. {$EXTERNALSYM ACMFORMATENUMCB }
  609. ACMFORMATENUMCB = ACMFORMATENUMCBA;
  610. {$EXTERNALSYM acm_FormatEnumA }
  611. function acm_formatEnumA(had: HACMDRIVER; pafd: pACMFORMATDETAILSA; fnCallback: ACMFORMATENUMCBA; dwInstance: DWORD; fdwEnum: DWORD): MMRESULT; stdcall;
  612. {$EXTERNALSYM acm_FormatEnumW }
  613. function acm_formatEnumW(had: HACMDRIVER; pafd: pACMFORMATDETAILSW; fnCallback: ACMFORMATENUMCBW; dwInstance: DWORD; fdwEnum: DWORD): MMRESULT; stdcall;
  614. {$EXTERNALSYM acm_FormatEnum }
  615. function acm_formatEnum (had: HACMDRIVER; pafd: pACMFORMATDETAILS; fnCallback: ACMFORMATENUMCB; dwInstance: DWORD; fdwEnum: DWORD): MMRESULT; stdcall;
  616. const
  617. {$EXTERNALSYM ACM_FORMATENUMF_WFORMATTAG }
  618. ACM_FORMATENUMF_WFORMATTAG = $00010000;
  619. {$EXTERNALSYM ACM_FORMATENUMF_NCHANNELS }
  620. ACM_FORMATENUMF_NCHANNELS = $00020000;
  621. {$EXTERNALSYM ACM_FORMATENUMF_NSAMPLESPERSEC }
  622. ACM_FORMATENUMF_NSAMPLESPERSEC = $00040000;
  623. {$EXTERNALSYM ACM_FORMATENUMF_WBITSPERSAMPLE }
  624. ACM_FORMATENUMF_WBITSPERSAMPLE = $00080000;
  625. {$EXTERNALSYM ACM_FORMATENUMF_CONVERT }
  626. ACM_FORMATENUMF_CONVERT = $00100000;
  627. {$EXTERNALSYM ACM_FORMATENUMF_SUGGEST }
  628. ACM_FORMATENUMF_SUGGEST = $00200000;
  629. {$EXTERNALSYM ACM_FORMATENUMF_HARDWARE }
  630. ACM_FORMATENUMF_HARDWARE = $00400000;
  631. {$EXTERNALSYM ACM_FORMATENUMF_INPUT }
  632. ACM_FORMATENUMF_INPUT = $00800000;
  633. {$EXTERNALSYM ACM_FORMATENUMF_OUTPUT }
  634. ACM_FORMATENUMF_OUTPUT = $01000000;
  635. {$EXTERNALSYM acm_FormatSuggest }
  636. function acm_formatSuggest(had: HACMDRIVER; pwfxSrc: pWAVEFORMATEX; pwfxDst: pWAVEFORMATEX; cbwfxDst: DWORD; fdwSuggest: DWORD): MMRESULT; stdcall;
  637. const
  638. {$EXTERNALSYM ACM_FORMATSUGGESTF_WFORMATTAG }
  639. ACM_FORMATSUGGESTF_WFORMATTAG = $00010000;
  640. {$EXTERNALSYM ACM_FORMATSUGGESTF_NCHANNELS }
  641. ACM_FORMATSUGGESTF_NCHANNELS = $00020000;
  642. {$EXTERNALSYM ACM_FORMATSUGGESTF_NSAMPLESPERSEC }
  643. ACM_FORMATSUGGESTF_NSAMPLESPERSEC = $00040000;
  644. {$EXTERNALSYM ACM_FORMATSUGGESTF_WBITSPERSAMPLE }
  645. ACM_FORMATSUGGESTF_WBITSPERSAMPLE = $00080000;
  646. {$EXTERNALSYM ACM_FORMATSUGGESTF_TYPEMASK }
  647. ACM_FORMATSUGGESTF_TYPEMASK = $00FF0000;
  648. {$EXTERNALSYM ACMHELPMSGSTRINGA }
  649. ACMHELPMSGSTRINGA = 'acmchoose_help';
  650. {$EXTERNALSYM ACMHELPMSGSTRINGW }
  651. ACMHELPMSGSTRINGW = 'acmchoose_help';
  652. {$EXTERNALSYM ACMHELPMSGCONTEXTMENUA }
  653. ACMHELPMSGCONTEXTMENUA = 'acmchoose_contextmenu';
  654. {$EXTERNALSYM ACMHELPMSGCONTEXTMENUW }
  655. ACMHELPMSGCONTEXTMENUW = 'acmchoose_contextmenu';
  656. {$EXTERNALSYM ACMHELPMSGCONTEXTHELPA }
  657. ACMHELPMSGCONTEXTHELPA = 'acmchoose_contexthelp';
  658. {$EXTERNALSYM ACMHELPMSGCONTEXTHELPW }
  659. ACMHELPMSGCONTEXTHELPW = 'acmchoose_contexthelp';
  660. {$EXTERNALSYM ACMHELPMSGSTRING }
  661. ACMHELPMSGSTRING = ACMHELPMSGSTRINGA;
  662. {$EXTERNALSYM ACMHELPMSGCONTEXTMENU }
  663. ACMHELPMSGCONTEXTMENU = ACMHELPMSGCONTEXTMENUA;
  664. {$EXTERNALSYM ACMHELPMSGCONTEXTHELP }
  665. ACMHELPMSGCONTEXTHELP = ACMHELPMSGCONTEXTHELPA;
  666. {$EXTERNALSYM MM_ACM_FORMATCHOOSE }
  667. MM_ACM_FORMATCHOOSE = ($8000);
  668. {$EXTERNALSYM FORMATCHOOSE_MESSAGE }
  669. FORMATCHOOSE_MESSAGE = 0;
  670. {$EXTERNALSYM FORMATCHOOSE_FORMATTAG_VERIFY }
  671. FORMATCHOOSE_FORMATTAG_VERIFY = (FORMATCHOOSE_MESSAGE + 0);
  672. {$EXTERNALSYM FORMATCHOOSE_FORMAT_VERIFY }
  673. FORMATCHOOSE_FORMAT_VERIFY = (FORMATCHOOSE_MESSAGE + 1);
  674. {$EXTERNALSYM FORMATCHOOSE_CUSTOM_VERIFY }
  675. FORMATCHOOSE_CUSTOM_VERIFY = (FORMATCHOOSE_MESSAGE + 2);
  676. type
  677. {$EXTERNALSYM ACMFORMATCHOOSEHOOKPROCA }
  678. ACMFORMATCHOOSEHOOKPROCA = function(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): UINT; stdcall;
  679. {$EXTERNALSYM ACMFORMATCHOOSEHOOKPROCW }
  680. ACMFORMATCHOOSEHOOKPROCW = function(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): UINT; stdcall;
  681. {$EXTERNALSYM ACMFORMATCHOOSEHOOKPROC }
  682. ACMFORMATCHOOSEHOOKPROC = ACMFORMATCHOOSEHOOKPROCA;
  683. pACMFORMATCHOOSEA = ^ACMFORMATCHOOSEA;
  684. {$EXTERNALSYM ACMFORMATCHOOSEA }
  685. ACMFORMATCHOOSEA = record
  686. cbStruct : DWORD; // sizeof(ACMFORMATCHOOSE)
  687. fdwStyle : DWORD; // chooser style flags
  688. hwndOwner : hWND; // caller's window handle
  689. pwfx : pWAVEFORMATEX; // ptr to wfx buf to receive choice
  690. cbwfx : DWORD; // size of mem buf for pwfx
  691. pszTitle : LPCSTR; // dialog box title bar
  692. szFormatTag : array[0..ACMFORMATTAGDETAILS_FORMATTAG_CHARS-1] of aChar;
  693. szFormat : array[0..ACMFORMATDETAILS_FORMAT_CHARS-1] of aChar;
  694. pszName : LPSTR; // custom name selection
  695. cchName : DWORD; // size in chars of mem buf for pszName
  696. fdwEnum : DWORD; // format enumeration restrictions
  697. pwfxEnum : pWAVEFORMATEX; // format describing restrictions
  698. hInstance : tHandle; // app instance containing dlg template
  699. pszTemplateName : LPCSTR; // custom template name
  700. lCustData : LPARAM; // data passed to hook fn.
  701. pfnHook : ACMFORMATCHOOSEHOOKPROCA; // ptr to hook function
  702. end;
  703. pACMFORMATCHOOSEW = ^ACMFORMATCHOOSEW;
  704. {$EXTERNALSYM ACMFORMATCHOOSEW }
  705. ACMFORMATCHOOSEW = record
  706. cbStruct : DWORD; // sizeof(ACMFORMATCHOOSE)
  707. fdwStyle : DWORD; // chooser style flags
  708. hwndOwner : hWND; // caller's window handle
  709. pwfx : pWAVEFORMATEX; // ptr to wfx buf to receive choice
  710. cbwfx : DWORD; // size of mem buf for pwfx
  711. pszTitle : LPCWSTR; // dialog box title bar
  712. szFormatTag : array[0..ACMFORMATTAGDETAILS_FORMATTAG_CHARS-1] of wChar;
  713. szFormat : array[0..ACMFORMATDETAILS_FORMAT_CHARS-1] of wChar;
  714. pszName : LPWSTR; // custom name selection
  715. cchName : DWORD; // size in chars of mem buf for pszName
  716. fdwEnum : DWORD; // format enumeration restrictions
  717. pwfxEnum : PWAVEFORMATEX; // format describing restrictions
  718. hInstance : tHandle; // app instance containing dlg template
  719. pszTemplateName : LPCWSTR; // custom template name
  720. lCustData : LPARAM; // data passed to hook fn.
  721. pfnHook : ACMFORMATCHOOSEHOOKPROCW; // ptr to hook function
  722. end;
  723. {$EXTERNALSYM ACMFORMATCHOOSE }
  724. ACMFORMATCHOOSE = ACMFORMATCHOOSEA;
  725. pACMFORMATCHOOSE = pACMFORMATCHOOSEA;
  726. const
  727. {$EXTERNALSYM ACMFORMATCHOOSE_STYLEF_SHOWHELP }
  728. ACMFORMATCHOOSE_STYLEF_SHOWHELP = $00000004;
  729. {$EXTERNALSYM ACMFORMATCHOOSE_STYLEF_ENABLEHOOK }
  730. ACMFORMATCHOOSE_STYLEF_ENABLEHOOK = $00000008;
  731. {$EXTERNALSYM ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE }
  732. ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE = $00000010;
  733. {$EXTERNALSYM ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE }
  734. ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE = $00000020;
  735. {$EXTERNALSYM ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT }
  736. ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT = $00000040;
  737. {$EXTERNALSYM ACMFORMATCHOOSE_STYLEF_CONTEXTHELP }
  738. ACMFORMATCHOOSE_STYLEF_CONTEXTHELP = $00000080;
  739. {$EXTERNALSYM acm_FormatChooseA }
  740. function acm_formatChooseA(pafmtc: pACMFORMATCHOOSEA): MMRESULT; stdcall;
  741. {$EXTERNALSYM acm_FormatChooseW }
  742. function acm_formatChooseW(pafmtc: pACMFORMATCHOOSEW): MMRESULT; stdcall;
  743. {$EXTERNALSYM acm_FormatChoose }
  744. function acm_formatChoose (pafmtc: pACMFORMATCHOOSE ): MMRESULT; stdcall;
  745. //--------------------------------------------------------------------------;
  746. //
  747. // ACM Filter Tags
  748. //
  749. const
  750. {$EXTERNALSYM ACMFILTERTAGDETAILS_FILTERTAG_CHARS }
  751. ACMFILTERTAGDETAILS_FILTERTAG_CHARS = 48;
  752. type
  753. pACMFILTERTAGDETAILSA = ^ACMFILTERTAGDETAILSA;
  754. {$EXTERNALSYM ACMFILTERTAGDETAILSA }
  755. ACMFILTERTAGDETAILSA = record
  756. cbStruct : DWORD;
  757. dwFilterTagIndex : DWORD;
  758. dwFilterTag : DWORD;
  759. cbFilterSize : DWORD;
  760. fdwSupport : DWORD;
  761. cStandardFilters : DWORD;
  762. szFilterTag : array[0..ACMFILTERTAGDETAILS_FILTERTAG_CHARS - 1] of aChar;
  763. end;
  764. pACMFILTERTAGDETAILSW = ^ACMFILTERTAGDETAILSW;
  765. {$EXTERNALSYM ACMFILTERTAGDETAILSW }
  766. ACMFILTERTAGDETAILSW = record
  767. cbStruct : DWORD;
  768. dwFilterTagIndex : DWORD;
  769. dwFilterTag : DWORD;
  770. cbFilterSize : DWORD;
  771. fdwSupport : DWORD;
  772. cStandardFilters : DWORD;
  773. szFilterTag : array[0..ACMFILTERTAGDETAILS_FILTERTAG_CHARS - 1] of wChar;
  774. end;
  775. {$EXTERNALSYM ACMFILTERTAGDETAILS }
  776. ACMFILTERTAGDETAILS = ACMFILTERTAGDETAILSA;
  777. pACMFILTERTAGDETAILS = pACMFILTERTAGDETAILSA;
  778. {$EXTERNALSYM acm_FilterTagDetailsA }
  779. function acm_filterTagDetailsA(had: HACMDRIVER; paftd: pACMFILTERTAGDETAILSA; fdwDetails: DWORD): MMRESULT; stdcall;
  780. {$EXTERNALSYM acm_FilterTagDetailsW }
  781. function acm_filterTagDetailsW(had: HACMDRIVER; paftd: pACMFILTERTAGDETAILSW; fdwDetails: DWORD): MMRESULT; stdcall;
  782. {$EXTERNALSYM acm_FilterTagDetails }
  783. function acm_filterTagDetails (had: HACMDRIVER; paftd: pACMFILTERTAGDETAILS; fdwDetails: DWORD): MMRESULT; stdcall;
  784. const
  785. {$EXTERNALSYM ACM_FILTERTAGDETAILSF_INDEX }
  786. ACM_FILTERTAGDETAILSF_INDEX = $00000000;
  787. {$EXTERNALSYM ACM_FILTERTAGDETAILSF_FILTERTAG }
  788. ACM_FILTERTAGDETAILSF_FILTERTAG = $00000001;
  789. {$EXTERNALSYM ACM_FILTERTAGDETAILSF_LARGESTSIZE }
  790. ACM_FILTERTAGDETAILSF_LARGESTSIZE = $00000002;
  791. {$EXTERNALSYM ACM_FILTERTAGDETAILSF_QUERYMASK }
  792. ACM_FILTERTAGDETAILSF_QUERYMASK = $0000000F;
  793. type
  794. {$EXTERNALSYM ACMFILTERTAGENUMCBA }
  795. ACMFILTERTAGENUMCBA = function(hadid: HACMDRIVERID; paftd: pACMFILTERTAGDETAILSA; dwInstance: DWORD; fdwSupport: DWORD): Windows.BOOL; stdcall;
  796. {$EXTERNALSYM ACMFILTERTAGENUMCBW }
  797. ACMFILTERTAGENUMCBW = function(hadid: HACMDRIVERID; paftd: pACMFILTERTAGDETAILSW; dwInstance: DWORD; fdwSupport: DWORD): Windows.BOOL; stdcall;
  798. {$EXTERNALSYM ACMFILTERTAGENUMCB }
  799. ACMFILTERTAGENUMCB = ACMFILTERTAGENUMCBA;
  800. {$EXTERNALSYM acm_FilterTagEnumA }
  801. function acm_filterTagEnumA(had: HACMDRIVER; paftd: pACMFILTERTAGDETAILSA; fnCallback: ACMFILTERTAGENUMCBA; dwInstance: DWORD; fdwEnum: DWORD): MMRESULT; stdcall;
  802. {$EXTERNALSYM acm_FilterTagEnumW }
  803. function acm_filterTagEnumW(had: HACMDRIVER; paftd: pACMFILTERTAGDETAILSW; fnCallback: ACMFILTERTAGENUMCBW; dwInstance: DWORD; fdwEnum: DWORD): MMRESULT; stdcall;
  804. {$EXTERNALSYM acm_FilterTagEnum }
  805. function acm_filterTagEnum (had: HACMDRIVER; paftd: pACMFILTERTAGDETAILS; fnCallback: ACMFILTERTAGENUMCB; dwInstance: DWORD; fdwEnum: DWORD): MMRESULT; stdcall;
  806. //--------------------------------------------------------------------------;
  807. //
  808. // ACM Filters
  809. //
  810. const
  811. {$EXTERNALSYM ACMFILTERDETAILS_FILTER_CHARS }
  812. ACMFILTERDETAILS_FILTER_CHARS = 128;
  813. type
  814. pACMFILTERDETAILSA = ^ACMFILTERDETAILSA;
  815. {$EXTERNALSYM ACMFILTERDETAILSA }
  816. ACMFILTERDETAILSA = record
  817. cbStruct : DWORD;
  818. dwFilterIndex : DWORD;
  819. dwFilterTag : DWORD;
  820. fdwSupport : DWORD;
  821. pwfltr : pWAVEFILTER;
  822. cbwfltr : DWORD;
  823. szFilter : array[0..ACMFILTERDETAILS_FILTER_CHARS - 1] of aChar;
  824. end;
  825. pACMFILTERDETAILSW = ^ACMFILTERDETAILSW;
  826. {$EXTERNALSYM ACMFILTERDETAILSW }
  827. ACMFILTERDETAILSW = record
  828. cbStruct : DWORD;
  829. dwFilterIndex : DWORD;
  830. dwFilterTag : DWORD;
  831. fdwSupport : DWORD;
  832. pwfltr : pWAVEFILTER;
  833. cbwfltr : DWORD;
  834. szFilter : array[0..ACMFILTERDETAILS_FILTER_CHARS - 1] of wChar;
  835. end;
  836. {$EXTERNALSYM ACMFILTERDETAILS }
  837. ACMFILTERDETAILS = ACMFILTERDETAILSA;
  838. pACMFILTERDETAILS = pACMFILTERDETAILSA;
  839. {$EXTERNALSYM acm_FilterDetailsA }
  840. function acm_filterDetailsA(had: HACMDRIVER; pafd: pACMFILTERDETAILSA; fdwDetails: DWORD): MMRESULT; stdcall;
  841. {$EXTERNALSYM acm_FilterDetailsW }
  842. function acm_filterDetailsW(had: HACMDRIVER; pafd: pACMFILTERDETAILSW; fdwDetails: DWORD): MMRESULT; stdcall;
  843. {$EXTERNALSYM acm_FilterDetails }
  844. function acm_filterDetails (had: HACMDRIVER; pafd: pACMFILTERDETAILS; fdwDetails: DWORD): MMRESULT; stdcall;
  845. const
  846. {$EXTERNALSYM ACM_FILTERDETAILSF_INDEX }
  847. ACM_FILTERDETAILSF_INDEX = $00000000;
  848. {$EXTERNALSYM ACM_FILTERDETAILSF_FILTER }
  849. ACM_FILTERDETAILSF_FILTER = $00000001;
  850. {$EXTERNALSYM ACM_FILTERDETAILSF_QUERYMASK }
  851. ACM_FILTERDETAILSF_QUERYMASK = $0000000F;
  852. type
  853. {$EXTERNALSYM ACMFILTERENUMCBA }
  854. ACMFILTERENUMCBA = function(hadid: hACMDRIVERID; pafd: pACMFILTERDETAILSA; dwInstance: DWORD; fdwSupport: DWORD): Windows.BOOL; stdcall;
  855. {$EXTERNALSYM ACMFILTERENUMCBW }
  856. ACMFILTERENUMCBW = function(hadid: hACMDRIVERID; pafd: pACMFILTERDETAILSW; dwInstance: DWORD; fdwSupport: DWORD): Windows.BOOL; stdcall;
  857. {$EXTERNALSYM ACMFILTERENUMCB }
  858. ACMFILTERENUMCB = ACMFILTERENUMCBA;
  859. {$EXTERNALSYM acm_FilterEnumA }
  860. function acm_filterEnumA(had: HACMDRIVER; pafd: pACMFILTERDETAILSA; fnCallback: ACMFILTERENUMCBA; dwInstance: DWORD; fdwEnum: DWORD): MMRESULT; stdcall;
  861. {$EXTERNALSYM acm_FilterEnumW }
  862. function acm_filterEnumW(had: HACMDRIVER; pafd: pACMFILTERDETAILSW; fnCallback: ACMFILTERENUMCBW; dwInstance: DWORD; fdwEnum: DWORD): MMRESULT; stdcall;
  863. {$EXTERNALSYM acm_FilterEnum }
  864. function acm_filterEnum (had: HACMDRIVER; pafd: pACMFILTERDETAILS; fnCallback: ACMFILTERENUMCB; dwInstance: DWORD; fdwEnum: DWORD): MMRESULT; stdcall;
  865. const
  866. {$EXTERNALSYM ACM_FILTERENUMF_DWFILTERTAG }
  867. ACM_FILTERENUMF_DWFILTERTAG = $00010000;
  868. //
  869. // MM_ACM_FILTERCHOOSE is sent to hook callbacks by the Filter Chooser
  870. // Dialog...
  871. //
  872. {$EXTERNALSYM MM_ACM_FILTERCHOOSE }
  873. MM_ACM_FILTERCHOOSE = ($8000);
  874. {$EXTERNALSYM FILTERCHOOSE_MESSAGE }
  875. FILTERCHOOSE_MESSAGE = 0;
  876. {$EXTERNALSYM FILTERCHOOSE_FILTERTAG_VERIFY }
  877. FILTERCHOOSE_FILTERTAG_VERIFY = (FILTERCHOOSE_MESSAGE+0);
  878. {$EXTERNALSYM FILTERCHOOSE_FILTER_VERIFY }
  879. FILTERCHOOSE_FILTER_VERIFY = (FILTERCHOOSE_MESSAGE+1);
  880. {$EXTERNALSYM FILTERCHOOSE_CUSTOM_VERIFY }
  881. FILTERCHOOSE_CUSTOM_VERIFY = (FILTERCHOOSE_MESSAGE+2);
  882. type
  883. {$EXTERNALSYM ACMFILTERCHOOSEHOOKPROCA }
  884. ACMFILTERCHOOSEHOOKPROCA = function(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): UINT; stdcall;
  885. {$EXTERNALSYM ACMFILTERCHOOSEHOOKPROCW }
  886. ACMFILTERCHOOSEHOOKPROCW = function(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): UINT; stdcall;
  887. {$EXTERNALSYM ACMFILTERCHOOSEHOOKPROC }
  888. ACMFILTERCHOOSEHOOKPROC = ACMFILTERCHOOSEHOOKPROCA;
  889. pACMFILTERCHOOSEA = ^ACMFILTERCHOOSEA;
  890. {$EXTERNALSYM ACMFILTERCHOOSEA }
  891. ACMFILTERCHOOSEA = record
  892. cbStruct : DWORD; // sizeof(ACMFILTERCHOOSE)
  893. fdwStyle : DWORD; // chooser style flags
  894. hwndOwner : hWND; // caller's window handle
  895. pwfltr : pWAVEFILTER; // ptr to wfltr buf to receive choice
  896. cbwfltr : DWORD; // size of mem buf for pwfltr
  897. pszTitle : LPCSTR;
  898. szFilterTag : array[0..ACMFILTERTAGDETAILS_FILTERTAG_CHARS - 1] of aChar;
  899. szFilter : array[0..ACMFILTERDETAILS_FILTER_CHARS - 1] of aChar;
  900. pszName : LPSTR; // custom name selection
  901. cchName : DWORD; // size in chars of mem buf for pszName
  902. fdwEnum : DWORD; // filter enumeration restrictions
  903. pwfltrEnum : pWAVEFILTER; // filter describing restrictions
  904. hInstance : tHandle; // app instance containing dlg template
  905. pszTemplateName : LPCSTR; // custom template name
  906. lCustData : LPARAM; // data passed to hook fn.
  907. pfnHook : ACMFILTERCHOOSEHOOKPROCA; // ptr to hook function
  908. end;
  909. pACMFILTERCHOOSEW = ^ACMFILTERCHOOSEW;
  910. {$EXTERNALSYM ACMFILTERCHOOSEW }
  911. ACMFILTERCHOOSEW = record
  912. cbStruct : DWORD; // sizeof(ACMFILTERCHOOSE)
  913. fdwStyle : DWORD; // chooser style flags
  914. hwndOwner : hWND; // caller's window handle
  915. pwfltr : pWAVEFILTER; // ptr to wfltr buf to receive choice
  916. cbwfltr : DWORD; // size of mem buf for pwfltr
  917. pszTitle : LPCWSTR;
  918. szFilterTag : array[0..ACMFILTERTAGDETAILS_FILTERTAG_CHARS - 1] of wChar;
  919. szFilter : array[0..ACMFILTERDETAILS_FILTER_CHARS - 1] of wChar;
  920. pszName : LPWSTR; // custom name selection
  921. cchName : DWORD; // size in chars of mem buf for pszName
  922. fdwEnum : DWORD; // filter enumeration restrictions
  923. pwfltrEnum : pWAVEFILTER; // filter describing restrictions
  924. hInstance : tHandle; // app instance containing dlg template
  925. pszTemplateName : LPCWSTR; // custom template name
  926. lCustData : LPARAM; // data passed to hook fn.
  927. pfnHook : ACMFILTERCHOOSEHOOKPROCW; // ptr to hook function
  928. end;
  929. {$EXTERNALSYM ACMFILTERCHOOSE }
  930. ACMFILTERCHOOSE = ACMFILTERCHOOSEA;
  931. pACMFILTERCHOOSE = pACMFILTERCHOOSEA;
  932. const
  933. // ACMFILTERCHOOSE.fdwStyle
  934. {$EXTERNALSYM ACMFILTERCHOOSE_STYLEF_SHOWHELP }
  935. ACMFILTERCHOOSE_STYLEF_SHOWHELP = $00000004;
  936. {$EXTERNALSYM ACMFILTERCHOOSE_STYLEF_ENABLEHOOK }
  937. ACMFILTERCHOOSE_STYLEF_ENABLEHOOK = $00000008;
  938. {$EXTERNALSYM ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE }
  939. ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE = $00000010;
  940. {$EXTERNALSYM ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE }
  941. ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE = $00000020;
  942. {$EXTERNALSYM ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT }
  943. ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT = $00000040;
  944. {$EXTERNALSYM ACMFILTERCHOOSE_STYLEF_CONTEXTHELP }
  945. ACMFILTERCHOOSE_STYLEF_CONTEXTHELP = $00000080;
  946. {$EXTERNALSYM acm_FilterChooseA }
  947. function acm_filterChooseA(pafltrc: pACMFILTERCHOOSEA): MMRESULT; stdcall;
  948. {$EXTERNALSYM acm_FilterChooseW }
  949. function acm_filterChooseW(pafltrc: pACMFILTERCHOOSEW): MMRESULT; stdcall;
  950. {$EXTERNALSYM acm_FilterChoose }
  951. function acm_filterChoose (pafltrc: pACMFILTERCHOOSE): MMRESULT; stdcall;
  952. //--------------------------------------------------------------------------;
  953. //
  954. // ACM Stream API's
  955. const
  956. //#ifdef _WIN64
  957. {$IFDEF CPU64 }
  958. //#define _DRVRESERVED 15
  959. _DRVRESERVED = 15;
  960. //#else
  961. {$ELSE }
  962. //#define _DRVRESERVED 10
  963. _DRVRESERVED = 10;
  964. //#endif // _WIN64
  965. {$ENDIF CPU64 }
  966. type
  967. pACMSTREAMHEADER = ^ACMSTREAMHEADER;
  968. {$EXTERNALSYM ACMSTREAMHEADER }
  969. ACMSTREAMHEADER = record
  970. cbStruct : DWORD; // sizeof(ACMSTREAMHEADER)
  971. fdwStatus : DWORD; // ACMSTREAMHEADER_STATUSF_*
  972. dwUser : DWORD_PTR; // user instance data for hdr
  973. pbSrc : PBYTE;
  974. cbSrcLength : DWORD;
  975. cbSrcLengthUsed : DWORD;
  976. dwSrcUser : DWORD_PTR; // user instance data for src
  977. pbDst : PBYTE;
  978. cbDstLength : DWORD;
  979. cbDstLengthUsed : DWORD;
  980. dwDstUser : DWORD_PTR; // user instance data for dst
  981. dwReservedDriver : array [0.._DRVRESERVED - 1] of DWORD; // driver reserved work space
  982. end;
  983. const
  984. // ACMSTREAMHEADER.fdwStatus
  985. //
  986. // ACMSTREAMHEADER_STATUSF_DONE: done bit for async conversions.
  987. {$EXTERNALSYM ACMSTREAMHEADER_STATUSF_DONE }
  988. ACMSTREAMHEADER_STATUSF_DONE = $00010000;
  989. {$EXTERNALSYM ACMSTREAMHEADER_STATUSF_PREPARED }
  990. ACMSTREAMHEADER_STATUSF_PREPARED = $00020000;
  991. {$EXTERNALSYM ACMSTREAMHEADER_STATUSF_INQUEUE }
  992. ACMSTREAMHEADER_STATUSF_INQUEUE = $00100000;
  993. {$EXTERNALSYM ACM_STREAMOPENF_QUERY }
  994. ACM_STREAMOPENF_QUERY = $00000001;
  995. {$EXTERNALSYM ACM_STREAMOPENF_ASYNC }
  996. ACM_STREAMOPENF_ASYNC = $00000002;
  997. {$EXTERNALSYM ACM_STREAMOPENF_NONREALTIME }
  998. ACM_STREAMOPENF_NONREALTIME = $00000004;
  999. {$EXTERNALSYM ACM_STREAMSIZEF_SOURCE }
  1000. ACM_STREAMSIZEF_SOURCE = $00000000;
  1001. {$EXTERNALSYM ACM_STREAMSIZEF_DESTINATION }
  1002. ACM_STREAMSIZEF_DESTINATION = $00000001;
  1003. {$EXTERNALSYM ACM_STREAMSIZEF_QUERYMASK }
  1004. ACM_STREAMSIZEF_QUERYMASK = $0000000F;
  1005. {$EXTERNALSYM ACM_STREAMCONVERTF_BLOCKALIGN }
  1006. ACM_STREAMCONVERTF_BLOCKALIGN = $00000004;
  1007. {$EXTERNALSYM ACM_STREAMCONVERTF_START }
  1008. ACM_STREAMCONVERTF_START = $00000010;
  1009. {$EXTERNALSYM ACM_STREAMCONVERTF_END }
  1010. ACM_STREAMCONVERTF_END = $00000020;
  1011. {$EXTERNALSYM acm_StreamOpen }
  1012. function acm_streamOpen(phas: pHACMSTREAM; had: HACMDRIVER; pwfxSrc: pWAVEFORMATEX; pwfxdst: pWAVEFORMATEX; pwfltr: pWAVEFILTER; dwCallback: DWORD; dwInstance: DWORD; fdwOpen: DWORD): MMRESULT; stdcall;
  1013. {$EXTERNALSYM acm_StreamClose }
  1014. function acm_streamClose(has: HACMSTREAM; fdwClose: DWORD): MMRESULT; stdcall;
  1015. {$EXTERNALSYM acm_StreamSize }
  1016. function acm_streamSize(has: HACMSTREAM; cbInput: DWORD; var pdwOutputByte: DWORD; fdwSize: DWORD): MMRESULT; stdcall;
  1017. {$EXTERNALSYM acm_StreamReset }
  1018. function acm_streamReset(has: HACMSTREAM; fdwReset: DWORD): MMRESULT; stdcall;
  1019. {$EXTERNALSYM acm_StreamMessage }
  1020. function acm_streamMessage(has: HACMSTREAM; uMsg: UINT; lParam1: LPARAM; lParam2: LPARAM): MMRESULT; stdcall;
  1021. {$EXTERNALSYM acm_StreamConvert }
  1022. function acm_streamConvert(has: HACMSTREAM; pash: pACMSTREAMHEADER; fdwConvert: DWORD): MMRESULT; stdcall;
  1023. {$EXTERNALSYM acm_StreamPrepareHeader }
  1024. function acm_streamPrepareHeader(has: HACMSTREAM; pash: pACMSTREAMHEADER; fdwPrepare: DWORD): MMRESULT; stdcall;
  1025. {$EXTERNALSYM acm_StreamUnprepareHeader }
  1026. function acm_streamUnprepareHeader(has: HACMSTREAM; pash: pACMSTREAMHEADER; fdwUnprepare: DWORD): MMRESULT; stdcall;
  1027. // back to MMREG.H
  1028. const
  1029. {$EXTERNALSYM MM_MICROSOFT }
  1030. {$EXTERNALSYM MM_CREATIVE }
  1031. {$EXTERNALSYM MM_MEDIAVISION }
  1032. {$EXTERNALSYM MM_FUJITSU }
  1033. {$EXTERNALSYM MM_PRAGMATRAX }
  1034. {$EXTERNALSYM MM_CYRIX }
  1035. {$EXTERNALSYM MM_PHILIPS_SPEECH_PROCESSING }
  1036. {$EXTERNALSYM MM_NETXL }
  1037. {$EXTERNALSYM MM_ZYXEL }
  1038. {$EXTERNALSYM MM_BECUBED }
  1039. {$EXTERNALSYM MM_AARDVARK }
  1040. {$EXTERNALSYM MM_BINTEC }
  1041. {$EXTERNALSYM MM_HEWLETT_PACKARD }
  1042. {$EXTERNALSYM MM_ACULAB }
  1043. {$EXTERNALSYM MM_FAITH }
  1044. {$EXTERNALSYM MM_MITEL }
  1045. {$EXTERNALSYM MM_QUANTUM3D }
  1046. {$EXTERNALSYM MM_SNI }
  1047. {$EXTERNALSYM MM_EMU }
  1048. {$EXTERNALSYM MM_ARTISOFT }
  1049. {$EXTERNALSYM MM_TURTLE_BEACH }
  1050. {$EXTERNALSYM MM_IBM }
  1051. {$EXTERNALSYM MM_VOCALTEC }
  1052. {$EXTERNALSYM MM_ROLAND }
  1053. {$EXTERNALSYM MM_DSP_SOLUTIONS }
  1054. {$EXTERNALSYM MM_NEC }
  1055. {$EXTERNALSYM MM_ATI }
  1056. {$EXTERNALSYM MM_WANGLABS }
  1057. {$EXTERNALSYM MM_TANDY }
  1058. {$EXTERNALSYM MM_VOYETRA }
  1059. {$EXTERNALSYM MM_ANTEX }
  1060. {$EXTERNALSYM MM_ICL_PS }
  1061. {$EXTERNALSYM MM_INTEL }
  1062. {$EXTERNALSYM MM_GRAVIS }
  1063. {$EXTERNALSYM MM_VAL }
  1064. {$EXTERNALSYM MM_INTERACTIVE }
  1065. {$EXTERNALSYM MM_YAMAHA }
  1066. {$EXTERNALSYM MM_EVEREX }
  1067. {$EXTERNALSYM MM_ECHO }
  1068. {$EXTERNALSYM MM_SIERRA }
  1069. {$EXTER

Large files files are truncated, but you can click here to view the full file