PageRenderTime 64ms CodeModel.GetById 19ms 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
  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. {$EXTERNALSYM MM_CAT }
  1070. {$EXTERNALSYM MM_APPS }
  1071. {$EXTERNALSYM MM_DSP_GROUP }
  1072. {$EXTERNALSYM MM_MELABS }
  1073. {$EXTERNALSYM MM_COMPUTER_FRIENDS }
  1074. {$EXTERNALSYM MM_ESS }
  1075. {$EXTERNALSYM MM_AUDIOFILE }
  1076. {$EXTERNALSYM MM_MOTOROLA }
  1077. {$EXTERNALSYM MM_CANOPUS }
  1078. {$EXTERNALSYM MM_EPSON }
  1079. {$EXTERNALSYM MM_TRUEVISION }
  1080. {$EXTERNALSYM MM_AZTECH }
  1081. {$EXTERNALSYM MM_VIDEOLOGIC }
  1082. {$EXTERNALSYM MM_SCALACS }
  1083. {$EXTERNALSYM MM_KORG }
  1084. {$EXTERNALSYM MM_APT }
  1085. {$EXTERNALSYM MM_ICS }
  1086. {$EXTERNALSYM MM_ITERATEDSYS }
  1087. {$EXTERNALSYM MM_METHEUS }
  1088. {$EXTERNALSYM MM_LOGITECH }
  1089. {$EXTERNALSYM MM_WINNOV }
  1090. {$EXTERNALSYM MM_NCR }
  1091. {$EXTERNALSYM MM_EXAN }
  1092. {$EXTERNALSYM MM_AST }
  1093. {$EXTERNALSYM MM_WILLOWPOND }
  1094. {$EXTERNALSYM MM_SONICFOUNDRY }
  1095. {$EXTERNALSYM MM_VITEC }
  1096. {$EXTERNALSYM MM_MOSCOM }
  1097. {$EXTERNALSYM MM_SILICONSOFT }
  1098. {$EXTERNALSYM MM_TERRATEC }
  1099. {$EXTERNALSYM MM_MEDIASONIC }
  1100. {$EXTERNALSYM MM_SANYO }
  1101. {$EXTERNALSYM MM_SUPERMAC }
  1102. {$EXTERNALSYM MM_AUDIOPT }
  1103. {$EXTERNALSYM MM_NOGATECH }
  1104. {$EXTERNALSYM MM_SPEECHCOMP }
  1105. {$EXTERNALSYM MM_AHEAD }
  1106. {$EXTERNALSYM MM_DOLBY }
  1107. {$EXTERNALSYM MM_OKI }
  1108. {$EXTERNALSYM MM_AURAVISION }
  1109. {$EXTERNALSYM MM_OLIVETTI }
  1110. {$EXTERNALSYM MM_IOMAGIC }
  1111. {$EXTERNALSYM MM_MATSUSHITA }
  1112. {$EXTERNALSYM MM_CONTROLRES }
  1113. {$EXTERNALSYM MM_XEBEC }
  1114. {$EXTERNALSYM MM_NEWMEDIA }
  1115. {$EXTERNALSYM MM_NMS }
  1116. {$EXTERNALSYM MM_LYRRUS }
  1117. {$EXTERNALSYM MM_COMPUSIC }
  1118. {$EXTERNALSYM MM_OPTI }
  1119. {$EXTERNALSYM MM_ADLACC }
  1120. {$EXTERNALSYM MM_COMPAQ }
  1121. {$EXTERNALSYM MM_DIALOGIC }
  1122. {$EXTERNALSYM MM_INSOFT }
  1123. {$EXTERNALSYM MM_MPTUS }
  1124. {$EXTERNALSYM MM_WEITEK }
  1125. {$EXTERNALSYM MM_LERNOUT_AND_HAUSPIE }
  1126. {$EXTERNALSYM MM_QCIAR }
  1127. {$EXTERNALSYM MM_APPLE }
  1128. {$EXTERNALSYM MM_DIGITAL }
  1129. {$EXTERNALSYM MM_MOTU }
  1130. {$EXTERNALSYM MM_WORKBIT }
  1131. {$EXTERNALSYM MM_OSITECH }
  1132. {$EXTERNALSYM MM_MIRO }
  1133. {$EXTERNALSYM MM_CIRRUSLOGIC }
  1134. {$EXTERNALSYM MM_ISOLUTION }
  1135. {$EXTERNALSYM MM_HORIZONS }
  1136. {$EXTERNALSYM MM_CONCEPTS }
  1137. {$EXTERNALSYM MM_VTG }
  1138. {$EXTERNALSYM MM_RADIUS }
  1139. {$EXTERNALSYM MM_ROCKWELL }
  1140. {$EXTERNALSYM MM_XYZ }
  1141. {$EXTERNALSYM MM_OPCODE }
  1142. {$EXTERNALSYM MM_VOXWARE }
  1143. {$EXTERNALSYM MM_NORTHERN_TELECOM }
  1144. {$EXTERNALSYM MM_APICOM }
  1145. {$EXTERNALSYM MM_GRANDE }
  1146. {$EXTERNALSYM MM_ADDX }
  1147. {$EXTERNALSYM MM_WILDCAT }
  1148. {$EXTERNALSYM MM_RHETOREX }
  1149. {$EXTERNALSYM MM_BROOKTREE }
  1150. {$EXTERNALSYM MM_ENSONIQ }
  1151. {$EXTERNALSYM MM_FAST }
  1152. {$EXTERNALSYM MM_NVIDIA }
  1153. {$EXTERNALSYM MM_OKSORI }
  1154. {$EXTERNALSYM MM_DIACOUSTICS }
  1155. {$EXTERNALSYM MM_GULBRANSEN }
  1156. {$EXTERNALSYM MM_KAY_ELEMETRICS }
  1157. {$EXTERNALSYM MM_CRYSTAL }
  1158. {$EXTERNALSYM MM_SPLASH_STUDIOS }
  1159. {$EXTERNALSYM MM_QUARTERDECK }
  1160. {$EXTERNALSYM MM_TDK }
  1161. {$EXTERNALSYM MM_DIGITAL_AUDIO_LABS }
  1162. {$EXTERNALSYM MM_SEERSYS }
  1163. {$EXTERNALSYM MM_PICTURETEL }
  1164. {$EXTERNALSYM MM_ATT_MICROELECTRONICS }
  1165. {$EXTERNALSYM MM_OSPREY }
  1166. {$EXTERNALSYM MM_MEDIATRIX }
  1167. {$EXTERNALSYM MM_SOUNDESIGNS }
  1168. {$EXTERNALSYM MM_ALDIGITAL }
  1169. {$EXTERNALSYM MM_SPECTRUM_SIGNAL_PROCESSING }
  1170. {$EXTERNALSYM MM_ECS }
  1171. {$EXTERNALSYM MM_AMD }
  1172. {$EXTERNALSYM MM_COREDYNAMICS }
  1173. {$EXTERNALSYM MM_CANAM }
  1174. {$EXTERNALSYM MM_SOFTSOUND }
  1175. {$EXTERNALSYM MM_NORRIS }
  1176. {$EXTERNALSYM MM_DDD }
  1177. {$EXTERNALSYM MM_EUPHONICS }
  1178. {$EXTERNALSYM MM_PRECEPT }
  1179. {$EXTERNALSYM MM_CRYSTAL_NET }
  1180. {$EXTERNALSYM MM_CHROMATIC }
  1181. {$EXTERNALSYM MM_VOICEINFO }
  1182. {$EXTERNALSYM MM_VIENNASYS }
  1183. {$EXTERNALSYM MM_CONNECTIX }
  1184. {$EXTERNALSYM MM_GADGETLABS }
  1185. {$EXTERNALSYM MM_FRONTIER }
  1186. {$EXTERNALSYM MM_VIONA }
  1187. {$EXTERNALSYM MM_CASIO }
  1188. {$EXTERNALSYM MM_DIAMONDMM }
  1189. {$EXTERNALSYM MM_S3 }
  1190. {$EXTERNALSYM MM_DVISION }
  1191. {$EXTERNALSYM MM_NETSCAPE }
  1192. {$EXTERNALSYM MM_SOUNDSPACE }
  1193. {$EXTERNALSYM MM_VANKOEVERING }
  1194. {$EXTERNALSYM MM_QTEAM }
  1195. {$EXTERNALSYM MM_ZEFIRO }
  1196. {$EXTERNALSYM MM_STUDER }
  1197. {$EXTERNALSYM MM_FRAUNHOFER_IIS }
  1198. {$EXTERNALSYM MM_QUICKNET }
  1199. {$EXTERNALSYM MM_ALARIS }
  1200. {$EXTERNALSYM MM_SICRESOURCE }
  1201. {$EXTERNALSYM MM_NEOMAGIC }
  1202. {$EXTERNALSYM MM_MERGING_TECHNOLOGIES }
  1203. {$EXTERNALSYM MM_XIRLINK }
  1204. {$EXTERNALSYM MM_COLORGRAPH }
  1205. {$EXTERNALSYM MM_OTI }
  1206. {$EXTERNALSYM MM_AUREAL }
  1207. {$EXTERNALSYM MM_VIVO }
  1208. {$EXTERNALSYM MM_SHARP }
  1209. {$EXTERNALSYM MM_LUCENT }
  1210. {$EXTERNALSYM MM_ATT }
  1211. {$EXTERNALSYM MM_SUNCOM }
  1212. {$EXTERNALSYM MM_SORVIS }
  1213. {$EXTERNALSYM MM_INVISION }
  1214. {$EXTERNALSYM MM_BERKOM }
  1215. {$EXTERNALSYM MM_MARIAN }
  1216. {$EXTERNALSYM MM_DPSINC }
  1217. {$EXTERNALSYM MM_BCB }
  1218. {$EXTERNALSYM MM_MOTIONPIXELS }
  1219. {$EXTERNALSYM MM_QDESIGN }
  1220. {$EXTERNALSYM MM_NMP }
  1221. {$EXTERNALSYM MM_DATAFUSION }
  1222. {$EXTERNALSYM MM_DUCK }
  1223. {$EXTERNALSYM MM_FTR }
  1224. {$EXTERNALSYM MM_BERCOS }
  1225. {$EXTERNALSYM MM_ONLIVE }
  1226. {$EXTERNALSYM MM_SIEMENS_SBC }
  1227. {$EXTERNALSYM MM_TERALOGIC }
  1228. {$EXTERNALSYM MM_PHONET }
  1229. {$EXTERNALSYM MM_WINBOND }
  1230. {$EXTERNALSYM MM_VIRTUALMUSIC }
  1231. {$EXTERNALSYM MM_ENET }
  1232. {$EXTERNALSYM MM_GUILLEMOT }
  1233. {$EXTERNALSYM MM_EMAGIC }
  1234. {$EXTERNALSYM MM_MWM }
  1235. {$EXTERNALSYM MM_PACIFICRESEARCH }
  1236. {$EXTERNALSYM MM_SIPROLAB }
  1237. {$EXTERNALSYM MM_LYNX }
  1238. {$EXTERNALSYM MM_SPECTRUM_PRODUCTIONS }
  1239. {$EXTERNALSYM MM_DICTAPHONE }
  1240. {$EXTERNALSYM MM_QUALCOMM }
  1241. {$EXTERNALSYM MM_RZS }
  1242. {$EXTERNALSYM MM_AUDIOSCIENCE }
  1243. {$EXTERNALSYM MM_PINNACLE }
  1244. {$EXTERNALSYM MM_EES }
  1245. {$EXTERNALSYM MM_HAFTMANN }
  1246. {$EXTERNALSYM MM_LUCID }
  1247. {$EXTERNALSYM MM_HEADSPACE }
  1248. {$EXTERNALSYM MM_UNISYS }
  1249. {$EXTERNALSYM MM_LUMINOSITI }
  1250. {$EXTERNALSYM MM_ACTIVEVOICE }
  1251. {$EXTERNALSYM MM_DTS }
  1252. {$EXTERNALSYM MM_DIGIGRAM }
  1253. {$EXTERNALSYM MM_SOFTLAB_NSK }
  1254. {$EXTERNALSYM MM_FORTEMEDIA }
  1255. {$EXTERNALSYM MM_SONORUS }
  1256. {$EXTERNALSYM MM_ARRAY }
  1257. {$EXTERNALSYM MM_DATARAN }
  1258. {$EXTERNALSYM MM_I_LINK }
  1259. {$EXTERNALSYM MM_SELSIUS_SYSTEMS }
  1260. {$EXTERNALSYM MM_ADMOS }
  1261. {$EXTERNALSYM MM_LEXICON }
  1262. {$EXTERNALSYM MM_SGI }
  1263. {$EXTERNALSYM MM_IPI }
  1264. {$EXTERNALSYM MM_ICE }
  1265. {$EXTERNALSYM MM_VQST }
  1266. {$EXTERNALSYM MM_ETEK }
  1267. {$EXTERNALSYM MM_CS }
  1268. {$EXTERNALSYM MM_ALESIS }
  1269. {$EXTERNALSYM MM_INTERNET }
  1270. {$EXTERNALSYM MM_SONY }
  1271. {$EXTERNALSYM MM_HYPERACTIVE }
  1272. {$EXTERNALSYM MM_UHER_INFORMATIC }
  1273. {$EXTERNALSYM MM_SYDEC_NV }
  1274. {$EXTERNALSYM MM_FLEXION }
  1275. {$EXTERNALSYM MM_VIA }
  1276. {$EXTERNALSYM MM_MICRONAS }
  1277. {$EXTERNALSYM MM_ANALOGDEVICES }
  1278. {$EXTERNALSYM MM_HP }
  1279. {$EXTERNALSYM MM_MATROX_DIV }
  1280. {$EXTERNALSYM MM_QUICKAUDIO }
  1281. {$EXTERNALSYM MM_YOUCOM }
  1282. {$EXTERNALSYM MM_RICHMOND }
  1283. {$EXTERNALSYM MM_IODD }
  1284. {$EXTERNALSYM MM_ICCC }
  1285. {$EXTERNALSYM MM_3COM }
  1286. {$EXTERNALSYM MM_MALDEN }
  1287. {$EXTERNALSYM MM_UNMAPPED }
  1288. {$EXTERNALSYM MM_PID_UNMAPPED }
  1289. {$EXTERNALSYM WAVE_FORMAT_UNKNOWN }
  1290. {$EXTERNALSYM WAVE_FORMAT_ADPCM }
  1291. {$EXTERNALSYM WAVE_FORMAT_IEEE_FLOAT }
  1292. {$EXTERNALSYM WAVE_FORMAT_VSELP }
  1293. {$EXTERNALSYM WAVE_FORMAT_IBM_CVSD }
  1294. {$EXTERNALSYM WAVE_FORMAT_ALAW }
  1295. {$EXTERNALSYM WAVE_FORMAT_MULAW }
  1296. {$EXTERNALSYM WAVE_FORMAT_DTS }
  1297. {$EXTERNALSYM WAVE_FORMAT_OKI_ADPCM }
  1298. {$EXTERNALSYM WAVE_FORMAT_DVI_ADPCM }
  1299. {$EXTERNALSYM WAVE_FORMAT_IMA_ADPCM }
  1300. {$EXTERNALSYM WAVE_FORMAT_MEDIASPACE_ADPCM }
  1301. {$EXTERNALSYM WAVE_FORMAT_SIERRA_ADPCM }
  1302. {$EXTERNALSYM WAVE_FORMAT_G723_ADPCM }
  1303. {$EXTERNALSYM WAVE_FORMAT_DIGISTD }
  1304. {$EXTERNALSYM WAVE_FORMAT_DIGIFIX }
  1305. {$EXTERNALSYM WAVE_FORMAT_DIALOGIC_OKI_ADPCM }
  1306. {$EXTERNALSYM WAVE_FORMAT_MEDIAVISION_ADPCM }
  1307. {$EXTERNALSYM WAVE_FORMAT_CU_CODEC }
  1308. {$EXTERNALSYM WAVE_FORMAT_YAMAHA_ADPCM }
  1309. {$EXTERNALSYM WAVE_FORMAT_SONARC }
  1310. {$EXTERNALSYM WAVE_FORMAT_DSPGROUP_TRUESPEECH }
  1311. {$EXTERNALSYM WAVE_FORMAT_ECHOSC1 }
  1312. {$EXTERNALSYM WAVE_FORMAT_AUDIOFILE_AF36 }
  1313. {$EXTERNALSYM WAVE_FORMAT_APTX }
  1314. {$EXTERNALSYM WAVE_FORMAT_AUDIOFILE_AF10 }
  1315. {$EXTERNALSYM WAVE_FORMAT_PROSODY_1612 }
  1316. {$EXTERNALSYM WAVE_FORMAT_LRC }
  1317. {$EXTERNALSYM WAVE_FORMAT_DOLBY_AC2 }
  1318. {$EXTERNALSYM WAVE_FORMAT_GSM610 }
  1319. {$EXTERNALSYM WAVE_FORMAT_MSNAUDIO }
  1320. {$EXTERNALSYM WAVE_FORMAT_ANTEX_ADPCME }
  1321. {$EXTERNALSYM WAVE_FORMAT_CONTROL_RES_VQLPC }
  1322. {$EXTERNALSYM WAVE_FORMAT_DIGIREAL }
  1323. {$EXTERNALSYM WAVE_FORMAT_DIGIADPCM }
  1324. {$EXTERNALSYM WAVE_FORMAT_CONTROL_RES_CR10 }
  1325. {$EXTERNALSYM WAVE_FORMAT_NMS_VBXADPCM }
  1326. {$EXTERNALSYM WAVE_FORMAT_CS_IMAADPCM }
  1327. {$EXTERNALSYM WAVE_FORMAT_ECHOSC3 }
  1328. {$EXTERNALSYM WAVE_FORMAT_ROCKWELL_ADPCM }
  1329. {$EXTERNALSYM WAVE_FORMAT_ROCKWELL_DIGITALK }
  1330. {$EXTERNALSYM WAVE_FORMAT_XEBEC }
  1331. {$EXTERNALSYM WAVE_FORMAT_G721_ADPCM }
  1332. {$EXTERNALSYM WAVE_FORMAT_G728_CELP }
  1333. {$EXTERNALSYM WAVE_FORMAT_MSG723 }
  1334. {$EXTERNALSYM WAVE_FORMAT_MPEG }
  1335. {$EXTERNALSYM WAVE_FORMAT_RT24 }
  1336. {$EXTERNALSYM WAVE_FORMAT_PAC }
  1337. {$EXTERNALSYM WAVE_FORMAT_MPEGLAYER3 }
  1338. {$EXTERNALSYM WAVE_FORMAT_LUCENT_G723 }
  1339. {$EXTERNALSYM WAVE_FORMAT_CIRRUS }
  1340. {$EXTERNALSYM WAVE_FORMAT_ESPCM }
  1341. {$EXTERNALSYM WAVE_FORMAT_VOXWARE }
  1342. {$EXTERNALSYM WAVE_FORMAT_CANOPUS_ATRAC }
  1343. {$EXTERNALSYM WAVE_FORMAT_G726_ADPCM }
  1344. {$EXTERNALSYM WAVE_FORMAT_G722_ADPCM }
  1345. {$EXTERNALSYM WAVE_FORMAT_DSAT_DISPLAY }
  1346. {$EXTERNALSYM WAVE_FORMAT_VOXWARE_BYTE_ALIGNED }
  1347. {$EXTERNALSYM WAVE_FORMAT_VOXWARE_AC8 }
  1348. {$EXTERNALSYM WAVE_FORMAT_VOXWARE_AC10 }
  1349. {$EXTERNALSYM WAVE_FORMAT_VOXWARE_AC16 }
  1350. {$EXTERNALSYM WAVE_FORMAT_VOXWARE_AC20 }
  1351. {$EXTERNALSYM WAVE_FORMAT_VOXWARE_RT24 }
  1352. {$EXTERNALSYM WAVE_FORMAT_VOXWARE_RT29 }
  1353. {$EXTERNALSYM WAVE_FORMAT_VOXWARE_RT29HW }
  1354. {$EXTERNALSYM WAVE_FORMAT_VOXWARE_VR12 }
  1355. {$EXTERNALSYM WAVE_FORMAT_VOXWARE_VR18 }
  1356. {$EXTERNALSYM WAVE_FORMAT_VOXWARE_TQ40 }
  1357. {$EXTERNALSYM WAVE_FORMAT_SOFTSOUND }
  1358. {$EXTERNALSYM WAVE_FORMAT_VOXWARE_TQ60 }
  1359. {$EXTERNALSYM WAVE_FORMAT_MSRT24 }
  1360. {$EXTERNALSYM WAVE_FORMAT_G729A }
  1361. {$EXTERNALSYM WAVE_FORMAT_MVI_MVI2 }
  1362. {$EXTERNALSYM WAVE_FORMAT_DF_G726 }
  1363. {$EXTERNALSYM WAVE_FORMAT_DF_GSM610 }
  1364. {$EXTERNALSYM WAVE_FORMAT_ISIAUDIO }
  1365. {$EXTERNALSYM WAVE_FORMAT_ONLIVE }
  1366. {$EXTERNALSYM WAVE_FORMAT_SBC24 }
  1367. {$EXTERNALSYM WAVE_FORMAT_DOLBY_AC3_SPDIF }
  1368. {$EXTERNALSYM WAVE_FORMAT_MEDIASONIC_G723 }
  1369. {$EXTERNALSYM WAVE_FORMAT_PROSODY_8KBPS }
  1370. {$EXTERNALSYM WAVE_FORMAT_ZYXEL_ADPCM }
  1371. {$EXTERNALSYM WAVE_FORMAT_PHILIPS_LPCBB }
  1372. {$EXTERNALSYM WAVE_FORMAT_PACKED }
  1373. {$EXTERNALSYM WAVE_FORMAT_MALDEN_PHONYTALK }
  1374. {$EXTERNALSYM WAVE_FORMAT_RHETOREX_ADPCM }
  1375. {$EXTERNALSYM WAVE_FORMAT_IRAT }
  1376. {$EXTERNALSYM WAVE_FORMAT_VIVO_G723 }
  1377. {$EXTERNALSYM WAVE_FORMAT_VIVO_SIREN }
  1378. {$EXTERNALSYM WAVE_FORMAT_DIGITAL_G723 }
  1379. {$EXTERNALSYM WAVE_FORMAT_SANYO_LD_ADPCM }
  1380. {$EXTERNALSYM WAVE_FORMAT_SIPROLAB_ACEPLNET }
  1381. {$EXTERNALSYM WAVE_FORMAT_SIPROLAB_ACELP4800 }
  1382. {$EXTERNALSYM WAVE_FORMAT_SIPROLAB_ACELP8V3 }
  1383. {$EXTERNALSYM WAVE_FORMAT_SIPROLAB_G729 }
  1384. {$EXTERNALSYM WAVE_FORMAT_SIPROLAB_G729A }
  1385. {$EXTERNALSYM WAVE_FORMAT_SIPROLAB_KELVIN }
  1386. {$EXTERNALSYM WAVE_FORMAT_G726ADPCM }
  1387. {$EXTERNALSYM WAVE_FORMAT_QUALCOMM_PUREVOICE }
  1388. {$EXTERNALSYM WAVE_FORMAT_QUALCOMM_HALFRATE }
  1389. {$EXTERNALSYM WAVE_FORMAT_TUBGSM }
  1390. {$EXTERNALSYM WAVE_FORMAT_MSAUDIO1 }
  1391. {$EXTERNALSYM WAVE_FORMAT_CREATIVE_ADPCM }
  1392. {$EXTERNALSYM WAVE_FORMAT_CREATIVE_FASTSPEECH8 }
  1393. {$EXTERNALSYM WAVE_FORMAT_CREATIVE_FASTSPEECH10 }
  1394. {$EXTERNALSYM WAVE_FORMAT_UHER_ADPCM }
  1395. {$EXTERNALSYM WAVE_FORMAT_QUARTERDECK }
  1396. {$EXTERNALSYM WAVE_FORMAT_ILINK_VC }
  1397. {$EXTERNALSYM WAVE_FORMAT_RAW_SPORT }
  1398. {$EXTERNALSYM WAVE_FORMAT_IPI_HSX }
  1399. {$EXTERNALSYM WAVE_FORMAT_IPI_RPELP }
  1400. {$EXTERNALSYM WAVE_FORMAT_CS2 }
  1401. {$EXTERNALSYM WAVE_FORMAT_SONY_SCX }
  1402. {$EXTERNALSYM WAVE_FORMAT_FM_TOWNS_SND }
  1403. {$EXTERNALSYM WAVE_FORMAT_BTV_DIGITAL }
  1404. {$EXTERNALSYM WAVE_FORMAT_QDESIGN_MUSIC }
  1405. {$EXTERNALSYM WAVE_FORMAT_VME_VMPCM }
  1406. {$EXTERNALSYM WAVE_FORMAT_TPC }
  1407. {$EXTERNALSYM WAVE_FORMAT_OLIGSM }
  1408. {$EXTERNALSYM WAVE_FORMAT_OLIADPCM }
  1409. {$EXTERNALSYM WAVE_FORMAT_OLICELP }
  1410. {$EXTERNALSYM WAVE_FORMAT_OLISBC }
  1411. {$EXTERNALSYM WAVE_FORMAT_OLIOPR }
  1412. {$EXTERNALSYM WAVE_FORMAT_LH_CODEC }
  1413. {$EXTERNALSYM WAVE_FORMAT_NORRIS }
  1414. {$EXTERNALSYM WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS }
  1415. {$EXTERNALSYM WAVE_FORMAT_DVM }
  1416. {$EXTERNALSYM WAVE_FORMAT_EXTENSIBLE }
  1417. {$EXTERNALSYM WAVE_FORMAT_DEVELOPMENT }
  1418. MM_MICROSOFT = 1 ; // /* Microsoft Corporation */
  1419. MM_CREATIVE = 2 ; // /* Creative Labs, Inc. */
  1420. MM_MEDIAVISION = 3 ; // /* Media Vision, Inc. */
  1421. MM_FUJITSU = 4 ; // /* Fujitsu Corp. */
  1422. MM_PRAGMATRAX = 5 ; // /* PRAGMATRAX Software */
  1423. MM_CYRIX = 6 ; // /* Cyrix Corporation */
  1424. MM_PHILIPS_SPEECH_PROCESSING = 7 ; // /* Philips Speech Processing */
  1425. MM_NETXL = 8 ; // /* NetXL, Inc. */
  1426. MM_ZYXEL = 9 ; // /* ZyXEL Communications, Inc. */
  1427. MM_BECUBED = 10 ; // /* BeCubed Software Inc. */
  1428. MM_AARDVARK = 11 ; // /* Aardvark Computer Systems, Inc. */
  1429. MM_BINTEC = 12 ; // /* Bin Tec Communications GmbH */
  1430. MM_HEWLETT_PACKARD = 13 ; // /* Hewlett-Packard Company */
  1431. MM_ACULAB = 14 ; // /* Aculab plc */
  1432. MM_FAITH = 15 ; // /* Faith,Inc. */
  1433. MM_MITEL = 16 ; // /* Mitel Corporation */
  1434. MM_QUANTUM3D = 17 ; // /* Quantum3D, Inc. */
  1435. MM_SNI = 18 ; // /* Siemens-Nixdorf */
  1436. MM_EMU = 19 ; // /* E-mu Systems, Inc. */
  1437. MM_ARTISOFT = 20 ; // /* Artisoft, Inc. */
  1438. MM_TURTLE_BEACH = 21 ; // /* Turtle Beach, Inc. */
  1439. MM_IBM = 22 ; // /* IBM Corporation */
  1440. MM_VOCALTEC = 23 ; // /* Vocaltec Ltd. */
  1441. MM_ROLAND = 24 ; // /* Roland */
  1442. MM_DSP_SOLUTIONS = 25 ; // /* DSP Solutions, Inc. */
  1443. MM_NEC = 26 ; // /* NEC */
  1444. MM_ATI = 27 ; // /* ATI Technologies Inc. */
  1445. MM_WANGLABS = 28 ; // /* Wang Laboratories, Inc. */
  1446. MM_TANDY = 29 ; // /* Tandy Corporation */
  1447. MM_VOYETRA = 30 ; // /* Voyetra */
  1448. MM_ANTEX = 31 ; // /* Antex Electronics Corporation */
  1449. MM_ICL_PS = 32 ; // /* ICL Personal Systems */
  1450. MM_INTEL = 33 ; // /* Intel Corporation */
  1451. MM_GRAVIS = 34 ; // /* Advanced Gravis */
  1452. MM_VAL = 35 ; // /* Video Associates Labs, Inc. */
  1453. MM_INTERACTIVE = 36 ; // /* InterActive Inc. */
  1454. MM_YAMAHA = 37 ; // /* Yamaha Corporation of America */
  1455. MM_EVEREX = 38 ; // /* Everex Systems, Inc. */
  1456. MM_ECHO = 39 ; // /* Echo Speech Corporation */
  1457. MM_SIERRA = 40 ; // /* Sierra Semiconductor Corp */
  1458. MM_CAT = 41 ; // /* Computer Aided Technologies */
  1459. MM_APPS = 42 ; // /* APPS Software International */
  1460. MM_DSP_GROUP = 43 ; // /* DSP Group, Inc. */
  1461. MM_MELABS = 44 ; // /* microEngineering Labs */
  1462. MM_COMPUTER_FRIENDS = 45 ; // /* Computer Friends, Inc. */
  1463. MM_ESS = 46 ; // /* ESS Technology */
  1464. MM_AUDIOFILE = 47 ; // /* Audio, Inc. */
  1465. MM_MOTOROLA = 48 ; // /* Motorola, Inc. */
  1466. MM_CANOPUS = 49 ; // /* Canopus, co., Ltd. */
  1467. MM_EPSON = 50 ; // /* Seiko Epson Corporation */
  1468. MM_TRUEVISION = 51 ; // /* Truevision */
  1469. MM_AZTECH = 52 ; // /* Aztech Labs, Inc. */
  1470. MM_VIDEOLOGIC = 53 ; // /* Videologic */
  1471. MM_SCALACS = 54 ; // /* SCALACS */
  1472. MM_KORG = 55 ; // /* Korg Inc. */
  1473. MM_APT = 56 ; // /* Audio Processing Technology */
  1474. MM_ICS = 57 ; // /* Integrated Circuit Systems, Inc. */
  1475. MM_ITERATEDSYS = 58 ; // /* Iterated Systems, Inc. */
  1476. MM_METHEUS = 59 ; // /* Metheus */
  1477. MM_LOGITECH = 60 ; // /* Logitech, Inc. */
  1478. MM_WINNOV = 61 ; // /* Winnov, Inc. */
  1479. MM_NCR = 62 ; // /* NCR Corporation */
  1480. MM_EXAN = 63 ; // /* EXAN */
  1481. MM_AST = 64 ; // /* AST Research Inc. */
  1482. MM_WILLOWPOND = 65 ; // /* Willow Pond Corporation */
  1483. MM_SONICFOUNDRY = 66 ; // /* Sonic Foundry */
  1484. MM_VITEC = 67 ; // /* Vitec Multimedia */
  1485. MM_MOSCOM = 68 ; // /* MOSCOM Corporation */
  1486. MM_SILICONSOFT = 69 ; // /* Silicon Soft, Inc. */
  1487. MM_TERRATEC = 70 ; // /* TerraTec Electronic GmbH */
  1488. MM_MEDIASONIC = 71 ; // /* MediaSonic Ltd. */
  1489. MM_SANYO = 72 ; // /* SANYO Electric Co., Ltd. */
  1490. MM_SUPERMAC = 73 ; // /* Supermac */
  1491. MM_AUDIOPT = 74 ; // /* Audio Processing Technology */
  1492. MM_NOGATECH = 75 ; // /* NOGATECH Ltd. */
  1493. MM_SPEECHCOMP = 76 ; // /* Speech Compression */
  1494. MM_AHEAD = 77 ; // /* Ahead, Inc. */
  1495. MM_DOLBY = 78 ; // /* Dolby Laboratories */
  1496. MM_OKI = 79 ; // /* OKI */
  1497. MM_AURAVISION = 80 ; // /* AuraVision Corporation */
  1498. MM_OLIVETTI = 81 ; // /* Ing C. Olivetti & C., S.p.A. */
  1499. MM_IOMAGIC = 82 ; // /* I/O Magic Corporation */
  1500. MM_MATSUSHITA = 83 ; // /* Matsushita Electric Industrial Co., Ltd. */
  1501. MM_CONTROLRES = 84 ; // /* Control Resources Limited */
  1502. MM_XEBEC = 85 ; // /* Xebec Multimedia Solutions Limited */
  1503. MM_NEWMEDIA = 86 ; // /* New Media Corporation */
  1504. MM_NMS = 87 ; // /* Natural MicroSystems */
  1505. MM_LYRRUS = 88 ; // /* Lyrrus Inc. */
  1506. MM_COMPUSIC = 89 ; // /* Compusic */
  1507. MM_OPTI = 90 ; // /* OPTi Computers Inc. */
  1508. MM_ADLACC = 91 ; // /* Adlib Accessories Inc. */
  1509. MM_COMPAQ = 92 ; // /* Compaq Computer Corp. */
  1510. MM_DIALOGIC = 93 ; // /* Dialogic Corporation */
  1511. MM_INSOFT = 94 ; // /* InSoft, Inc. */
  1512. MM_MPTUS = 95 ; // /* M.P. Technologies, Inc. */
  1513. MM_WEITEK = 96 ; // /* Weitek */
  1514. MM_LERNOUT_AND_HAUSPIE = 97 ; // /* Lernout & Hauspie */
  1515. MM_QCIAR = 98 ; // /* Quanta Computer Inc. */
  1516. MM_APPLE = 99 ; // /* Apple Computer, Inc. */
  1517. MM_DIGITAL = 100; // /* Digital Equipment Corporation */
  1518. MM_MOTU = 101; // /* Mark of the Unicorn */
  1519. MM_WORKBIT = 102; // /* Workbit Corporation */
  1520. MM_OSITECH = 103; // /* Ositech Communications Inc. */
  1521. MM_MIRO = 104; // /* miro Computer Products AG */
  1522. MM_CIRRUSLOGIC = 105; // /* Cirrus Logic */
  1523. MM_ISOLUTION = 106; // /* ISOLUTION B.V. */
  1524. MM_HORIZONS = 107; // /* Horizons Technology, Inc. */
  1525. MM_CONCEPTS = 108; // /* Computer Concepts Ltd. */
  1526. MM_VTG = 109; // /* Voice Technologies Group, Inc. */
  1527. MM_RADIUS = 110; // /* Radius */
  1528. MM_ROCKWELL = 111; // /* Rockwell International */
  1529. MM_XYZ = 112; // /* Co. XYZ for testing */
  1530. MM_OPCODE = 113; // /* Opcode Systems */
  1531. MM_VOXWARE = 114; // /* Voxware Inc. */
  1532. MM_NORTHERN_TELECOM = 115; // /* Northern Telecom Limited */
  1533. MM_APICOM = 116; // /* APICOM */
  1534. MM_GRANDE = 117; // /* Grande Software */
  1535. MM_ADDX = 118; // /* ADDX */
  1536. MM_WILDCAT = 119; // /* Wildcat Canyon Software */
  1537. MM_RHETOREX = 120; // /* Rhetorex Inc. */
  1538. MM_BROOKTREE = 121; // /* Brooktree Corporation */
  1539. MM_ENSONIQ = 125; // /* ENSONIQ Corporation */
  1540. MM_FAST = 126; // /* FAST Multimedia AG */
  1541. MM_NVIDIA = 127; // /* NVidia Corporation */
  1542. MM_OKSORI = 128; // /* OKSORI Co., Ltd. */
  1543. MM_DIACOUSTICS = 129; // /* DiAcoustics, Inc. */
  1544. MM_GULBRANSEN = 130; // /* Gulbransen, Inc. */
  1545. MM_KAY_ELEMETRICS = 131; // /* Kay Elemetrics, Inc. */
  1546. MM_CRYSTAL = 132; // /* Crystal Semiconductor Corporation */
  1547. MM_SPLASH_STUDIOS = 133; // /* Splash Studios */
  1548. MM_QUARTERDECK = 134; // /* Quarterdeck Corporation */
  1549. MM_TDK = 135; // /* TDK Corporation */
  1550. MM_DIGITAL_AUDIO_LABS = 136; // /* Digital Audio Labs, Inc. */
  1551. MM_SEERSYS = 137; // /* Seer Systems, Inc. */
  1552. MM_PICTURETEL = 138; // /* PictureTel Corporation */
  1553. MM_ATT_MICROELECTRONICS = 139; // /* AT&T Microelectronics */
  1554. MM_OSPREY = 140; // /* Osprey Technologies, Inc. */
  1555. MM_MEDIATRIX = 141; // /* Mediatrix Peripherals */
  1556. MM_SOUNDESIGNS = 142; // /* SounDesignS M.C.S. Ltd. */
  1557. MM_ALDIGITAL = 143; // /* A.L. Digital Ltd. */
  1558. MM_SPECTRUM_SIGNAL_PROCESSING = 144; // /* Spectrum Signal Processing, Inc. */
  1559. MM_ECS = 145; // /* Electronic Courseware Systems, Inc. */
  1560. MM_AMD = 146; // /* AMD */
  1561. MM_COREDYNAMICS = 147; // /* Core Dynamics */
  1562. MM_CANAM = 148; // /* CANAM Computers */
  1563. MM_SOFTSOUND = 149; // /* Softsound, Ltd. */
  1564. MM_NORRIS = 150; // /* Norris Communications, Inc. */
  1565. MM_DDD = 151; // /* Danka Data Devices */
  1566. MM_EUPHONICS = 152; // /* EuPhonics */
  1567. MM_PRECEPT = 153; // /* Precept Software, Inc. */
  1568. MM_CRYSTAL_NET = 154; // /* Crystal Net Corporation */
  1569. MM_CHROMATIC = 155; // /* Chromatic Research, Inc. */
  1570. MM_VOICEINFO = 156; // /* Voice Information Systems, Inc. */
  1571. MM_VIENNASYS = 157; // /* Vienna Systems */
  1572. MM_CONNECTIX = 158; // /* Connectix Corporation */
  1573. MM_GADGETLABS = 159; // /* Gadget Labs LLC */
  1574. MM_FRONTIER = 160; // /* Frontier Design Group LLC */
  1575. MM_VIONA = 161; // /* Viona Development GmbH */
  1576. MM_CASIO = 162; // /* Casio Computer Co., LTD */
  1577. MM_DIAMONDMM = 163; // /* Diamond Multimedia */
  1578. MM_S3 = 164; // /* S3 */
  1579. MM_DVISION = 165; // /* D-Vision Systems, Inc. */
  1580. MM_NETSCAPE = 166; // /* Netscape Communications */
  1581. MM_SOUNDSPACE = 167; // /* Soundspace Audio */
  1582. MM_VANKOEVERING = 168; // /* VanKoevering Company */
  1583. MM_QTEAM = 169; // /* Q-Team */
  1584. MM_ZEFIRO = 170; // /* Zefiro Acoustics */
  1585. MM_STUDER = 171; // /* Studer Professional Audio AG */
  1586. MM_FRAUNHOFER_IIS = 172; // /* Fraunhofer IIS */
  1587. MM_QUICKNET = 173; // /* Quicknet Technologies */
  1588. MM_ALARIS = 174; // /* Alaris, Inc. */
  1589. MM_SICRESOURCE = 175; // /* SIC Resource Inc. */
  1590. MM_NEOMAGIC = 176; // /* NeoMagic Corporation */
  1591. MM_MERGING_TECHNOLOGIES = 177; // /* Merging Technologies S.A. */
  1592. MM_XIRLINK = 178; // /* Xirlink, Inc. */
  1593. MM_COLORGRAPH = 179; // /* Colorgraph (UK) Ltd */
  1594. MM_OTI = 180; // /* Oak Technology, Inc. */
  1595. MM_AUREAL = 181; // /* Aureal Semiconductor */
  1596. MM_VIVO = 182; // /* Vivo Software */
  1597. MM_SHARP = 183; // /* Sharp */
  1598. MM_LUCENT = 184; // /* Lucent Technologies */
  1599. MM_ATT = 185; // /* AT&T Labs, Inc. */
  1600. MM_SUNCOM = 186; // /* Sun Communications, Inc. */
  1601. MM_SORVIS = 187; // /* Sorenson Vision */
  1602. MM_INVISION = 188; // /* InVision Interactive */
  1603. MM_BERKOM = 189; // /* Deutsche Telekom Berkom GmbH */
  1604. MM_MARIAN = 190; // /* Marian GbR Leipzig */
  1605. MM_DPSINC = 191; // /* Digital Processing Systems, Inc. */
  1606. MM_BCB = 192; // /* BCB Holdings Inc. */
  1607. MM_MOTIONPIXELS = 193; // /* Motion Pixels */
  1608. MM_QDESIGN = 194; // /* QDesign Corporation */
  1609. MM_NMP = 195; // /* Nokia Mobile Phones */
  1610. MM_DATAFUSION = 196; // /* DataFusion Systems (Pty) (Ltd) */
  1611. MM_DUCK = 197; // /* The Duck Corporation */
  1612. MM_FTR = 198; // /* Future Technology Resources Pty Ltd */
  1613. MM_BERCOS = 199; // /* BERCOS GmbH */
  1614. MM_ONLIVE = 200; // /* OnLive! Technologies, Inc. */
  1615. MM_SIEMENS_SBC = 201; // /* Siemens Business Communications Systems */
  1616. MM_TERALOGIC = 202; // /* TeraLogic, Inc. */
  1617. MM_PHONET = 203; // /* PhoNet Communications Ltd. */
  1618. MM_WINBOND = 204; // /* Winbond Electronics Corp */
  1619. MM_VIRTUALMUSIC = 205; // /* Virtual Music, Inc. */
  1620. MM_ENET = 206; // /* e-Net, Inc. */
  1621. MM_GUILLEMOT = 207; // /* Guillemot International */
  1622. MM_EMAGIC = 208; // /* Emagic Soft- und Hardware GmbH */
  1623. MM_MWM = 209; // /* MWM Acoustics LLC */
  1624. MM_PACIFICRESEARCH = 210; // /* Pacific Research and Engineering Corporation */
  1625. MM_SIPROLAB = 211; // /* Sipro Lab Telecom Inc. */
  1626. MM_LYNX = 212; // /* Lynx Studio Technology, Inc. */
  1627. MM_SPECTRUM_PRODUCTIONS = 213; // /* Spectrum Productions */
  1628. MM_DICTAPHONE = 214; // /* Dictaphone Corporation */
  1629. MM_QUALCOMM = 215; // /* QUALCOMM, Inc. */
  1630. MM_RZS = 216; // /* Ring Zero Systems, Inc */
  1631. MM_AUDIOSCIENCE = 217; // /* AudioScience Inc. */
  1632. MM_PINNACLE = 218; // /* Pinnacle Systems, Inc. */
  1633. MM_EES = 219; // /* EES Technik fur Musik GmbH */
  1634. MM_HAFTMANN = 220; // /* haftmann#software */
  1635. MM_LUCID = 221; // /* Lucid Technology, Symetrix Inc. */
  1636. MM_HEADSPACE = 222; // /* Headspace, Inc */
  1637. MM_UNISYS = 223; // /* UNISYS CORPORATION */
  1638. MM_LUMINOSITI = 224; // /* Luminositi, Inc. */
  1639. MM_ACTIVEVOICE = 225; // /* ACTIVE VOICE CORPORATION */
  1640. MM_DTS = 226; // /* Digital Theater Systems, Inc. */
  1641. MM_DIGIGRAM = 227; // /* DIGIGRAM */
  1642. MM_SOFTLAB_NSK = 228; // /* Softlab-Nsk */
  1643. MM_FORTEMEDIA = 229; // /* ForteMedia, Inc */
  1644. MM_SONORUS = 230; // /* Sonorus, Inc. */
  1645. MM_ARRAY = 231; // /* Array Microsystems, Inc. */
  1646. MM_DATARAN = 232; // /* Data Translation, Inc. */
  1647. MM_I_LINK = 233; // /* I-link Worldwide */
  1648. MM_SELSIUS_SYSTEMS = 234; // /* Selsius Systems Inc. */
  1649. MM_ADMOS = 235; // /* AdMOS Technology, Inc. */
  1650. MM_LEXICON = 236; // /* Lexicon Inc. */
  1651. MM_SGI = 237; // /* Silicon Graphics Inc. */
  1652. MM_IPI = 238; // /* Interactive Product Inc. */
  1653. MM_ICE = 239; // /* IC Ensemble, Inc. */
  1654. MM_VQST = 240; // /* ViewQuest Technologies Inc. */
  1655. MM_ETEK = 241; // /* eTEK Labs Inc. */
  1656. MM_CS = 242; // /* Consistent Software */
  1657. MM_ALESIS = 243; // /* Alesis Studio Electronics */
  1658. MM_INTERNET = 244; // /* INTERNET Corporation */
  1659. MM_SONY = 245; // /* Sony Corporation */
  1660. MM_HYPERACTIVE = 246; // /* Hyperactive Audio Systems, Inc. */
  1661. MM_UHER_INFORMATIC = 247; // /* UHER informatic GmbH */
  1662. MM_SYDEC_NV = 248; // /* Sydec NV */
  1663. MM_FLEXION = 249; // /* Flexion Systems Ltd. */
  1664. MM_VIA = 250; // /* Via Technologies, Inc. */
  1665. MM_MICRONAS = 251; // /* Micronas Semiconductors, Inc. */
  1666. MM_ANALOGDEVICES = 252; // /* Analog Devices, Inc. */
  1667. MM_HP = 253; // /* Hewlett Packard Company */
  1668. MM_MATROX_DIV = 254; // /* Matrox */
  1669. MM_QUICKAUDIO = 255; // /* Quick Audio, GbR */
  1670. MM_YOUCOM = 256; // /* You/Com Audiocommunicatie BV */
  1671. MM_RICHMOND = 257; // /* Richmond Sound Design Ltd. */
  1672. MM_IODD = 258; // /* I-O Data Device, Inc. */
  1673. MM_ICCC = 259; // /* ICCC A/S */
  1674. MM_3COM = 260; // /* 3COM Corporation */
  1675. MM_MALDEN = 261; // /* Malden Electronics Ltd. */
  1676. MM_UNMAPPED = $ffff; //* extensible MID mapping */
  1677. MM_PID_UNMAPPED = MM_UNMAPPED; //* extensible PID mapping */
  1678. // some of MS pids
  1679. {$EXTERNALSYM MM_MSFT_WSS_WAVEIN }
  1680. {$EXTERNALSYM MM_MSFT_WSS_WAVEOUT }
  1681. {$EXTERNALSYM MM_MSFT_WSS_FMSYNTH_STEREO }
  1682. {$EXTERNALSYM MM_MSFT_WSS_MIXER }
  1683. {$EXTERNALSYM MM_MSFT_WSS_OEM_WAVEIN }
  1684. {$EXTERNALSYM MM_MSFT_WSS_OEM_WAVEOUT }
  1685. {$EXTERNALSYM MM_MSFT_WSS_OEM_FMSYNTH_STEREO }
  1686. {$EXTERNALSYM MM_MSFT_WSS_AUX }
  1687. {$EXTERNALSYM MM_MSFT_WSS_OEM_AUX }
  1688. {$EXTERNALSYM MM_MSFT_GENERIC_WAVEIN }
  1689. {$EXTERNALSYM MM_MSFT_GENERIC_WAVEOUT }
  1690. {$EXTERNALSYM MM_MSFT_GENERIC_MIDIIN }
  1691. {$EXTERNALSYM MM_MSFT_GENERIC_MIDIOUT }
  1692. {$EXTERNALSYM MM_MSFT_GENERIC_MIDISYNTH }
  1693. {$EXTERNALSYM MM_MSFT_GENERIC_AUX_LINE }
  1694. {$EXTERNALSYM MM_MSFT_GENERIC_AUX_MIC }
  1695. {$EXTERNALSYM MM_MSFT_GENERIC_AUX_CD }
  1696. {$EXTERNALSYM MM_MSFT_WSS_OEM_MIXER }
  1697. {$EXTERNALSYM MM_MSFT_MSACM }
  1698. {$EXTERNALSYM MM_MSFT_ACM_MSADPCM }
  1699. {$EXTERNALSYM MM_MSFT_ACM_IMAADPCM }
  1700. {$EXTERNALSYM MM_MSFT_ACM_MSFILTER }
  1701. {$EXTERNALSYM MM_MSFT_ACM_GSM610 }
  1702. {$EXTERNALSYM MM_MSFT_ACM_G711 }
  1703. {$EXTERNALSYM MM_MSFT_ACM_PCM }
  1704. MM_MSFT_WSS_WAVEIN = 14; //* MS Audio Board waveform input */
  1705. MM_MSFT_WSS_WAVEOUT = 15; //* MS Audio Board waveform output */
  1706. MM_MSFT_WSS_FMSYNTH_STEREO = 16; //* MS Audio Board Stereo FM synth */
  1707. MM_MSFT_WSS_MIXER = 17; //* MS Audio Board Mixer Driver */
  1708. MM_MSFT_WSS_OEM_WAVEIN = 18; //* MS OEM Audio Board waveform input */
  1709. MM_MSFT_WSS_OEM_WAVEOUT = 19; //* MS OEM Audio Board waveform output */
  1710. MM_MSFT_WSS_OEM_FMSYNTH_STEREO = 20; //* MS OEM Audio Board Stereo FM Synth */
  1711. MM_MSFT_WSS_AUX = 21; //* MS Audio Board Aux. Port */
  1712. MM_MSFT_WSS_OEM_AUX = 22; //* MS OEM Audio Aux Port */
  1713. MM_MSFT_GENERIC_WAVEIN = 23; //* MS Vanilla driver waveform input */
  1714. MM_MSFT_GENERIC_WAVEOUT = 24; //* MS Vanilla driver wavefrom output */
  1715. MM_MSFT_GENERIC_MIDIIN = 25; //* MS Vanilla driver MIDI in */
  1716. MM_MSFT_GENERIC_MIDIOUT = 26; //* MS Vanilla driver MIDI external out */
  1717. MM_MSFT_GENERIC_MIDISYNTH = 27; //* MS Vanilla driver MIDI synthesizer */
  1718. MM_MSFT_GENERIC_AUX_LINE = 28; //* MS Vanilla driver aux (line in) */
  1719. MM_MSFT_GENERIC_AUX_MIC = 29; //* MS Vanilla driver aux (mic) */
  1720. MM_MSFT_GENERIC_AUX_CD = 30; //* MS Vanilla driver aux (CD) */
  1721. MM_MSFT_WSS_OEM_MIXER = 31; //* MS OEM Audio Board Mixer Driver */
  1722. MM_MSFT_MSACM = 32; //* MS Audio Compression Manager */
  1723. MM_MSFT_ACM_MSADPCM = 33; //* MS ADPCM Codec */
  1724. MM_MSFT_ACM_IMAADPCM = 34; //* IMA ADPCM Codec */
  1725. MM_MSFT_ACM_MSFILTER = 35; //* MS Filter */
  1726. MM_MSFT_ACM_GSM610 = 36; //* GSM 610 codec */
  1727. MM_MSFT_ACM_G711 = 37; //* G.711 codec */
  1728. MM_MSFT_ACM_PCM = 38; //* PCM converter */
  1729. //* WAVE form wFormatTag IDs */
  1730. WAVE_FORMAT_UNKNOWN = $00000; //* Microsoft Corporation */
  1731. WAVE_FORMAT_ADPCM = $00002; //* Microsoft Corporation */
  1732. WAVE_FORMAT_IEEE_FLOAT = $00003; //* Microsoft Corporation */
  1733. WAVE_FORMAT_VSELP = $00004; //* Compaq Computer Corp. */
  1734. WAVE_FORMAT_IBM_CVSD = $00005; //* IBM Corporation */
  1735. WAVE_FORMAT_ALAW = $00006; //* Microsoft Corporation */
  1736. WAVE_FORMAT_MULAW = $00007; //* Microsoft Corporation */
  1737. WAVE_FORMAT_DTS = $00008; //* Microsoft Corporation */
  1738. WAVE_FORMAT_OKI_ADPCM = $00010; //* OKI */
  1739. WAVE_FORMAT_DVI_ADPCM = $00011; //* Intel Corporation */
  1740. WAVE_FORMAT_IMA_ADPCM = WAVE_FORMAT_DVI_ADPCM; //* Intel Corporation */
  1741. WAVE_FORMAT_MEDIASPACE_ADPCM = $00012; //* Videologic */
  1742. WAVE_FORMAT_SIERRA_ADPCM = $00013; //* Sierra Semiconductor Corp */
  1743. WAVE_FORMAT_G723_ADPCM = $00014; //* Antex Electronics Corporation */
  1744. WAVE_FORMAT_DIGISTD = $00015; //* DSP Solutions, Inc. */
  1745. WAVE_FORMAT_DIGIFIX = $00016; //* DSP Solutions, Inc. */
  1746. WAVE_FORMAT_DIALOGIC_OKI_ADPCM = $00017; //* Dialogic Corporation */
  1747. WAVE_FORMAT_MEDIAVISION_ADPCM = $00018; //* Media Vision, Inc. */
  1748. WAVE_FORMAT_CU_CODEC = $00019; //* Hewlett-Packard Company */
  1749. WAVE_FORMAT_YAMAHA_ADPCM = $00020; //* Yamaha Corporation of America */
  1750. WAVE_FORMAT_SONARC = $00021; //* Speech Compression */
  1751. WAVE_FORMAT_DSPGROUP_TRUESPEECH = $00022; //* DSP Group, Inc */
  1752. WAVE_FORMAT_ECHOSC1 = $00023; //* Echo Speech Corporation */
  1753. WAVE_FORMAT_AUDIOFILE_AF36 = $00024; //* Virtual Music, Inc. */
  1754. WAVE_FORMAT_APTX = $00025; //* Audio Processing Technology */
  1755. WAVE_FORMAT_AUDIOFILE_AF10 = $00026; //* Virtual Music, Inc. */
  1756. WAVE_FORMAT_PROSODY_1612 = $00027; //* Aculab plc */
  1757. WAVE_FORMAT_LRC = $00028; //* Merging Technologies S.A. */
  1758. WAVE_FORMAT_DOLBY_AC2 = $00030; //* Dolby Laboratories */
  1759. WAVE_FORMAT_GSM610 = $00031; //* Microsoft Corporation */
  1760. WAVE_FORMAT_MSNAUDIO = $00032; //* Microsoft Corporation */
  1761. WAVE_FORMAT_ANTEX_ADPCME = $00033; //* Antex Electronics Corporation */
  1762. WAVE_FORMAT_CONTROL_RES_VQLPC = $00034; //* Control Resources Limited */
  1763. WAVE_FORMAT_DIGIREAL = $00035; //* DSP Solutions, Inc. */
  1764. WAVE_FORMAT_DIGIADPCM = $00036; //* DSP Solutions, Inc. */
  1765. WAVE_FORMAT_CONTROL_RES_CR10 = $00037; //* Control Resources Limited */
  1766. WAVE_FORMAT_NMS_VBXADPCM = $00038; //* Natural MicroSystems */
  1767. WAVE_FORMAT_CS_IMAADPCM = $00039; //* Crystal Semiconductor IMA ADPCM */
  1768. WAVE_FORMAT_ECHOSC3 = $0003A; //* Echo Speech Corporation */
  1769. WAVE_FORMAT_ROCKWELL_ADPCM = $0003B; //* Rockwell International */
  1770. WAVE_FORMAT_ROCKWELL_DIGITALK = $0003C; //* Rockwell International */
  1771. WAVE_FORMAT_XEBEC = $0003D; //* Xebec Multimedia Solutions Limited */
  1772. WAVE_FORMAT_G721_ADPCM = $00040; //* Antex Electronics Corporation */
  1773. WAVE_FORMAT_G728_CELP = $00041; //* Antex Electronics Corporation */
  1774. WAVE_FORMAT_MSG723 = $00042; //* Microsoft Corporation */
  1775. WAVE_FORMAT_MPEG = $00050; //* Microsoft Corporation */
  1776. WAVE_FORMAT_RT24 = $00052; //* InSoft, Inc. */
  1777. WAVE_FORMAT_PAC = $00053; //* InSoft, Inc. */
  1778. WAVE_FORMAT_MPEGLAYER3 = $00055; //* ISO/MPEG Layer3 Format Tag */
  1779. WAVE_FORMAT_LUCENT_G723 = $00059; //* Lucent Technologies */
  1780. WAVE_FORMAT_CIRRUS = $00060; //* Cirrus Logic */
  1781. WAVE_FORMAT_ESPCM = $00061; //* ESS Technology */
  1782. WAVE_FORMAT_VOXWARE = $00062; //* Voxware Inc */
  1783. WAVE_FORMAT_CANOPUS_ATRAC = $00063; //* Canopus, co., Ltd. */
  1784. WAVE_FORMAT_G726_ADPCM = $00064; //* APICOM */
  1785. WAVE_FORMAT_G722_ADPCM = $00065; //* APICOM */
  1786. WAVE_FORMAT_DSAT_DISPLAY = $00067; //* Microsoft Corporation */
  1787. WAVE_FORMAT_VOXWARE_BYTE_ALIGNED = $00069; //* Voxware Inc */
  1788. WAVE_FORMAT_VOXWARE_AC8 = $00070; //* Voxware Inc */
  1789. WAVE_FORMAT_VOXWARE_AC10 = $00071; //* Voxware Inc */
  1790. WAVE_FORMAT_VOXWARE_AC16 = $00072; //* Voxware Inc */
  1791. WAVE_FORMAT_VOXWARE_AC20 = $00073; //* Voxware Inc */
  1792. WAVE_FORMAT_VOXWARE_RT24 = $00074; //* Voxware Inc */
  1793. WAVE_FORMAT_VOXWARE_RT29 = $00075; //* Voxware Inc */
  1794. WAVE_FORMAT_VOXWARE_RT29HW = $00076; //* Voxware Inc */
  1795. WAVE_FORMAT_VOXWARE_VR12 = $00077; //* Voxware Inc */
  1796. WAVE_FORMAT_VOXWARE_VR18 = $00078; //* Voxware Inc */
  1797. WAVE_FORMAT_VOXWARE_TQ40 = $00079; //* Voxware Inc */
  1798. WAVE_FORMAT_SOFTSOUND = $00080; //* Softsound, Ltd. */
  1799. WAVE_FORMAT_VOXWARE_TQ60 = $00081; //* Voxware Inc */
  1800. WAVE_FORMAT_MSRT24 = $00082; //* Microsoft Corporation */
  1801. WAVE_FORMAT_G729A = $00083; //* AT&T Labs, Inc. */
  1802. WAVE_FORMAT_MVI_MVI2 = $00084; //* Motion Pixels */
  1803. WAVE_FORMAT_DF_G726 = $00085; //* DataFusion Systems (Pty) (Ltd) */
  1804. WAVE_FORMAT_DF_GSM610 = $00086; //* DataFusion Systems (Pty) (Ltd) */
  1805. WAVE_FORMAT_ISIAUDIO = $00088; //* Iterated Systems, Inc. */
  1806. WAVE_FORMAT_ONLIVE = $00089; //* OnLive! Technologies, Inc. */
  1807. WAVE_FORMAT_SBC24 = $00091; //* Siemens Business Communications Sys */
  1808. WAVE_FORMAT_DOLBY_AC3_SPDIF = $00092; //* Sonic Foundry */
  1809. WAVE_FORMAT_MEDIASONIC_G723 = $00093; //* MediaSonic */
  1810. WAVE_FORMAT_PROSODY_8KBPS = $00094; //* Aculab plc */
  1811. WAVE_FORMAT_ZYXEL_ADPCM = $00097; //* ZyXEL Communications, Inc. */
  1812. WAVE_FORMAT_PHILIPS_LPCBB = $00098; //* Philips Speech Processing */
  1813. WAVE_FORMAT_PACKED = $00099; //* Studer Professional Audio AG */
  1814. WAVE_FORMAT_MALDEN_PHONYTALK = $000A0; //* Malden Electronics Ltd. */
  1815. WAVE_FORMAT_RHETOREX_ADPCM = $00100; //* Rhetorex Inc. */
  1816. WAVE_FORMAT_IRAT = $00101; //* BeCubed Software Inc. */
  1817. WAVE_FORMAT_VIVO_G723 = $00111; //* Vivo Software */
  1818. WAVE_FORMAT_VIVO_SIREN = $00112; //* Vivo Software */
  1819. WAVE_FORMAT_DIGITAL_G723 = $00123; //* Digital Equipment Corporation */
  1820. WAVE_FORMAT_SANYO_LD_ADPCM = $00125; //* Sanyo Electric Co., Ltd. */
  1821. WAVE_FORMAT_SIPROLAB_ACEPLNET = $00130; //* Sipro Lab Telecom Inc. */
  1822. WAVE_FORMAT_SIPROLAB_ACELP4800 = $00131; //* Sipro Lab Telecom Inc. */
  1823. WAVE_FORMAT_SIPROLAB_ACELP8V3 = $00132; //* Sipro Lab Telecom Inc. */
  1824. WAVE_FORMAT_SIPROLAB_G729 = $00133; //* Sipro Lab Telecom Inc. */
  1825. WAVE_FORMAT_SIPROLAB_G729A = $00134; //* Sipro Lab Telecom Inc. */
  1826. WAVE_FORMAT_SIPROLAB_KELVIN = $00135; //* Sipro Lab Telecom Inc. */
  1827. WAVE_FORMAT_G726ADPCM = $00140; //* Dictaphone Corporation */
  1828. WAVE_FORMAT_QUALCOMM_PUREVOICE = $00150; //* Qualcomm, Inc. */
  1829. WAVE_FORMAT_QUALCOMM_HALFRATE = $00151; //* Qualcomm, Inc. */
  1830. WAVE_FORMAT_TUBGSM = $00155; //* Ring Zero Systems, Inc. */
  1831. WAVE_FORMAT_MSAUDIO1 = $00160; //* Microsoft Corporation */
  1832. WAVE_FORMAT_CREATIVE_ADPCM = $00200; //* Creative Labs, Inc */
  1833. WAVE_FORMAT_CREATIVE_FASTSPEECH8 = $00202; //* Creative Labs, Inc */
  1834. WAVE_FORMAT_CREATIVE_FASTSPEECH10 = $00203; //* Creative Labs, Inc */
  1835. WAVE_FORMAT_UHER_ADPCM = $00210; //* UHER informatic GmbH */
  1836. WAVE_FORMAT_QUARTERDECK = $00220; //* Quarterdeck Corporation */
  1837. WAVE_FORMAT_ILINK_VC = $00230; //* I-link Worldwide */
  1838. WAVE_FORMAT_RAW_SPORT = $00240; //* Aureal Semiconductor */
  1839. WAVE_FORMAT_IPI_HSX = $00250; //* Interactive Products, Inc. */
  1840. WAVE_FORMAT_IPI_RPELP = $00251; //* Interactive Products, Inc. */
  1841. WAVE_FORMAT_CS2 = $00260; //* Consistent Software */
  1842. WAVE_FORMAT_SONY_SCX = $00270; //* Sony Corp. */
  1843. WAVE_FORMAT_FM_TOWNS_SND = $00300; //* Fujitsu Corp. */
  1844. WAVE_FORMAT_BTV_DIGITAL = $00400; //* Brooktree Corporation */
  1845. WAVE_FORMAT_QDESIGN_MUSIC = $00450; //* QDesign Corporation */
  1846. WAVE_FORMAT_VME_VMPCM = $00680; //* AT&T Labs, Inc. */
  1847. WAVE_FORMAT_TPC = $00681; //* AT&T Labs, Inc. */
  1848. WAVE_FORMAT_OLIGSM = $01000; //* Ing C. Olivetti & C., S.p.A. */
  1849. WAVE_FORMAT_OLIADPCM = $01001; //* Ing C. Olivetti & C., S.p.A. */
  1850. WAVE_FORMAT_OLICELP = $01002; //* Ing C. Olivetti & C., S.p.A. */
  1851. WAVE_FORMAT_OLISBC = $01003; //* Ing C. Olivetti & C., S.p.A. */
  1852. WAVE_FORMAT_OLIOPR = $01004; //* Ing C. Olivetti & C., S.p.A. */
  1853. WAVE_FORMAT_LH_CODEC = $01100; //* Lernout & Hauspie */
  1854. WAVE_FORMAT_NORRIS = $01400; //* Norris Communications, Inc. */
  1855. WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS = $01500; //* AT&T Labs, Inc. */
  1856. WAVE_FORMAT_DVM = $02000; //* FAST Multimedia AG */
  1857. //
  1858. WAVE_FORMAT_EXTENSIBLE = $0FFFE; //* Microsoft */
  1859. //
  1860. // New wave format development should be based on the
  1861. // WAVEFORMATEXTENSIBLE structure. WAVEFORMATEXTENSIBLE allows you to
  1862. // avoid having to register a new format tag with Microsoft. However, if
  1863. // you must still define a new format tag, the WAVE_FORMAT_DEVELOPMENT
  1864. // format tag can be used during the development phase of a new wave
  1865. // format. Before shipping, you MUST acquire an official format tag from
  1866. // Microsoft.
  1867. //
  1868. WAVE_FORMAT_DEVELOPMENT = $0FFFF; // you
  1869. //
  1870. // New wave format development should be based on the
  1871. // WAVEFORMATEXTENSIBLE structure. WAVEFORMATEXTENSIBLE allows you to
  1872. // avoid having to register a new format tag with Microsoft. Simply
  1873. // define a new GUID value for the WAVEFORMATEXTENSIBLE.SubFormat field
  1874. // and use WAVE_FORMAT_EXTENSIBLE in the
  1875. // WAVEFORMATEXTENSIBLE.Format.wFormatTag field.
  1876. //
  1877. type
  1878. WAVEFORMATEXTENSIBLE_SAMPLES = record
  1879. //
  1880. case int of
  1881. 0: (wValidBitsPerSample: WORD); //* bits of precision */
  1882. 1: (wSamplesPerBlock: WORD); //* valid if wBitsPerSample==0 */
  1883. 2: (wReserved: WORD); //* If neither applies, set to zero. */
  1884. end;
  1885. {$EXTERNALSYM PWAVEFORMATEXTENSIBLE }
  1886. {$EXTERNALSYM WAVEFORMATEXTENSIBLE }
  1887. PWAVEFORMATEXTENSIBLE = ^WAVEFORMATEXTENSIBLE;
  1888. WAVEFORMATEXTENSIBLE = record
  1889. //
  1890. Format: WAVEFORMATEX;
  1891. Samples: WAVEFORMATEXTENSIBLE_SAMPLES;
  1892. dwChannelMask: DWORD; //* which channels are present in stream */
  1893. SubFormat: tGUID;
  1894. end;
  1895. //
  1896. // Extended PCM waveform format structure based on WAVEFORMATEXTENSIBLE.
  1897. // Use this for multiple channel and hi-resolution PCM data
  1898. //
  1899. {$EXTERNALSYM WAVEFORMATPCMEX }
  1900. {$EXTERNALSYM PWAVEFORMATPCMEX }
  1901. {$EXTERNALSYM NPWAVEFORMATPCMEX }
  1902. {$EXTERNALSYM LPWAVEFORMATPCMEX }
  1903. WAVEFORMATPCMEX = WAVEFORMATEXTENSIBLE; //* Format.cbSize = 22 */
  1904. PWAVEFORMATPCMEX = ^WAVEFORMATPCMEX;
  1905. NPWAVEFORMATPCMEX = ^WAVEFORMATPCMEX;
  1906. LPWAVEFORMATPCMEX = ^WAVEFORMATPCMEX;
  1907. //
  1908. // Extended format structure using IEEE Float data and based
  1909. // on WAVEFORMATEXTENSIBLE. Use this for multiple channel
  1910. // and hi-resolution PCM data in IEEE floating point format.
  1911. //
  1912. {$EXTERNALSYM WAVEFORMATIEEEFLOATEX }
  1913. {$EXTERNALSYM PWAVEFORMATIEEEFLOATEX }
  1914. {$EXTERNALSYM NPWAVEFORMATIEEEFLOATEX }
  1915. {$EXTERNALSYM LPWAVEFORMATIEEEFLOATEX }
  1916. WAVEFORMATIEEEFLOATEX = WAVEFORMATEXTENSIBLE; //* Format.cbSize = 22 */
  1917. PWAVEFORMATIEEEFLOATEX = ^WAVEFORMATIEEEFLOATEX;
  1918. NPWAVEFORMATIEEEFLOATEX = ^WAVEFORMATIEEEFLOATEX;
  1919. LPWAVEFORMATIEEEFLOATEX = ^WAVEFORMATIEEEFLOATEX;
  1920. const
  1921. {$EXTERNALSYM SPEAKER_FRONT_LEFT }
  1922. {$EXTERNALSYM SPEAKER_FRONT_RIGHT }
  1923. {$EXTERNALSYM SPEAKER_FRONT_CENTER }
  1924. {$EXTERNALSYM SPEAKER_LOW_FREQUENCY }
  1925. {$EXTERNALSYM SPEAKER_BACK_LEFT }
  1926. {$EXTERNALSYM SPEAKER_BACK_RIGHT }
  1927. {$EXTERNALSYM SPEAKER_FRONT_LEFT_OF_CENTER }
  1928. {$EXTERNALSYM SPEAKER_FRONT_RIGHT_OF_CENTER }
  1929. {$EXTERNALSYM SPEAKER_BACK_CENTER }
  1930. {$EXTERNALSYM SPEAKER_SIDE_LEFT }
  1931. {$EXTERNALSYM SPEAKER_SIDE_RIGHT }
  1932. {$EXTERNALSYM SPEAKER_TOP_CENTER }
  1933. {$EXTERNALSYM SPEAKER_TOP_FRONT_LEFT }
  1934. {$EXTERNALSYM SPEAKER_TOP_FRONT_CENTER }
  1935. {$EXTERNALSYM SPEAKER_TOP_FRONT_RIGHT }
  1936. {$EXTERNALSYM SPEAKER_TOP_BACK_LEFT }
  1937. {$EXTERNALSYM SPEAKER_TOP_BACK_CENTER }
  1938. {$EXTERNALSYM SPEAKER_TOP_BACK_RIGHT }
  1939. //
  1940. {$EXTERNALSYM SPEAKER_RESERVED }
  1941. {$EXTERNALSYM SPEAKER_ALL }
  1942. // Speaker Positions for dwChannelMask in WAVEFORMATEXTENSIBLE:
  1943. SPEAKER_FRONT_LEFT = $1;
  1944. SPEAKER_FRONT_RIGHT = $2;
  1945. SPEAKER_FRONT_CENTER = $4;
  1946. SPEAKER_LOW_FREQUENCY = $8;
  1947. SPEAKER_BACK_LEFT = $10;
  1948. SPEAKER_BACK_RIGHT = $20;
  1949. SPEAKER_FRONT_LEFT_OF_CENTER = $40;
  1950. SPEAKER_FRONT_RIGHT_OF_CENTER = $80;
  1951. SPEAKER_BACK_CENTER = $100;
  1952. SPEAKER_SIDE_LEFT = $200;
  1953. SPEAKER_SIDE_RIGHT = $400;
  1954. SPEAKER_TOP_CENTER = $800;
  1955. SPEAKER_TOP_FRONT_LEFT = $1000;
  1956. SPEAKER_TOP_FRONT_CENTER = $2000;
  1957. SPEAKER_TOP_FRONT_RIGHT = $4000;
  1958. SPEAKER_TOP_BACK_LEFT = $8000;
  1959. SPEAKER_TOP_BACK_CENTER = $10000;
  1960. SPEAKER_TOP_BACK_RIGHT = $20000;
  1961. // Bit mask locations reserved for future use
  1962. SPEAKER_RESERVED = $7FFC0000;
  1963. // Used to specify that any possible permutation of speaker configurations
  1964. SPEAKER_ALL = $80000000;
  1965. // specific to Lake of Soft, do not use
  1966. SPEAKER_DEFAULT = $A0000000;
  1967. {$EXTERNALSYM KSAUDIO_SPEAKER_DIRECTOUT }
  1968. {$EXTERNALSYM KSAUDIO_SPEAKER_MONO }
  1969. {$EXTERNALSYM KSAUDIO_SPEAKER_STEREO }
  1970. {$EXTERNALSYM KSAUDIO_SPEAKER_QUAD }
  1971. {$EXTERNALSYM KSAUDIO_SPEAKER_SURROUND }
  1972. {$EXTERNALSYM KSAUDIO_SPEAKER_5POINT1 }
  1973. {$EXTERNALSYM KSAUDIO_SPEAKER_7POINT1 }
  1974. {$EXTERNALSYM KSAUDIO_SPEAKER_5POINT1_SURROUND }
  1975. {$EXTERNALSYM KSAUDIO_SPEAKER_7POINT1_SURROUND }
  1976. {$EXTERNALSYM KSAUDIO_SPEAKER_5POINT1_BACK }
  1977. {$EXTERNALSYM KSAUDIO_SPEAKER_7POINT1_WIDE }
  1978. //
  1979. // DVD Speaker Positions
  1980. {$EXTERNALSYM KSAUDIO_SPEAKER_GROUND_FRONT_LEFT }
  1981. {$EXTERNALSYM KSAUDIO_SPEAKER_GROUND_FRONT_CENTER }
  1982. {$EXTERNALSYM KSAUDIO_SPEAKER_GROUND_FRONT_RIGHT }
  1983. {$EXTERNALSYM KSAUDIO_SPEAKER_GROUND_REAR_LEFT }
  1984. {$EXTERNALSYM KSAUDIO_SPEAKER_GROUND_REAR_RIGHT }
  1985. {$EXTERNALSYM KSAUDIO_SPEAKER_TOP_MIDDLE }
  1986. {$EXTERNALSYM KSAUDIO_SPEAKER_SUPER_WOOFER }
  1987. //
  1988. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_ANALOG }
  1989. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_PCM }
  1990. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_ADPCM }
  1991. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_IEEE_FLOAT }
  1992. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_ALAW }
  1993. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MULAW }
  1994. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_DRM }
  1995. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MPEG }
  1996. //
  1997. {$EXTERNALSYM MEDIASUBTYPE_PCM }
  1998. {$EXTERNALSYM MEDIASUBTYPE_WAVE }
  1999. {$EXTERNALSYM MEDIASUBTYPE_AU }
  2000. {$EXTERNALSYM MEDIASUBTYPE_AIFF }
  2001. //
  2002. {$EXTERNALSYM MEDIASUBTYPE_DRM_Audio }
  2003. {$EXTERNALSYM MEDIASUBTYPE_IEEE_FLOAT }
  2004. {$EXTERNALSYM MEDIASUBTYPE_DOLBY_AC3_SPDIF }
  2005. {$EXTERNALSYM MEDIASUBTYPE_RAW_SPORT }
  2006. {$EXTERNALSYM MEDIASUBTYPE_SPDIF_TAG_241h }
  2007. // DirectSound Speaker Config
  2008. KSAUDIO_SPEAKER_DIRECTOUT = 0;
  2009. KSAUDIO_SPEAKER_MONO = SPEAKER_FRONT_CENTER;
  2010. KSAUDIO_SPEAKER_STEREO = SPEAKER_FRONT_LEFT or SPEAKER_FRONT_RIGHT;
  2011. KSAUDIO_SPEAKER_QUAD = SPEAKER_FRONT_LEFT or SPEAKER_FRONT_RIGHT or
  2012. SPEAKER_BACK_LEFT or SPEAKER_BACK_RIGHT;
  2013. //
  2014. KSAUDIO_SPEAKER_SURROUND = SPEAKER_FRONT_LEFT or SPEAKER_FRONT_RIGHT or
  2015. SPEAKER_FRONT_CENTER or SPEAKER_BACK_CENTER;
  2016. //
  2017. KSAUDIO_SPEAKER_5POINT1 = SPEAKER_FRONT_LEFT or SPEAKER_FRONT_RIGHT or
  2018. SPEAKER_FRONT_CENTER or SPEAKER_LOW_FREQUENCY or
  2019. SPEAKER_BACK_LEFT or SPEAKER_BACK_RIGHT;
  2020. //
  2021. KSAUDIO_SPEAKER_7POINT1 = SPEAKER_FRONT_LEFT or SPEAKER_FRONT_RIGHT or
  2022. SPEAKER_FRONT_CENTER or SPEAKER_LOW_FREQUENCY or
  2023. SPEAKER_BACK_LEFT or SPEAKER_BACK_RIGHT or
  2024. SPEAKER_FRONT_LEFT_OF_CENTER or SPEAKER_FRONT_RIGHT_OF_CENTER;
  2025. //
  2026. KSAUDIO_SPEAKER_5POINT1_SURROUND = SPEAKER_FRONT_LEFT or SPEAKER_FRONT_RIGHT or
  2027. SPEAKER_FRONT_CENTER or SPEAKER_LOW_FREQUENCY or
  2028. SPEAKER_SIDE_LEFT or SPEAKER_SIDE_RIGHT;
  2029. //
  2030. KSAUDIO_SPEAKER_7POINT1_SURROUND = SPEAKER_FRONT_LEFT or SPEAKER_FRONT_RIGHT or
  2031. SPEAKER_FRONT_CENTER or SPEAKER_LOW_FREQUENCY or
  2032. SPEAKER_BACK_LEFT or SPEAKER_BACK_RIGHT or
  2033. SPEAKER_SIDE_LEFT or SPEAKER_SIDE_RIGHT;
  2034. //
  2035. // The following are obsolete 5.1 and 7.1 settings (they lack side speakers). Note this means
  2036. // that the default 5.1 and 7.1 settings (KSAUDIO_SPEAKER_5POINT1 and KSAUDIO_SPEAKER_7POINT1 are
  2037. // similarly obsolete but are unchanged for compatibility reasons).
  2038. KSAUDIO_SPEAKER_5POINT1_BACK = KSAUDIO_SPEAKER_5POINT1;
  2039. KSAUDIO_SPEAKER_7POINT1_WIDE = KSAUDIO_SPEAKER_7POINT1;
  2040. // DVD Speaker Positions
  2041. KSAUDIO_SPEAKER_GROUND_FRONT_LEFT = SPEAKER_FRONT_LEFT;
  2042. KSAUDIO_SPEAKER_GROUND_FRONT_CENTER = SPEAKER_FRONT_CENTER;
  2043. KSAUDIO_SPEAKER_GROUND_FRONT_RIGHT = SPEAKER_FRONT_RIGHT;
  2044. KSAUDIO_SPEAKER_GROUND_REAR_LEFT = SPEAKER_BACK_LEFT;
  2045. KSAUDIO_SPEAKER_GROUND_REAR_RIGHT = SPEAKER_BACK_RIGHT;
  2046. KSAUDIO_SPEAKER_TOP_MIDDLE = SPEAKER_TOP_CENTER;
  2047. KSAUDIO_SPEAKER_SUPER_WOOFER = SPEAKER_LOW_FREQUENCY;
  2048. const
  2049. // format guids
  2050. KSDATAFORMAT_SUBTYPE_ANALOG : tGuid = '{6dba3190-67bd-11cf-a0f7-0020afd156e4}';
  2051. KSDATAFORMAT_SUBTYPE_PCM : tGuid = '{00000001-0000-0010-8000-00aa00389b71}';
  2052. KSDATAFORMAT_SUBTYPE_ADPCM : tGuid = '{00000002-0000-0010-8000-00aa00389b71}';
  2053. KSDATAFORMAT_SUBTYPE_IEEE_FLOAT: tGuid = '{00000003-0000-0010-8000-00aa00389b71}';
  2054. KSDATAFORMAT_SUBTYPE_ALAW : tGuid = '{00000006-0000-0010-8000-00aa00389b71}';
  2055. KSDATAFORMAT_SUBTYPE_MULAW : tGuid = '{00000007-0000-0010-8000-00aa00389b71}';
  2056. KSDATAFORMAT_SUBTYPE_DRM : tGuid = '{00000009-0000-0010-8000-00aa00389b71}';
  2057. KSDATAFORMAT_SUBTYPE_MPEG : tGuid = '{00000050-0000-0010-8000-00aa00389b71}';
  2058. // MEDIASUBTYPE_PCM
  2059. MEDIASUBTYPE_PCM : tGuid = '{00000001-0000-0010-8000-00AA00389B71}';
  2060. // MEDIASUBTYPE_WAVE
  2061. MEDIASUBTYPE_WAVE : tGuid = '{e436eb8b-524f-11ce-9f53-0020af0ba770}';
  2062. // MEDIASUBTYPE_AU
  2063. MEDIASUBTYPE_AU : tGuid = '{e436eb8c-524f-11ce-9f53-0020af0ba770}';
  2064. // MEDIASUBTYPE_AIFF
  2065. MEDIASUBTYPE_AIFF : tGuid = '{e436eb8d-524f-11ce-9f53-0020af0ba770}';
  2066. // derived from WAVE_FORMAT_DRM
  2067. MEDIASUBTYPE_DRM_Audio : tGuid = '{00000009-0000-0010-8000-00aa00389b71}';
  2068. // derived from WAVE_FORMAT_IEEE_FLOAT
  2069. MEDIASUBTYPE_IEEE_FLOAT : tGuid = '{00000003-0000-0010-8000-00aa00389b71}';
  2070. // derived from WAVE_FORMAT_DOLBY_AC3_SPDIF
  2071. MEDIASUBTYPE_DOLBY_AC3_SPDIF : tGuid = '{00000092-0000-0010-8000-00aa00389b71}';
  2072. // derived from WAVE_FORMAT_RAW_SPORT
  2073. MEDIASUBTYPE_RAW_SPORT : tGuid = '{00000240-0000-0010-8000-00aa00389b71}';
  2074. // derived from wave format tag 0x241, call it SPDIF_TAG_241h for now
  2075. MEDIASUBTYPE_SPDIF_TAG_241h : tGuid = '{00000241-0000-0010-8000-00aa00389b71}';
  2076. type
  2077. //* Define data for MS ADPCM */
  2078. //
  2079. {$EXTERNALSYM PADPCMCOEFSET }
  2080. {$EXTERNALSYM ADPCMCOEFSET }
  2081. {$EXTERNALSYM NPADPCMCOEFSET }
  2082. {$EXTERNALSYM LPADPCMCOEFSET }
  2083. PADPCMCOEFSET = ^ADPCMCOEFSET;
  2084. ADPCMCOEFSET = record
  2085. //
  2086. iCoef1: shortInt;
  2087. iCoef2: shortInt;
  2088. end;
  2089. NPADPCMCOEFSET = ^ADPCMCOEFSET;
  2090. LPADPCMCOEFSET = ^ADPCMCOEFSET;
  2091. //
  2092. {$EXTERNALSYM PADPCMWAVEFORMAT }
  2093. {$EXTERNALSYM ADPCMWAVEFORMAT }
  2094. {$EXTERNALSYM NPADPCMWAVEFORMAT }
  2095. {$EXTERNALSYM LPADPCMWAVEFORMAT }
  2096. PADPCMWAVEFORMAT = ^ADPCMWAVEFORMAT;
  2097. ADPCMWAVEFORMAT = record
  2098. //
  2099. wfx: WAVEFORMATEX;
  2100. wSamplesPerBlock: WORD;
  2101. wNumCoef: WORD;
  2102. aCoef: array[0..0] of ADPCMCOEFSET;
  2103. end;
  2104. NPADPCMWAVEFORMAT = ^ADPCMWAVEFORMAT;
  2105. LPADPCMWAVEFORMAT = ^ADPCMWAVEFORMAT;
  2106. (*
  2107. //
  2108. // Microsoft's DRM structure definitions
  2109. //
  2110. typedef struct drmwaveformat_tag {
  2111. WAVEFORMATEX wfx;
  2112. WORD wReserved;
  2113. ULONG ulContentId;
  2114. WAVEFORMATEX wfxSecure;
  2115. } DRMWAVEFORMAT;
  2116. typedef DRMWAVEFORMAT *PDRMWAVEFORMAT;
  2117. typedef DRMWAVEFORMAT NEAR *NPDRMWAVEFORMAT;
  2118. typedef DRMWAVEFORMAT FAR *LPDRMWAVEFORMAT;
  2119. //
  2120. // Intel's DVI ADPCM structure definitions
  2121. //
  2122. // for WAVE_FORMAT_DVI_ADPCM (0x0011)
  2123. //
  2124. //
  2125. typedef struct dvi_adpcmwaveformat_tag {
  2126. WAVEFORMATEX wfx;
  2127. WORD wSamplesPerBlock;
  2128. } DVIADPCMWAVEFORMAT;
  2129. typedef DVIADPCMWAVEFORMAT *PDVIADPCMWAVEFORMAT;
  2130. typedef DVIADPCMWAVEFORMAT NEAR *NPDVIADPCMWAVEFORMAT;
  2131. typedef DVIADPCMWAVEFORMAT FAR *LPDVIADPCMWAVEFORMAT;
  2132. //
  2133. // IMA endorsed ADPCM structure definitions--note that this is exactly
  2134. // the same format as Intel's DVI ADPCM.
  2135. //
  2136. // for WAVE_FORMAT_IMA_ADPCM (0x0011)
  2137. //
  2138. //
  2139. typedef struct ima_adpcmwaveformat_tag {
  2140. WAVEFORMATEX wfx;
  2141. WORD wSamplesPerBlock;
  2142. } IMAADPCMWAVEFORMAT;
  2143. typedef IMAADPCMWAVEFORMAT *PIMAADPCMWAVEFORMAT;
  2144. typedef IMAADPCMWAVEFORMAT NEAR *NPIMAADPCMWAVEFORMAT;
  2145. typedef IMAADPCMWAVEFORMAT FAR *LPIMAADPCMWAVEFORMAT;
  2146. /*
  2147. //VideoLogic's Media Space ADPCM Structure definitions
  2148. // for WAVE_FORMAT_MEDIASPACE_ADPCM (0x0012)
  2149. //
  2150. //
  2151. */
  2152. typedef struct mediaspace_adpcmwaveformat_tag {
  2153. WAVEFORMATEX wfx;
  2154. WORD wRevision;
  2155. } MEDIASPACEADPCMWAVEFORMAT;
  2156. typedef MEDIASPACEADPCMWAVEFORMAT *PMEDIASPACEADPCMWAVEFORMAT;
  2157. typedef MEDIASPACEADPCMWAVEFORMAT NEAR *NPMEDIASPACEADPCMWAVEFORMAT;
  2158. typedef MEDIASPACEADPCMWAVEFORMAT FAR *LPMEDIASPACEADPCMWAVEFORMAT;
  2159. //
  2160. // Sierra Semiconductor
  2161. //
  2162. // for WAVE_FORMAT_SIERRA_ADPCM (0x0013)
  2163. //
  2164. //
  2165. typedef struct sierra_adpcmwaveformat_tag {
  2166. WAVEFORMATEX wfx;
  2167. WORD wRevision;
  2168. } SIERRAADPCMWAVEFORMAT;
  2169. typedef SIERRAADPCMWAVEFORMAT *PSIERRAADPCMWAVEFORMAT;
  2170. typedef SIERRAADPCMWAVEFORMAT NEAR *NPSIERRAADPCMWAVEFORMAT;
  2171. typedef SIERRAADPCMWAVEFORMAT FAR *LPSIERRAADPCMWAVEFORMAT;
  2172. //
  2173. // Antex Electronics structure definitions
  2174. //
  2175. // for WAVE_FORMAT_G723_ADPCM (0x0014)
  2176. //
  2177. //
  2178. typedef struct g723_adpcmwaveformat_tag {
  2179. WAVEFORMATEX wfx;
  2180. WORD cbExtraSize;
  2181. WORD nAuxBlockSize;
  2182. } G723_ADPCMWAVEFORMAT;
  2183. typedef G723_ADPCMWAVEFORMAT *PG723_ADPCMWAVEFORMAT;
  2184. typedef G723_ADPCMWAVEFORMAT NEAR *NPG723_ADPCMWAVEFORMAT;
  2185. typedef G723_ADPCMWAVEFORMAT FAR *LPG723_ADPCMWAVEFORMAT;
  2186. //
  2187. // DSP Solutions (formerly DIGISPEECH) structure definitions
  2188. //
  2189. // for WAVE_FORMAT_DIGISTD (0x0015)
  2190. //
  2191. //
  2192. typedef struct digistdwaveformat_tag {
  2193. WAVEFORMATEX wfx;
  2194. } DIGISTDWAVEFORMAT;
  2195. typedef DIGISTDWAVEFORMAT *PDIGISTDWAVEFORMAT;
  2196. typedef DIGISTDWAVEFORMAT NEAR *NPDIGISTDWAVEFORMAT;
  2197. typedef DIGISTDWAVEFORMAT FAR *LPDIGISTDWAVEFORMAT;
  2198. //
  2199. // DSP Solutions (formerly DIGISPEECH) structure definitions
  2200. //
  2201. // for WAVE_FORMAT_DIGIFIX (0x0016)
  2202. //
  2203. //
  2204. typedef struct digifixwaveformat_tag {
  2205. WAVEFORMATEX wfx;
  2206. } DIGIFIXWAVEFORMAT;
  2207. typedef DIGIFIXWAVEFORMAT *PDIGIFIXWAVEFORMAT;
  2208. typedef DIGIFIXWAVEFORMAT NEAR *NPDIGIFIXWAVEFORMAT;
  2209. typedef DIGIFIXWAVEFORMAT FAR *LPDIGIFIXWAVEFORMAT;
  2210. //
  2211. // Dialogic Corporation
  2212. // WAVEFORMAT_DIALOGIC_OKI_ADPCM (0x0017)
  2213. //
  2214. typedef struct creative_fastspeechformat_tag{
  2215. WAVEFORMATEX ewf;
  2216. }DIALOGICOKIADPCMWAVEFORMAT;
  2217. typedef DIALOGICOKIADPCMWAVEFORMAT *PDIALOGICOKIADPCMWAVEFORMAT;
  2218. typedef DIALOGICOKIADPCMWAVEFORMAT NEAR *NPDIALOGICOKIADPCMWAVEFORMAT;
  2219. typedef DIALOGICOKIADPCMWAVEFORMAT FAR *LPDIALOGICOKIADPCMWAVEFORMAT;
  2220. //
  2221. // Yamaha Compression's ADPCM structure definitions
  2222. //
  2223. // for WAVE_FORMAT_YAMAHA_ADPCM (0x0020)
  2224. //
  2225. //
  2226. typedef struct yamaha_adpmcwaveformat_tag {
  2227. WAVEFORMATEX wfx;
  2228. } YAMAHA_ADPCMWAVEFORMAT;
  2229. typedef YAMAHA_ADPCMWAVEFORMAT *PYAMAHA_ADPCMWAVEFORMAT;
  2230. typedef YAMAHA_ADPCMWAVEFORMAT NEAR *NPYAMAHA_ADPCMWAVEFORMAT;
  2231. typedef YAMAHA_ADPCMWAVEFORMAT FAR *LPYAMAHA_ADPCMWAVEFORMAT;
  2232. //
  2233. // Speech Compression's Sonarc structure definitions
  2234. //
  2235. // for WAVE_FORMAT_SONARC (0x0021)
  2236. //
  2237. //
  2238. typedef struct sonarcwaveformat_tag {
  2239. WAVEFORMATEX wfx;
  2240. WORD wCompType;
  2241. } SONARCWAVEFORMAT;
  2242. typedef SONARCWAVEFORMAT *PSONARCWAVEFORMAT;
  2243. typedef SONARCWAVEFORMAT NEAR *NPSONARCWAVEFORMAT;
  2244. typedef SONARCWAVEFORMAT FAR *LPSONARCWAVEFORMAT;
  2245. //
  2246. // DSP Groups's TRUESPEECH structure definitions
  2247. //
  2248. // for WAVE_FORMAT_DSPGROUP_TRUESPEECH (0x0022)
  2249. //
  2250. //
  2251. typedef struct truespeechwaveformat_tag {
  2252. WAVEFORMATEX wfx;
  2253. WORD wRevision;
  2254. WORD nSamplesPerBlock;
  2255. BYTE abReserved[28];
  2256. } TRUESPEECHWAVEFORMAT;
  2257. typedef TRUESPEECHWAVEFORMAT *PTRUESPEECHWAVEFORMAT;
  2258. typedef TRUESPEECHWAVEFORMAT NEAR *NPTRUESPEECHWAVEFORMAT;
  2259. typedef TRUESPEECHWAVEFORMAT FAR *LPTRUESPEECHWAVEFORMAT;
  2260. //
  2261. // Echo Speech Corp structure definitions
  2262. //
  2263. // for WAVE_FORMAT_ECHOSC1 (0x0023)
  2264. //
  2265. //
  2266. typedef struct echosc1waveformat_tag {
  2267. WAVEFORMATEX wfx;
  2268. } ECHOSC1WAVEFORMAT;
  2269. typedef ECHOSC1WAVEFORMAT *PECHOSC1WAVEFORMAT;
  2270. typedef ECHOSC1WAVEFORMAT NEAR *NPECHOSC1WAVEFORMAT;
  2271. typedef ECHOSC1WAVEFORMAT FAR *LPECHOSC1WAVEFORMAT;
  2272. //
  2273. // Audiofile Inc.structure definitions
  2274. //
  2275. // for WAVE_FORMAT_AUDIOFILE_AF36 (0x0024)
  2276. //
  2277. //
  2278. typedef struct audiofile_af36waveformat_tag {
  2279. WAVEFORMATEX wfx;
  2280. } AUDIOFILE_AF36WAVEFORMAT;
  2281. typedef AUDIOFILE_AF36WAVEFORMAT *PAUDIOFILE_AF36WAVEFORMAT;
  2282. typedef AUDIOFILE_AF36WAVEFORMAT NEAR *NPAUDIOFILE_AF36WAVEFORMAT;
  2283. typedef AUDIOFILE_AF36WAVEFORMAT FAR *LPAUDIOFILE_AF36WAVEFORMAT;
  2284. //
  2285. // Audio Processing Technology structure definitions
  2286. //
  2287. // for WAVE_FORMAT_APTX (0x0025)
  2288. //
  2289. //
  2290. typedef struct aptxwaveformat_tag {
  2291. WAVEFORMATEX wfx;
  2292. } APTXWAVEFORMAT;
  2293. typedef APTXWAVEFORMAT *PAPTXWAVEFORMAT;
  2294. typedef APTXWAVEFORMAT NEAR *NPAPTXWAVEFORMAT;
  2295. typedef APTXWAVEFORMAT FAR *LPAPTXWAVEFORMAT;
  2296. //
  2297. // Audiofile Inc.structure definitions
  2298. //
  2299. // for WAVE_FORMAT_AUDIOFILE_AF10 (0x0026)
  2300. //
  2301. //
  2302. typedef struct audiofile_af10waveformat_tag {
  2303. WAVEFORMATEX wfx;
  2304. } AUDIOFILE_AF10WAVEFORMAT;
  2305. typedef AUDIOFILE_AF10WAVEFORMAT *PAUDIOFILE_AF10WAVEFORMAT;
  2306. typedef AUDIOFILE_AF10WAVEFORMAT NEAR *NPAUDIOFILE_AF10WAVEFORMAT;
  2307. typedef AUDIOFILE_AF10WAVEFORMAT FAR *LPAUDIOFILE_AF10WAVEFORMAT;
  2308. //
  2309. /* Dolby's AC-2 wave format structure definition
  2310. WAVE_FORMAT_DOLBY_AC2 (0x0030)*/
  2311. //
  2312. typedef struct dolbyac2waveformat_tag {
  2313. WAVEFORMATEX wfx;
  2314. WORD nAuxBitsCode;
  2315. } DOLBYAC2WAVEFORMAT;
  2316. /*Microsoft's */
  2317. // WAVE_FORMAT_GSM 610 0x0031
  2318. //
  2319. typedef struct gsm610waveformat_tag {
  2320. WAVEFORMATEX wfx;
  2321. WORD wSamplesPerBlock;
  2322. } GSM610WAVEFORMAT;
  2323. typedef GSM610WAVEFORMAT *PGSM610WAVEFORMAT;
  2324. typedef GSM610WAVEFORMAT NEAR *NPGSM610WAVEFORMAT;
  2325. typedef GSM610WAVEFORMAT FAR *LPGSM610WAVEFORMAT;
  2326. //
  2327. // Antex Electronics Corp
  2328. //
  2329. // for WAVE_FORMAT_ADPCME (0x0033)
  2330. //
  2331. //
  2332. typedef struct adpcmewaveformat_tag {
  2333. WAVEFORMATEX wfx;
  2334. WORD wSamplesPerBlock;
  2335. } ADPCMEWAVEFORMAT;
  2336. typedef ADPCMEWAVEFORMAT *PADPCMEWAVEFORMAT;
  2337. typedef ADPCMEWAVEFORMAT NEAR *NPADPCMEWAVEFORMAT;
  2338. typedef ADPCMEWAVEFORMAT FAR *LPADPCMEWAVEFORMAT;
  2339. /* Control Resources Limited */
  2340. // WAVE_FORMAT_CONTROL_RES_VQLPC 0x0034
  2341. //
  2342. typedef struct contres_vqlpcwaveformat_tag {
  2343. WAVEFORMATEX wfx;
  2344. WORD wSamplesPerBlock;
  2345. } CONTRESVQLPCWAVEFORMAT;
  2346. typedef CONTRESVQLPCWAVEFORMAT *PCONTRESVQLPCWAVEFORMAT;
  2347. typedef CONTRESVQLPCWAVEFORMAT NEAR *NPCONTRESVQLPCWAVEFORMAT;
  2348. typedef CONTRESVQLPCWAVEFORMAT FAR *LPCONTRESVQLPCWAVEFORMAT;
  2349. //
  2350. //
  2351. //
  2352. // for WAVE_FORMAT_DIGIREAL (0x0035)
  2353. //
  2354. //
  2355. typedef struct digirealwaveformat_tag {
  2356. WAVEFORMATEX wfx;
  2357. WORD wSamplesPerBlock;
  2358. } DIGIREALWAVEFORMAT;
  2359. typedef DIGIREALWAVEFORMAT *PDIGIREALWAVEFORMAT;
  2360. typedef DIGIREALWAVEFORMAT NEAR *NPDIGIREALWAVEFORMAT;
  2361. typedef DIGIREALWAVEFORMAT FAR *LPDIGIREALWAVEFORMAT;
  2362. //
  2363. // DSP Solutions
  2364. //
  2365. // for WAVE_FORMAT_DIGIADPCM (0x0036)
  2366. //
  2367. //
  2368. typedef struct digiadpcmmwaveformat_tag {
  2369. WAVEFORMATEX wfx;
  2370. WORD wSamplesPerBlock;
  2371. } DIGIADPCMWAVEFORMAT;
  2372. typedef DIGIADPCMWAVEFORMAT *PDIGIADPCMWAVEFORMAT;
  2373. typedef DIGIADPCMWAVEFORMAT NEAR *NPDIGIADPCMWAVEFORMAT;
  2374. typedef DIGIADPCMWAVEFORMAT FAR *LPDIGIADPCMWAVEFORMAT;
  2375. /* Control Resources Limited */
  2376. // WAVE_FORMAT_CONTROL_RES_CR10 0x0037
  2377. //
  2378. typedef struct contres_cr10waveformat_tag {
  2379. WAVEFORMATEX wfx;
  2380. WORD wSamplesPerBlock;
  2381. } CONTRESCR10WAVEFORMAT;
  2382. typedef CONTRESCR10WAVEFORMAT *PCONTRESCR10WAVEFORMAT;
  2383. typedef CONTRESCR10WAVEFORMAT NEAR *NPCONTRESCR10WAVEFORMAT;
  2384. typedef CONTRESCR10WAVEFORMAT FAR *LPCONTRESCR10WAVEFORMAT;
  2385. //
  2386. // Natural Microsystems
  2387. //
  2388. // for WAVE_FORMAT_NMS_VBXADPCM (0x0038)
  2389. //
  2390. //
  2391. typedef struct nms_vbxadpcmmwaveformat_tag {
  2392. WAVEFORMATEX wfx;
  2393. WORD wSamplesPerBlock;
  2394. } NMS_VBXADPCMWAVEFORMAT;
  2395. typedef NMS_VBXADPCMWAVEFORMAT *PNMS_VBXADPCMWAVEFORMAT;
  2396. typedef NMS_VBXADPCMWAVEFORMAT NEAR *NPNMS_VBXADPCMWAVEFORMAT;
  2397. typedef NMS_VBXADPCMWAVEFORMAT FAR *LPNMS_VBXADPCMWAVEFORMAT;
  2398. //
  2399. // Antex Electronics structure definitions
  2400. //
  2401. // for WAVE_FORMAT_G721_ADPCM (0x0040)
  2402. //
  2403. //
  2404. typedef struct g721_adpcmwaveformat_tag {
  2405. WAVEFORMATEX wfx;
  2406. WORD nAuxBlockSize;
  2407. } G721_ADPCMWAVEFORMAT;
  2408. typedef G721_ADPCMWAVEFORMAT *PG721_ADPCMWAVEFORMAT;
  2409. typedef G721_ADPCMWAVEFORMAT NEAR *NPG721_ADPCMWAVEFORMAT;
  2410. typedef G721_ADPCMWAVEFORMAT FAR *LPG721_ADPCMWAVEFORMAT;
  2411. //
  2412. //
  2413. // Microsoft MPEG audio WAV definition
  2414. //
  2415. /* MPEG-1 audio wave format (audio layer only). (0x0050) */
  2416. typedef struct mpeg1waveformat_tag {
  2417. WAVEFORMATEX wfx;
  2418. WORD fwHeadLayer;
  2419. DWORD dwHeadBitrate;
  2420. WORD fwHeadMode;
  2421. WORD fwHeadModeExt;
  2422. WORD wHeadEmphasis;
  2423. WORD fwHeadFlags;
  2424. DWORD dwPTSLow;
  2425. DWORD dwPTSHigh;
  2426. } MPEG1WAVEFORMAT;
  2427. typedef MPEG1WAVEFORMAT *PMPEG1WAVEFORMAT;
  2428. typedef MPEG1WAVEFORMAT NEAR *NPMPEG1WAVEFORMAT;
  2429. typedef MPEG1WAVEFORMAT FAR *LPMPEG1WAVEFORMAT;
  2430. #define ACM_MPEG_LAYER1 (0x0001)
  2431. #define ACM_MPEG_LAYER2 (0x0002)
  2432. #define ACM_MPEG_LAYER3 (0x0004)
  2433. #define ACM_MPEG_STEREO (0x0001)
  2434. #define ACM_MPEG_JOINTSTEREO (0x0002)
  2435. #define ACM_MPEG_DUALCHANNEL (0x0004)
  2436. #define ACM_MPEG_SINGLECHANNEL (0x0008)
  2437. #define ACM_MPEG_PRIVATEBIT (0x0001)
  2438. #define ACM_MPEG_COPYRIGHT (0x0002)
  2439. #define ACM_MPEG_ORIGINALHOME (0x0004)
  2440. #define ACM_MPEG_PROTECTIONBIT (0x0008)
  2441. #define ACM_MPEG_ID_MPEG1 (0x0010)
  2442. //
  2443. // MPEG Layer3 WAVEFORMATEX structure
  2444. // for WAVE_FORMAT_MPEGLAYER3 (0x0055)
  2445. //
  2446. #define MPEGLAYER3_WFX_EXTRA_BYTES 12
  2447. // WAVE_FORMAT_MPEGLAYER3 format sructure
  2448. //
  2449. typedef struct mpeglayer3waveformat_tag {
  2450. WAVEFORMATEX wfx;
  2451. WORD wID;
  2452. DWORD fdwFlags;
  2453. WORD nBlockSize;
  2454. WORD nFramesPerBlock;
  2455. WORD nCodecDelay;
  2456. } MPEGLAYER3WAVEFORMAT;
  2457. typedef MPEGLAYER3WAVEFORMAT *PMPEGLAYER3WAVEFORMAT;
  2458. typedef MPEGLAYER3WAVEFORMAT NEAR *NPMPEGLAYER3WAVEFORMAT;
  2459. typedef MPEGLAYER3WAVEFORMAT FAR *LPMPEGLAYER3WAVEFORMAT;
  2460. //==========================================================================;
  2461. #define MPEGLAYER3_ID_UNKNOWN 0
  2462. #define MPEGLAYER3_ID_MPEG 1
  2463. #define MPEGLAYER3_ID_CONSTANTFRAMESIZE 2
  2464. #define MPEGLAYER3_FLAG_PADDING_ISO 0x00000000
  2465. #define MPEGLAYER3_FLAG_PADDING_ON 0x00000001
  2466. #define MPEGLAYER3_FLAG_PADDING_OFF 0x00000002
  2467. //
  2468. // Creative's ADPCM structure definitions
  2469. //
  2470. // for WAVE_FORMAT_CREATIVE_ADPCM (0x0200)
  2471. //
  2472. //
  2473. typedef struct creative_adpcmwaveformat_tag {
  2474. WAVEFORMATEX wfx;
  2475. WORD wRevision;
  2476. } CREATIVEADPCMWAVEFORMAT;
  2477. typedef CREATIVEADPCMWAVEFORMAT *PCREATIVEADPCMWAVEFORMAT;
  2478. typedef CREATIVEADPCMWAVEFORMAT NEAR *NPCREATIVEADPCMWAVEFORMAT;
  2479. typedef CREATIVEADPCMWAVEFORMAT FAR *LPCREATIVEADPCMWAVEFORMAT;
  2480. //
  2481. // Creative FASTSPEECH
  2482. // WAVEFORMAT_CREATIVE_FASTSPEECH8 (0x0202)
  2483. //
  2484. typedef struct creative_fastspeech8format_tag {
  2485. WAVEFORMATEX wfx;
  2486. WORD wRevision;
  2487. } CREATIVEFASTSPEECH8WAVEFORMAT;
  2488. typedef CREATIVEFASTSPEECH8WAVEFORMAT *PCREATIVEFASTSPEECH8WAVEFORMAT;
  2489. typedef CREATIVEFASTSPEECH8WAVEFORMAT NEAR *NPCREATIVEFASTSPEECH8WAVEFORMAT;
  2490. typedef CREATIVEFASTSPEECH8WAVEFORMAT FAR *LPCREATIVEFASTSPEECH8WAVEFORMAT;
  2491. //
  2492. // Creative FASTSPEECH
  2493. // WAVEFORMAT_CREATIVE_FASTSPEECH10 (0x0203)
  2494. //
  2495. typedef struct creative_fastspeech10format_tag {
  2496. WAVEFORMATEX wfx;
  2497. WORD wRevision;
  2498. } CREATIVEFASTSPEECH10WAVEFORMAT;
  2499. typedef CREATIVEFASTSPEECH10WAVEFORMAT *PCREATIVEFASTSPEECH10WAVEFORMAT;
  2500. typedef CREATIVEFASTSPEECH10WAVEFORMAT NEAR *NPCREATIVEFASTSPEECH10WAVEFORMAT;
  2501. typedef CREATIVEFASTSPEECH10WAVEFORMAT FAR *LPCREATIVEFASTSPEECH10WAVEFORMAT;
  2502. //
  2503. // Fujitsu FM Towns 'SND' structure
  2504. //
  2505. // for WAVE_FORMAT_FMMTOWNS_SND (0x0300)
  2506. //
  2507. //
  2508. typedef struct fmtowns_snd_waveformat_tag {
  2509. WAVEFORMATEX wfx;
  2510. WORD wRevision;
  2511. } FMTOWNS_SND_WAVEFORMAT;
  2512. typedef FMTOWNS_SND_WAVEFORMAT *PFMTOWNS_SND_WAVEFORMAT;
  2513. typedef FMTOWNS_SND_WAVEFORMAT NEAR *NPFMTOWNS_SND_WAVEFORMAT;
  2514. typedef FMTOWNS_SND_WAVEFORMAT FAR *LPFMTOWNS_SND_WAVEFORMAT;
  2515. //
  2516. // Olivetti structure
  2517. //
  2518. // for WAVE_FORMAT_OLIGSM (0x1000)
  2519. //
  2520. //
  2521. typedef struct oligsmwaveformat_tag {
  2522. WAVEFORMATEX wfx;
  2523. } OLIGSMWAVEFORMAT;
  2524. typedef OLIGSMWAVEFORMAT *POLIGSMWAVEFORMAT;
  2525. typedef OLIGSMWAVEFORMAT NEAR *NPOLIGSMWAVEFORMAT;
  2526. typedef OLIGSMWAVEFORMAT FAR *LPOLIGSMWAVEFORMAT;
  2527. //
  2528. // Olivetti structure
  2529. //
  2530. // for WAVE_FORMAT_OLIADPCM (0x1001)
  2531. //
  2532. //
  2533. typedef struct oliadpcmwaveformat_tag {
  2534. WAVEFORMATEX wfx;
  2535. } OLIADPCMWAVEFORMAT;
  2536. typedef OLIADPCMWAVEFORMAT *POLIADPCMWAVEFORMAT;
  2537. typedef OLIADPCMWAVEFORMAT NEAR *NPOLIADPCMWAVEFORMAT ;
  2538. typedef OLIADPCMWAVEFORMAT FAR *LPOLIADPCMWAVEFORMAT;
  2539. //
  2540. // Olivetti structure
  2541. //
  2542. // for WAVE_FORMAT_OLICELP (0x1002)
  2543. //
  2544. //
  2545. typedef struct olicelpwaveformat_tag {
  2546. WAVEFORMATEX wfx;
  2547. } OLICELPWAVEFORMAT;
  2548. typedef OLICELPWAVEFORMAT *POLICELPWAVEFORMAT;
  2549. typedef OLICELPWAVEFORMAT NEAR *NPOLICELPWAVEFORMAT ;
  2550. typedef OLICELPWAVEFORMAT FAR *LPOLICELPWAVEFORMAT;
  2551. //
  2552. // Olivetti structure
  2553. //
  2554. // for WAVE_FORMAT_OLISBC (0x1003)
  2555. //
  2556. //
  2557. typedef struct olisbcwaveformat_tag {
  2558. WAVEFORMATEX wfx;
  2559. } OLISBCWAVEFORMAT;
  2560. typedef OLISBCWAVEFORMAT *POLISBCWAVEFORMAT;
  2561. typedef OLISBCWAVEFORMAT NEAR *NPOLISBCWAVEFORMAT ;
  2562. typedef OLISBCWAVEFORMAT FAR *LPOLISBCWAVEFORMAT;
  2563. //
  2564. // Olivetti structure
  2565. //
  2566. // for WAVE_FORMAT_OLIOPR (0x1004)
  2567. //
  2568. //
  2569. typedef struct olioprwaveformat_tag {
  2570. WAVEFORMATEX wfx;
  2571. } OLIOPRWAVEFORMAT;
  2572. typedef OLIOPRWAVEFORMAT *POLIOPRWAVEFORMAT;
  2573. typedef OLIOPRWAVEFORMAT NEAR *NPOLIOPRWAVEFORMAT ;
  2574. typedef OLIOPRWAVEFORMAT FAR *LPOLIOPRWAVEFORMAT;
  2575. //
  2576. // Crystal Semiconductor IMA ADPCM format
  2577. //
  2578. // for WAVE_FORMAT_CS_IMAADPCM (0x0039)
  2579. //
  2580. //
  2581. typedef struct csimaadpcmwaveformat_tag {
  2582. WAVEFORMATEX wfx;
  2583. } CSIMAADPCMWAVEFORMAT;
  2584. typedef CSIMAADPCMWAVEFORMAT *PCSIMAADPCMWAVEFORMAT;
  2585. typedef CSIMAADPCMWAVEFORMAT NEAR *NPCSIMAADPCMWAVEFORMAT ;
  2586. typedef CSIMAADPCMWAVEFORMAT FAR *LPCSIMAADPCMWAVEFORMAT;
  2587. *)
  2588. {*
  2589. Returns ACM version and true if ACM is retail (Build = 0)
  2590. }
  2591. function getAcmVersion(var major, minor: byte; var build: Word): bool;
  2592. {*
  2593. Converts mid value to string representation.
  2594. }
  2595. function mid2str(mid: unsigned): string;
  2596. {*
  2597. Converts format value to string representation (using base64 encoding).
  2598. }
  2599. function waveFormat2str(const format: WAVEFORMATEX): aString;
  2600. {*
  2601. Converts string representation of WAVEFORMATEX structure (encoded using base64) to format value.
  2602. If size is too small to hold the structure, this function returns false and size parameter will be set to required size of structure.
  2603. Otherwise it fills the format and returns true.
  2604. }
  2605. function str2waveFormat(const str: aString; var format: WAVEFORMATEX; var size: unsigned): bool; overload;
  2606. {*
  2607. Converts string representation of WAVEFORMATEX structure (encoded using base64) to format value.
  2608. Allocates necessary amount of memory for format parameter.
  2609. }
  2610. function str2waveFormat(const str: aString; var format: pWAVEFORMATEX; var size: unsigned): bool; overload;
  2611. function str2waveFormat(const str: aString; var format: pWAVEFORMATEX): bool; overload;
  2612. {*
  2613. Returns description of given wave format.
  2614. @Returns defStr if format is not supported by driver(s).
  2615. }
  2616. function getFormatDescription(const format: WAVEFORMATEX; driver: HACMDRIVER = 0; defStr: string = ''): string;
  2617. //
  2618. {*
  2619. Allocates wave format with maximum possible size for specified driver.
  2620. @Returns number of bytes allocated.
  2621. }
  2622. function allocateWaveFormat(out format: pWAVEFORMATEX; driver: HACMOBJ = 0): unsigned; overload;
  2623. {*
  2624. Allocates wave format equal to specified source format.
  2625. @Returns number of bytes allocated.
  2626. }
  2627. function allocateWaveFormat(const srcFormat: WAVEFORMATEX; out format: pWAVEFORMATEX): unsigned; overload;
  2628. {*
  2629. Deallocates memory used by format.
  2630. }
  2631. function deleteWaveFormat(format: pWAVEFORMATEX): bool;
  2632. //
  2633. {*
  2634. Returns maximum possible size of wave format for specified driver.
  2635. If driver = 0 function queries all installed drivers.
  2636. }
  2637. function getMaxWaveFormatSize(driver: HACMOBJ = 0): unsigned;
  2638. {*
  2639. Returns maximum possible size of wave filter for specified driver.
  2640. If driver = 0 function queries all installed drivers.
  2641. }
  2642. function getMaxWaveFilterSize(driver: HACMOBJ = 0): unsigned;
  2643. implementation
  2644. uses
  2645. unaUtils;
  2646. const
  2647. msacm32 = 'msacm32.dll';
  2648. // acm
  2649. function acm_getVersion; external msacm32 name 'acmGetVersion';
  2650. function acm_metrics; external msacm32 name 'acmMetrics';
  2651. // acmDriver
  2652. function acm_driverEnum; external msacm32 name 'acmDriverEnum';
  2653. function acm_driverID; external msacm32 name 'acmDriverID';
  2654. function acm_driverAddA; external msacm32 name 'acmDriverAddA';
  2655. function acm_driverAddW; external msacm32 name 'acmDriverAddW';
  2656. function acm_driverAdd; external msacm32 name 'acmDriverAddA';
  2657. function acm_driverRemove; external msacm32 name 'acmDriverRemove';
  2658. function acm_driverOpen; external msacm32 name 'acmDriverOpen';
  2659. function acm_driverClose; external msacm32 name 'acmDriverClose';
  2660. function acm_driverMessage; external msacm32 name 'acmDriverMessage';
  2661. function acm_driverPriority; external msacm32 name 'acmDriverPriority';
  2662. function ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC(): FOURCC;
  2663. begin
  2664. Result := mmioStringToFOURCC('audc', 0);
  2665. end;
  2666. function acm_driverDetailsA; external msacm32 name 'acmDriverDetailsA';
  2667. function acm_driverDetailsW; external msacm32 name 'acmDriverDetailsW';
  2668. function acm_driverDetails; external msacm32 name 'acmDriverDetailsA';
  2669. // acmFormat
  2670. function acm_formatTagDetailsA; external msacm32 name 'acmFormatTagDetailsA';
  2671. function acm_formatTagDetailsW; external msacm32 name 'acmFormatTagDetailsW';
  2672. function acm_formatTagDetails; external msacm32 name 'acmFormatTagDetailsA';
  2673. function acm_formatTagEnumA; external msacm32 name 'acmFormatTagEnumA';
  2674. function acm_formatTagEnumW; external msacm32 name 'acmFormatTagEnumW';
  2675. function acm_formatTagEnum; external msacm32 name 'acmFormatTagEnumA';
  2676. function acm_formatDetailsA; external msacm32 name 'acmFormatDetailsA';
  2677. function acm_formatDetailsW; external msacm32 name 'acmFormatDetailsW';
  2678. function acm_formatDetails; external msacm32 name 'acmFormatDetailsA';
  2679. function acm_formatEnumA; external msacm32 name 'acmFormatEnumA';
  2680. function acm_formatEnumW; external msacm32 name 'acmFormatEnumW';
  2681. function acm_formatEnum; external msacm32 name 'acmFormatEnumA';
  2682. function acm_formatSuggest; external msacm32 name 'acmFormatSuggest';
  2683. function acm_formatChooseA; external msacm32 name 'acmFormatChooseA';
  2684. function acm_formatChooseW; external msacm32 name 'acmFormatChooseW';
  2685. function acm_formatChoose; external msacm32 name 'acmFormatChooseA';
  2686. // acmFilter
  2687. function acm_filterTagDetailsA; external msacm32 name 'acmFilterTagDetailsA';
  2688. function acm_filterTagDetailsW; external msacm32 name 'acmFilterTagDetailsW';
  2689. function acm_filterTagDetails; external msacm32 name 'acmFilterTagDetailsA';
  2690. function acm_filterTagEnumA; external msacm32 name 'acmFilterTagEnumA';
  2691. function acm_filterTagEnumW; external msacm32 name 'acmFilterTagEnumW';
  2692. function acm_filterTagEnum; external msacm32 name 'acmFilterTagEnumA';
  2693. function acm_filterDetailsA; external msacm32 name 'acmFilterDetailsA';
  2694. function acm_filterDetailsW; external msacm32 name 'acmFilterDetailsW';
  2695. function acm_filterDetails; external msacm32 name 'acmFilterDetailsA';
  2696. function acm_filterEnumA; external msacm32 name 'acmFilterEnumA';
  2697. function acm_filterEnumW; external msacm32 name 'acmFilterEnumW';
  2698. function acm_filterEnum; external msacm32 name 'acmFilterEnumA';
  2699. function acm_filterChooseA; external msacm32 name 'acmFilterChooseA';
  2700. function acm_filterChooseW; external msacm32 name 'acmFilterChooseW';
  2701. function acm_filterChoose; external msacm32 name 'acmFilterChooseA';
  2702. // acmStream
  2703. function acm_streamOpen; external msacm32 name 'acmStreamOpen';
  2704. function acm_streamClose; external msacm32 name 'acmStreamClose';
  2705. function acm_streamSize; external msacm32 name 'acmStreamSize';
  2706. function acm_streamReset; external msacm32 name 'acmStreamReset';
  2707. function acm_streamMessage; external msacm32 name 'acmStreamMessage';
  2708. function acm_streamConvert; external msacm32 name 'acmStreamConvert';
  2709. function acm_streamPrepareHeader; external msacm32 name 'acmStreamPrepareHeader';
  2710. function acm_streamUnprepareHeader; external msacm32 name 'acmStreamUnprepareHeader';
  2711. // -- --
  2712. function mid2str(mid: unsigned): string;
  2713. begin
  2714. case (mid) of
  2715. //
  2716. MM_MICROSOFT : Result := 'Microsoft Corporation';
  2717. MM_CREATIVE : Result := 'Creative Labs, Inc.';
  2718. MM_MEDIAVISION : Result := 'Media Vision, Inc.';
  2719. MM_FUJITSU : Result := 'Fujitsu Corp.';
  2720. MM_PRAGMATRAX : Result := 'PRAGMATRAX Software';
  2721. MM_CYRIX : Result := 'Cyrix Corporation';
  2722. MM_PHILIPS_SPEECH_PROCESSING : Result := 'Philips Speech Processing';
  2723. MM_NETXL : Result := 'NetXL, Inc.';
  2724. MM_ZYXEL : Result := 'ZyXEL Communications, Inc.';
  2725. MM_BECUBED : Result := 'BeCubed Software Inc.';
  2726. MM_AARDVARK : Result := 'Aardvark Computer Systems, Inc.';
  2727. MM_BINTEC : Result := 'Bin Tec Communications GmbH';
  2728. MM_HEWLETT_PACKARD : Result := 'Hewlett-Packard Company';
  2729. MM_ACULAB : Result := 'Aculab plc';
  2730. MM_FAITH : Result := 'Faith,Inc.';
  2731. MM_MITEL : Result := 'Mitel Corporation';
  2732. MM_QUANTUM3D : Result := 'Quantum3D, Inc.';
  2733. MM_SNI : Result := 'Siemens-Nixdorf';
  2734. MM_EMU : Result := 'E-mu Systems, Inc.';
  2735. MM_ARTISOFT : Result := 'Artisoft, Inc.';
  2736. MM_TURTLE_BEACH : Result := 'Turtle Beach, Inc.';
  2737. MM_IBM : Result := 'IBM Corporation';
  2738. MM_VOCALTEC : Result := 'Vocaltec Ltd.';
  2739. MM_ROLAND : Result := 'Roland';
  2740. MM_DSP_SOLUTIONS : Result := 'DSP Solutions, Inc.';
  2741. MM_NEC : Result := 'NEC';
  2742. MM_ATI : Result := 'ATI Technologies Inc.';
  2743. MM_WANGLABS : Result := 'Wang Laboratories, Inc.';
  2744. MM_TANDY : Result := 'Tandy Corporation';
  2745. MM_VOYETRA : Result := 'Voyetra';
  2746. MM_ANTEX : Result := 'Antex Electronics Corporation';
  2747. MM_ICL_PS : Result := 'ICL Personal Systems';
  2748. MM_INTEL : Result := 'Intel Corporation';
  2749. MM_GRAVIS : Result := 'Advanced Gravis';
  2750. MM_VAL : Result := 'Video Associates Labs, Inc.';
  2751. MM_INTERACTIVE : Result := 'InterActive Inc.';
  2752. MM_YAMAHA : Result := 'Yamaha Corporation of America';
  2753. MM_EVEREX : Result := 'Everex Systems, Inc.';
  2754. MM_ECHO : Result := 'Echo Speech Corporation';
  2755. MM_SIERRA : Result := 'Sierra Semiconductor Corp';
  2756. MM_CAT : Result := 'Computer Aided Technologies';
  2757. MM_APPS : Result := 'APPS Software International';
  2758. MM_DSP_GROUP : Result := 'DSP Group, Inc.';
  2759. MM_MELABS : Result := 'microEngineering Labs';
  2760. MM_COMPUTER_FRIENDS : Result := 'Computer Friends, Inc.';
  2761. MM_ESS : Result := 'ESS Technology';
  2762. MM_AUDIOFILE : Result := 'Audio, Inc.';
  2763. MM_MOTOROLA : Result := 'Motorola, Inc.';
  2764. MM_CANOPUS : Result := 'Canopus, co., Ltd.';
  2765. MM_EPSON : Result := 'Seiko Epson Corporation';
  2766. MM_TRUEVISION : Result := 'Truevision';
  2767. MM_AZTECH : Result := 'Aztech Labs, Inc.';
  2768. MM_VIDEOLOGIC : Result := 'Videologic';
  2769. MM_SCALACS : Result := 'SCALACS';
  2770. MM_KORG : Result := 'Korg Inc.';
  2771. MM_APT : Result := 'Audio Processing Technology';
  2772. MM_ICS : Result := 'Integrated Circuit Systems, Inc.';
  2773. MM_ITERATEDSYS : Result := 'Iterated Systems, Inc.';
  2774. MM_METHEUS : Result := 'Metheus';
  2775. MM_LOGITECH : Result := 'Logitech, Inc.';
  2776. MM_WINNOV : Result := 'Winnov, Inc.';
  2777. MM_NCR : Result := 'NCR Corporation';
  2778. MM_EXAN : Result := 'EXAN';
  2779. MM_AST : Result := 'AST Research Inc.';
  2780. MM_WILLOWPOND : Result := 'Willow Pond Corporation';
  2781. MM_SONICFOUNDRY : Result := 'Sonic Foundry';
  2782. MM_VITEC : Result := 'Vitec Multimedia';
  2783. MM_MOSCOM : Result := 'MOSCOM Corporation';
  2784. MM_SILICONSOFT : Result := 'Silicon Soft, Inc.';
  2785. MM_TERRATEC : Result := 'TerraTec Electronic GmbH';
  2786. MM_MEDIASONIC : Result := 'MediaSonic Ltd.';
  2787. MM_SANYO : Result := 'SANYO Electric Co., Ltd.';
  2788. MM_SUPERMAC : Result := 'Supermac';
  2789. MM_AUDIOPT : Result := 'Audio Processing Technology';
  2790. MM_NOGATECH : Result := 'NOGATECH Ltd.';
  2791. MM_SPEECHCOMP : Result := 'Speech Compression';
  2792. MM_AHEAD : Result := 'Ahead, Inc.';
  2793. MM_DOLBY : Result := 'Dolby Laboratories';
  2794. MM_OKI : Result := 'OKI';
  2795. MM_AURAVISION : Result := 'AuraVision Corporation';
  2796. MM_OLIVETTI : Result := 'Ing C. Olivetti & C., S.p.A.';
  2797. MM_IOMAGIC : Result := 'I/O Magic Corporation';
  2798. MM_MATSUSHITA : Result := 'Matsushita Electric Industrial Co., Ltd.';
  2799. MM_CONTROLRES : Result := 'Control Resources Limited';
  2800. MM_XEBEC : Result := 'Xebec Multimedia Solutions Limited';
  2801. MM_NEWMEDIA : Result := 'New Media Corporation';
  2802. MM_NMS : Result := 'Natural MicroSystems';
  2803. MM_LYRRUS : Result := 'Lyrrus Inc.';
  2804. MM_COMPUSIC : Result := 'Compusic';
  2805. MM_OPTI : Result := 'OPTi Computers Inc.';
  2806. MM_ADLACC : Result := 'Adlib Accessories Inc.';
  2807. MM_COMPAQ : Result := 'Compaq Computer Corp.';
  2808. MM_DIALOGIC : Result := 'Dialogic Corporation';
  2809. MM_INSOFT : Result := 'InSoft, Inc.';
  2810. MM_MPTUS : Result := 'M.P. Technologies, Inc.';
  2811. MM_WEITEK : Result := 'Weitek';
  2812. MM_LERNOUT_AND_HAUSPIE : Result := 'Lernout & Hauspie';
  2813. MM_QCIAR : Result := 'Quanta Computer Inc.';
  2814. MM_APPLE : Result := 'Apple Computer, Inc.';
  2815. MM_DIGITAL : Result := 'Digital Equipment Corporation';
  2816. MM_MOTU : Result := 'Mark of the Unicorn';
  2817. MM_WORKBIT : Result := 'Workbit Corporation';
  2818. MM_OSITECH : Result := 'Ositech Communications Inc.';
  2819. MM_MIRO : Result := 'miro Computer Products AG';
  2820. MM_CIRRUSLOGIC : Result := 'Cirrus Logic';
  2821. MM_ISOLUTION : Result := 'ISOLUTION B.V.';
  2822. MM_HORIZONS : Result := 'Horizons Technology, Inc.';
  2823. MM_CONCEPTS : Result := 'Computer Concepts Ltd.';
  2824. MM_VTG : Result := 'Voice Technologies Group, Inc.';
  2825. MM_RADIUS : Result := 'Radius';
  2826. MM_ROCKWELL : Result := 'Rockwell International';
  2827. MM_XYZ : Result := 'Co. XYZ for testing';
  2828. MM_OPCODE : Result := 'Opcode Systems';
  2829. MM_VOXWARE : Result := 'Voxware Inc.';
  2830. MM_NORTHERN_TELECOM : Result := 'Northern Telecom Limited';
  2831. MM_APICOM : Result := 'APICOM';
  2832. MM_GRANDE : Result := 'Grande Software';
  2833. MM_ADDX : Result := 'ADDX';
  2834. MM_WILDCAT : Result := 'Wildcat Canyon Software';
  2835. MM_RHETOREX : Result := 'Rhetorex Inc.';
  2836. MM_BROOKTREE : Result := 'Brooktree Corporation';
  2837. MM_ENSONIQ : Result := 'ENSONIQ Corporation';
  2838. MM_FAST : Result := 'FAST Multimedia AG';
  2839. MM_NVIDIA : Result := 'NVidia Corporation';
  2840. MM_OKSORI : Result := 'OKSORI Co., Ltd.';
  2841. MM_DIACOUSTICS : Result := 'DiAcoustics, Inc.';
  2842. MM_GULBRANSEN : Result := 'Gulbransen, Inc.';
  2843. MM_KAY_ELEMETRICS : Result := 'Kay Elemetrics, Inc.';
  2844. MM_CRYSTAL : Result := 'Crystal Semiconductor Corporation';
  2845. MM_SPLASH_STUDIOS : Result := 'Splash Studios';
  2846. MM_QUARTERDECK : Result := 'Quarterdeck Corporation';
  2847. MM_TDK : Result := 'TDK Corporation';
  2848. MM_DIGITAL_AUDIO_LABS : Result := 'Digital Audio Labs, Inc.';
  2849. MM_SEERSYS : Result := 'Seer Systems, Inc.';
  2850. MM_PICTURETEL : Result := 'PictureTel Corporation';
  2851. MM_ATT_MICROELECTRONICS : Result := 'AT&T Microelectronics';
  2852. MM_OSPREY : Result := 'Osprey Technologies, Inc.';
  2853. MM_MEDIATRIX : Result := 'Mediatrix Peripherals';
  2854. MM_SOUNDESIGNS : Result := 'SounDesignS M.C.S. Ltd.';
  2855. MM_ALDIGITAL : Result := 'A.L. Digital Ltd.';
  2856. MM_SPECTRUM_SIGNAL_PROCESSING : Result := 'Spectrum Signal Processing, Inc.';
  2857. MM_ECS : Result := 'Electronic Courseware Systems, Inc.';
  2858. MM_AMD : Result := 'AMD';
  2859. MM_COREDYNAMICS : Result := 'Core Dynamics';
  2860. MM_CANAM : Result := 'CANAM Computers';
  2861. MM_SOFTSOUND : Result := 'Softsound, Ltd.';
  2862. MM_NORRIS : Result := 'Norris Communications, Inc.';
  2863. MM_DDD : Result := 'Danka Data Devices';
  2864. MM_EUPHONICS : Result := 'EuPhonics';
  2865. MM_PRECEPT : Result := 'Precept Software, Inc.';
  2866. MM_CRYSTAL_NET : Result := 'Crystal Net Corporation';
  2867. MM_CHROMATIC : Result := 'Chromatic Research, Inc.';
  2868. MM_VOICEINFO : Result := 'Voice Information Systems, Inc.';
  2869. MM_VIENNASYS : Result := 'Vienna Systems';
  2870. MM_CONNECTIX : Result := 'Connectix Corporation';
  2871. MM_GADGETLABS : Result := 'Gadget Labs LLC';
  2872. MM_FRONTIER : Result := 'Frontier Design Group LLC';
  2873. MM_VIONA : Result := 'Viona Development GmbH';
  2874. MM_CASIO : Result := 'Casio Computer Co., LTD';
  2875. MM_DIAMONDMM : Result := 'Diamond Multimedia';
  2876. MM_S3 : Result := 'S3';
  2877. MM_DVISION : Result := 'D-Vision Systems, Inc.';
  2878. MM_NETSCAPE : Result := 'Netscape Communications';
  2879. MM_SOUNDSPACE : Result := 'Soundspace Audio';
  2880. MM_VANKOEVERING : Result := 'VanKoevering Company';
  2881. MM_QTEAM : Result := 'Q-Team';
  2882. MM_ZEFIRO : Result := 'Zefiro Acoustics';
  2883. MM_STUDER : Result := 'Studer Professional Audio AG';
  2884. MM_FRAUNHOFER_IIS : Result := 'Fraunhofer IIS';
  2885. MM_QUICKNET : Result := 'Quicknet Technologies';
  2886. MM_ALARIS : Result := 'Alaris, Inc.';
  2887. MM_SICRESOURCE : Result := 'SIC Resource Inc.';
  2888. MM_NEOMAGIC : Result := 'NeoMagic Corporation';
  2889. MM_MERGING_TECHNOLOGIES : Result := 'Merging Technologies S.A.';
  2890. MM_XIRLINK : Result := 'Xirlink, Inc.';
  2891. MM_COLORGRAPH : Result := 'Colorgraph (UK) Ltd';
  2892. MM_OTI : Result := 'Oak Technology, Inc.';
  2893. MM_AUREAL : Result := 'Aureal Semiconductor';
  2894. MM_VIVO : Result := 'Vivo Software';
  2895. MM_SHARP : Result := 'Sharp';
  2896. MM_LUCENT : Result := 'Lucent Technologies';
  2897. MM_ATT : Result := 'AT&T Labs, Inc.';
  2898. MM_SUNCOM : Result := 'Sun Communications, Inc.';
  2899. MM_SORVIS : Result := 'Sorenson Vision';
  2900. MM_INVISION : Result := 'InVision Interactive';
  2901. MM_BERKOM : Result := 'Deutsche Telekom Berkom GmbH';
  2902. MM_MARIAN : Result := 'Marian GbR Leipzig';
  2903. MM_DPSINC : Result := 'Digital Processing Systems, Inc.';
  2904. MM_BCB : Result := 'BCB Holdings Inc.';
  2905. MM_MOTIONPIXELS : Result := 'Motion Pixels';
  2906. MM_QDESIGN : Result := 'QDesign Corporation';
  2907. MM_NMP : Result := 'Nokia Mobile Phones';
  2908. MM_DATAFUSION : Result := 'DataFusion Systems (Pty) (Ltd)';
  2909. MM_DUCK : Result := 'The Duck Corporation';
  2910. MM_FTR : Result := 'Future Technology Resources Pty Ltd';
  2911. MM_BERCOS : Result := 'BERCOS GmbH';
  2912. MM_ONLIVE : Result := 'OnLive! Technologies, Inc.';
  2913. MM_SIEMENS_SBC : Result := 'Siemens Business Communications Systems';
  2914. MM_TERALOGIC : Result := 'TeraLogic, Inc.';
  2915. MM_PHONET : Result := 'PhoNet Communications Ltd.';
  2916. MM_WINBOND : Result := 'Winbond Electronics Corp';
  2917. MM_VIRTUALMUSIC : Result := 'Virtual Music, Inc.';
  2918. MM_ENET : Result := 'e-Net, Inc.';
  2919. MM_GUILLEMOT : Result := 'Guillemot International';
  2920. MM_EMAGIC : Result := 'Emagic Soft- und Hardware GmbH';
  2921. MM_MWM : Result := 'MWM Acoustics LLC';
  2922. MM_PACIFICRESEARCH : Result := 'Pacific Research and Engineering Corporation';
  2923. MM_SIPROLAB : Result := 'Sipro Lab Telecom Inc.';
  2924. MM_LYNX : Result := 'Lynx Studio Technology, Inc.';
  2925. MM_SPECTRUM_PRODUCTIONS : Result := 'Spectrum Productions';
  2926. MM_DICTAPHONE : Result := 'Dictaphone Corporation';
  2927. MM_QUALCOMM : Result := 'QUALCOMM, Inc.';
  2928. MM_RZS : Result := 'Ring Zero Systems, Inc.';
  2929. MM_AUDIOSCIENCE : Result := 'AudioScience Inc.';
  2930. MM_PINNACLE : Result := 'Pinnacle Systems, Inc.';
  2931. MM_EES : Result := 'EES Technik fır Musik GmbH';
  2932. MM_HAFTMANN : Result := 'haftmann#software';
  2933. MM_LUCID : Result := 'Lucid Technology, Symetrix Inc.';
  2934. MM_HEADSPACE : Result := 'Headspace, Inc';
  2935. MM_UNISYS : Result := 'UNISYS CORPORATION';
  2936. MM_LUMINOSITI : Result := 'Luminositi, Inc.';
  2937. MM_ACTIVEVOICE : Result := 'ACTIVE VOICE CORPORATION';
  2938. MM_DTS : Result := 'Digital Theater Systems, Inc.';
  2939. MM_DIGIGRAM : Result := 'DIGIGRAM';
  2940. MM_SOFTLAB_NSK : Result := 'Softlab-Nsk';
  2941. MM_FORTEMEDIA : Result := 'ForteMedia, Inc.';
  2942. MM_SONORUS : Result := 'Sonorus, Inc.';
  2943. MM_ARRAY : Result := 'Array Microsystems, Inc.';
  2944. MM_DATARAN : Result := 'Data Translation, Inc.';
  2945. MM_I_LINK : Result := 'I-link Worldwide';
  2946. MM_SELSIUS_SYSTEMS : Result := 'Selsius Systems Inc.';
  2947. MM_ADMOS : Result := 'AdMOS Technology, Inc.';
  2948. MM_LEXICON : Result := 'Lexicon Inc.';
  2949. MM_SGI : Result := 'Silicon Graphics Inc.';
  2950. MM_IPI : Result := 'Interactive Product Inc.';
  2951. MM_ICE : Result := 'IC Ensemble, Inc.';
  2952. MM_VQST : Result := 'ViewQuest Technologies Inc.';
  2953. MM_ETEK : Result := 'eTEK Labs Inc.';
  2954. MM_CS : Result := 'Consistent Software';
  2955. MM_ALESIS : Result := 'Alesis Studio Electronics';
  2956. MM_INTERNET : Result := 'INTERNET Corporation';
  2957. MM_SONY : Result := 'Sony Corporation';
  2958. MM_HYPERACTIVE : Result := 'Hyperactive Audio Systems, Inc.';
  2959. MM_UHER_INFORMATIC : Result := 'UHER informatic GmbH';
  2960. MM_SYDEC_NV : Result := 'Sydec NV';
  2961. MM_FLEXION : Result := 'Flexion Systems Ltd.';
  2962. MM_VIA : Result := 'Via Technologies, Inc.';
  2963. MM_MICRONAS : Result := 'Micronas Semiconductors, Inc.';
  2964. MM_ANALOGDEVICES : Result := 'Analog Devices, Inc.';
  2965. MM_HP : Result := 'Hewlett Packard Company';
  2966. MM_MATROX_DIV : Result := 'Matrox';
  2967. MM_QUICKAUDIO : Result := 'Quick Audio, GbR';
  2968. MM_YOUCOM : Result := 'You/Com Audiocommunicatie BV';
  2969. MM_RICHMOND : Result := 'Richmond Sound Design Ltd.';
  2970. MM_IODD : Result := 'I-O Data Device, Inc.';
  2971. MM_ICCC : Result := 'ICCC A/S';
  2972. MM_3COM : Result := '3COM Corporation';
  2973. MM_MALDEN : Result := 'Malden Electronics Ltd.';
  2974. else Result := 'Unknown manufacturer';
  2975. end;
  2976. end;
  2977. // -- --
  2978. function waveFormat2str(const format: WAVEFORMATEX): aString;
  2979. begin
  2980. result := base64encode(@format, sizeof(format) + choice(WAVE_FORMAT_PCM = format.wFormatTag, -2, format.cbSize));
  2981. end;
  2982. // -- --
  2983. function str2waveFormat(const str: aString; var format: WAVEFORMATEX; var size: unsigned): bool;
  2984. var
  2985. data: aString;
  2986. begin
  2987. data := base64decode(str);
  2988. if (unsigned(length(data)) <= size) then begin
  2989. //
  2990. size := unsigned(length(data));
  2991. if (0 < size) then
  2992. move(data[1], format, size);
  2993. //
  2994. result := true;
  2995. end
  2996. else begin
  2997. //
  2998. size := unsigned(length(data));
  2999. result := false;
  3000. end;
  3001. end;
  3002. // -- --
  3003. function str2waveFormat(const str: aString; var format: pWAVEFORMATEX; var size: unsigned): bool;
  3004. var
  3005. fmt: WAVEFORMATEX;
  3006. begin
  3007. result := false;
  3008. if ((nil = format) or not str2waveFormat(str, format^, size)) then begin
  3009. //
  3010. if ((nil = format) or ((0 < size) and ($1000 > size)){sanity check}) then begin
  3011. //
  3012. // need to allocate format, or need more space for it
  3013. if (deleteWaveFormat(format)) then begin
  3014. //
  3015. if (1 > size) then
  3016. // format is not allocated yet, need to know the required size
  3017. str2waveFormat(str, fmt, size);
  3018. //
  3019. if (0 < size) then begin
  3020. //
  3021. format := malloc(size);
  3022. str2waveFormat(str, format^, size);
  3023. result := true;
  3024. end;
  3025. end;
  3026. end;
  3027. end;
  3028. end;
  3029. // -- --
  3030. function str2waveFormat(const str: aString; var format: pWAVEFORMATEX): bool; overload;
  3031. var
  3032. size: unsigned;
  3033. begin
  3034. size := 0;
  3035. result := str2waveFormat(str, format, size);
  3036. end;
  3037. // -- --
  3038. function getFormatDescription(const format: WAVEFORMATEX; driver: HACMDRIVER; defStr: string): string;
  3039. var
  3040. {$IFNDEF NO_ANSI_SUPPORT }
  3041. detailsA: ACMFORMATDETAILSA;
  3042. {$ENDIF NO_ANSI_SUPPORT }
  3043. detailsW: ACMFORMATDETAILSW;
  3044. begin
  3045. {$IFNDEF NO_ANSI_SUPPORT }
  3046. if (g_wideApiSupported) then begin
  3047. {$ENDIF NO_ANSI_SUPPORT }
  3048. //
  3049. fillChar(detailsW, sizeOf(detailsW), 0);
  3050. //
  3051. detailsW.cbStruct := sizeOf(detailsW);
  3052. detailsW.dwFormatTag := format.wFormatTag;
  3053. detailsW.pwfx := @format;
  3054. detailsW.cbwfx := sizeOf(format) + choice(WAVE_FORMAT_PCM = format.wFormatTag, -2, format.cbSize);
  3055. //
  3056. if (MMSYSERR_NOERROR = acm_formatDetailsW(driver, @detailsW, ACM_FORMATDETAILSF_FORMAT)) then
  3057. result := detailsW.szFormat
  3058. else
  3059. result := defStr;
  3060. {$IFNDEF NO_ANSI_SUPPORT }
  3061. end
  3062. else begin
  3063. //
  3064. fillChar(detailsA, sizeOf(detailsA), 0);
  3065. //
  3066. detailsA.cbStruct := sizeOf(detailsA);
  3067. detailsA.dwFormatTag := format.wFormatTag;
  3068. detailsA.pwfx := @format;
  3069. detailsA.cbwfx := sizeOf(format) + choice(WAVE_FORMAT_PCM = format.wFormatTag, -2, format.cbSize);
  3070. //
  3071. if (MMSYSERR_NOERROR = acm_formatDetailsA(driver, @detailsA, ACM_FORMATDETAILSF_FORMAT)) then
  3072. result := string(detailsA.szFormat)
  3073. else
  3074. result := defStr;
  3075. end;
  3076. {$ENDIF NO_ANSI_SUPPORT }
  3077. end;
  3078. // -- --
  3079. function getAcmVersion(var major, minor: byte; var build: word): bool;
  3080. var
  3081. V: unsigned;
  3082. begin
  3083. V := acm_getVersion();
  3084. major := V shr 24;
  3085. minor := (V shr 16) and $FF;
  3086. build := (V and $FFFF);
  3087. result := (build = 0);
  3088. end;
  3089. // -- --
  3090. function allocateWaveFormat(out format: pWAVEFORMATEX; driver: HACMOBJ): unsigned;
  3091. begin
  3092. result := getMaxWaveFormatSize(driver);
  3093. if (1 > result) then
  3094. result := sizeof(format^);
  3095. //
  3096. format := malloc(result);
  3097. //
  3098. if (result >= sizeOf(format^)) then
  3099. format.cbSize := result - sizeof(format^);
  3100. end;
  3101. // -- --
  3102. function allocateWaveFormat(const srcFormat: WAVEFORMATEX; out format: pWAVEFORMATEX): unsigned;
  3103. var
  3104. additionalSize: int;
  3105. begin
  3106. additionalSize := choice(WAVE_FORMAT_PCM = srcFormat.wFormatTag, -2, srcFormat.cbSize);
  3107. //
  3108. result := sizeOf(srcFormat) + additionalSize;
  3109. //
  3110. format := malloc(result);
  3111. if (result >= sizeOf(format^)) then
  3112. format.cbSize := additionalSize;
  3113. //
  3114. if (0 < result) then
  3115. move(srcFormat, format^, result);
  3116. end;
  3117. // -- --
  3118. function deleteWaveFormat(format: pWaveFormatEx): bool;
  3119. begin
  3120. if (nil <> format) then
  3121. mrealloc(format);
  3122. //
  3123. result := true;
  3124. end;
  3125. // -- --
  3126. function getMaxWaveFormatSize(driver: HACMOBJ): unsigned;
  3127. begin
  3128. if (MMSYSERR_NOERROR <> acm_metrics(driver, ACM_METRIC_MAX_SIZE_FORMAT, result)) then
  3129. result := 0;
  3130. end;
  3131. // -- --
  3132. function getMaxWaveFilterSize(driver: HACMOBJ): unsigned;
  3133. begin
  3134. if (MMSYSERR_NOERROR <> acm_metrics(driver, ACM_METRIC_MAX_SIZE_FILTER, result)) then
  3135. result := 0;
  3136. end;
  3137. end.