Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1950 lines
55 KiB

  1. //==========================================================================;
  2. //
  3. // msacm.h
  4. //
  5. // Copyright (c) 1992-1999 Microsoft Corporation. All Rights Reserved.
  6. //
  7. // Description:
  8. // Audio Compression Manager Public Header File
  9. //
  10. // History:
  11. //
  12. //==========================================================================;
  13. #ifndef _INC_ACM
  14. #define _INC_ACM /* #defined if msacm.h has been included */
  15. #if _MSC_VER > 1000
  16. #pragma once
  17. #endif
  18. #if !defined(_INC_MMREG) || (_INC_MMREG < 142)
  19. #ifndef RC_INVOKED
  20. #error MMREG.H version 142 or greater to be included first
  21. #endif
  22. #endif
  23. #if defined(WIN32) && !defined(_WIN32)
  24. #ifndef RC_INVOKED
  25. #pragma message("MSACM.H: defining _WIN32 because application defined WIN32")
  26. #endif
  27. #define _WIN32
  28. #endif
  29. #if defined(UNICODE) && !defined(_UNICODE)
  30. #ifndef RC_INVOKED
  31. #pragma message("MSACM.H: defining _UNICODE because application defined UNICODE")
  32. #endif
  33. #define _UNICODE
  34. #endif
  35. #include "pshpack1.h" /* Assume byte packing throughout */
  36. #ifdef __cplusplus
  37. extern "C" { /* Assume C declarations for C++ */
  38. #endif /* __cplusplus */
  39. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  40. //
  41. //
  42. //
  43. //
  44. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  45. #ifndef DRV_MAPPER_PREFERRED_INPUT_GET
  46. #define DRV_MAPPER_PREFERRED_INPUT_GET (DRV_USER + 0)
  47. #endif
  48. #ifndef DRV_MAPPER_PREFERRED_OUTPUT_GET
  49. #define DRV_MAPPER_PREFERRED_OUTPUT_GET (DRV_USER + 2)
  50. #endif
  51. #ifndef DRVM_MAPPER_STATUS
  52. #define DRVM_MAPPER 0x2000
  53. #define DRVM_MAPPER_STATUS (DRVM_MAPPER+0)
  54. #endif
  55. #ifndef WIDM_MAPPER_STATUS
  56. #define WIDM_MAPPER_STATUS (DRVM_MAPPER_STATUS + 0)
  57. #define WAVEIN_MAPPER_STATUS_DEVICE 0
  58. #define WAVEIN_MAPPER_STATUS_MAPPED 1
  59. #define WAVEIN_MAPPER_STATUS_FORMAT 2
  60. #endif
  61. #ifndef WODM_MAPPER_STATUS
  62. #define WODM_MAPPER_STATUS (DRVM_MAPPER_STATUS + 0)
  63. #define WAVEOUT_MAPPER_STATUS_DEVICE 0
  64. #define WAVEOUT_MAPPER_STATUS_MAPPED 1
  65. #define WAVEOUT_MAPPER_STATUS_FORMAT 2
  66. #endif
  67. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  68. //
  69. //
  70. //
  71. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  72. #ifdef _WIN32
  73. #define ACMAPI WINAPI
  74. #else
  75. #ifdef _WINDLL
  76. #define ACMAPI _far _pascal _loadds
  77. #else
  78. #define ACMAPI _far _pascal
  79. #endif
  80. #endif
  81. //--------------------------------------------------------------------------;
  82. //
  83. // ACM General API's and Defines
  84. //
  85. //
  86. //
  87. //
  88. //--------------------------------------------------------------------------;
  89. //
  90. // there are four types of 'handles' used by the ACM. the first three
  91. // are unique types that define specific objects:
  92. //
  93. // HACMDRIVERID: used to _identify_ an ACM driver. this identifier can be
  94. // used to _open_ the driver for querying details, etc about the driver.
  95. //
  96. // HACMDRIVER: used to manage a driver (codec, filter, etc). this handle
  97. // is much like a handle to other media drivers--you use it to send
  98. // messages to the converter, query for capabilities, etc.
  99. //
  100. // HACMSTREAM: used to manage a 'stream' (conversion channel) with the
  101. // ACM. you use a stream handle to convert data from one format/type
  102. // to another--much like dealing with a file handle.
  103. //
  104. //
  105. // the fourth handle type is a generic type used on ACM functions that
  106. // can accept two or more of the above handle types (for example the
  107. // acmMetrics and acmDriverID functions).
  108. //
  109. // HACMOBJ: used to identify ACM objects. this handle is used on functions
  110. // that can accept two or more ACM handle types.
  111. //
  112. DECLARE_HANDLE(HACMDRIVERID);
  113. typedef HACMDRIVERID *PHACMDRIVERID;
  114. typedef HACMDRIVERID FAR *LPHACMDRIVERID;
  115. DECLARE_HANDLE(HACMDRIVER);
  116. typedef HACMDRIVER *PHACMDRIVER;
  117. typedef HACMDRIVER FAR *LPHACMDRIVER;
  118. DECLARE_HANDLE(HACMSTREAM);
  119. typedef HACMSTREAM *PHACMSTREAM;
  120. typedef HACMSTREAM FAR *LPHACMSTREAM;
  121. DECLARE_HANDLE(HACMOBJ);
  122. typedef HACMOBJ *PHACMOBJ;
  123. typedef HACMOBJ FAR *LPHACMOBJ;
  124. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  125. //
  126. // ACM Error Codes
  127. //
  128. // Note that these error codes are specific errors that apply to the ACM
  129. // directly--general errors are defined as MMSYSERR_*.
  130. //
  131. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  132. #ifndef _MMRESULT_
  133. #define _MMRESULT_
  134. typedef UINT MMRESULT;
  135. #endif
  136. #define ACMERR_BASE (512)
  137. #define ACMERR_NOTPOSSIBLE (ACMERR_BASE + 0)
  138. #define ACMERR_BUSY (ACMERR_BASE + 1)
  139. #define ACMERR_UNPREPARED (ACMERR_BASE + 2)
  140. #define ACMERR_CANCELED (ACMERR_BASE + 3)
  141. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  142. //
  143. // ACM Window Messages
  144. //
  145. // These window messages are sent by the ACM or ACM drivers to notify
  146. // applications of events.
  147. //
  148. // Note that these window message numbers will also be defined in
  149. // mmsystem.
  150. //
  151. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  152. #define MM_ACM_OPEN (MM_STREAM_OPEN) // conversion callback messages
  153. #define MM_ACM_CLOSE (MM_STREAM_CLOSE)
  154. #define MM_ACM_DONE (MM_STREAM_DONE)
  155. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  156. //
  157. // acmGetVersion()
  158. //
  159. // the ACM version is a 32 bit number that is broken into three parts as
  160. // follows:
  161. //
  162. // bits 24 - 31: 8 bit _major_ version number
  163. // bits 16 - 23: 8 bit _minor_ version number
  164. // bits 0 - 15: 16 bit build number
  165. //
  166. // this is then displayed as follows:
  167. //
  168. // bMajor = (BYTE)(dwVersion >> 24)
  169. // bMinor = (BYTE)(dwVersion >> 16) &
  170. // wBuild = LOWORD(dwVersion)
  171. //
  172. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  173. DWORD ACMAPI acmGetVersion
  174. (
  175. void
  176. );
  177. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  178. //
  179. // acmMetrics()
  180. //
  181. //
  182. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  183. MMRESULT ACMAPI acmMetrics
  184. (
  185. HACMOBJ hao,
  186. UINT uMetric,
  187. LPVOID pMetric
  188. );
  189. #define ACM_METRIC_COUNT_DRIVERS 1
  190. #define ACM_METRIC_COUNT_CODECS 2
  191. #define ACM_METRIC_COUNT_CONVERTERS 3
  192. #define ACM_METRIC_COUNT_FILTERS 4
  193. #define ACM_METRIC_COUNT_DISABLED 5
  194. #define ACM_METRIC_COUNT_HARDWARE 6
  195. #define ACM_METRIC_COUNT_LOCAL_DRIVERS 20
  196. #define ACM_METRIC_COUNT_LOCAL_CODECS 21
  197. #define ACM_METRIC_COUNT_LOCAL_CONVERTERS 22
  198. #define ACM_METRIC_COUNT_LOCAL_FILTERS 23
  199. #define ACM_METRIC_COUNT_LOCAL_DISABLED 24
  200. #define ACM_METRIC_HARDWARE_WAVE_INPUT 30
  201. #define ACM_METRIC_HARDWARE_WAVE_OUTPUT 31
  202. #define ACM_METRIC_MAX_SIZE_FORMAT 50
  203. #define ACM_METRIC_MAX_SIZE_FILTER 51
  204. #define ACM_METRIC_DRIVER_SUPPORT 100
  205. #define ACM_METRIC_DRIVER_PRIORITY 101
  206. //--------------------------------------------------------------------------;
  207. //
  208. // ACM Drivers
  209. //
  210. //
  211. //
  212. //
  213. //--------------------------------------------------------------------------;
  214. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  215. //
  216. // acmDriverEnum()
  217. //
  218. //
  219. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  220. typedef BOOL (CALLBACK *ACMDRIVERENUMCB)
  221. (
  222. HACMDRIVERID hadid,
  223. DWORD_PTR dwInstance,
  224. DWORD fdwSupport
  225. );
  226. MMRESULT ACMAPI acmDriverEnum
  227. (
  228. ACMDRIVERENUMCB fnCallback,
  229. DWORD_PTR dwInstance,
  230. DWORD fdwEnum
  231. );
  232. #define ACM_DRIVERENUMF_NOLOCAL 0x40000000L
  233. #define ACM_DRIVERENUMF_DISABLED 0x80000000L
  234. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  235. //
  236. // acmDriverID()
  237. //
  238. //
  239. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  240. MMRESULT ACMAPI acmDriverID
  241. (
  242. HACMOBJ hao,
  243. LPHACMDRIVERID phadid,
  244. DWORD fdwDriverID
  245. );
  246. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  247. //
  248. // acmDriverAdd()
  249. //
  250. //
  251. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  252. #ifdef _WIN32
  253. MMRESULT ACMAPI acmDriverAddA
  254. (
  255. LPHACMDRIVERID phadid,
  256. HINSTANCE hinstModule,
  257. LPARAM lParam,
  258. DWORD dwPriority,
  259. DWORD fdwAdd
  260. );
  261. MMRESULT ACMAPI acmDriverAddW
  262. (
  263. LPHACMDRIVERID phadid,
  264. HINSTANCE hinstModule,
  265. LPARAM lParam,
  266. DWORD dwPriority,
  267. DWORD fdwAdd
  268. );
  269. #ifdef _UNICODE
  270. #define acmDriverAdd acmDriverAddW
  271. #else
  272. #define acmDriverAdd acmDriverAddA
  273. #endif
  274. #else
  275. MMRESULT ACMAPI acmDriverAdd
  276. (
  277. LPHACMDRIVERID phadid,
  278. HINSTANCE hinstModule,
  279. LPARAM lParam,
  280. DWORD dwPriority,
  281. DWORD fdwAdd
  282. );
  283. #endif
  284. #define ACM_DRIVERADDF_NAME 0x00000001L
  285. #define ACM_DRIVERADDF_FUNCTION 0x00000003L // lParam is a procedure
  286. #define ACM_DRIVERADDF_NOTIFYHWND 0x00000004L // lParam is notify hwnd
  287. #define ACM_DRIVERADDF_TYPEMASK 0x00000007L // driver type mask
  288. #define ACM_DRIVERADDF_LOCAL 0x00000000L // is local to current task
  289. #define ACM_DRIVERADDF_GLOBAL 0x00000008L // is global
  290. //
  291. // prototype for ACM driver procedures that are installed as _functions_
  292. // or _notifations_ instead of as a standalone installable driver.
  293. //
  294. typedef LRESULT (CALLBACK *ACMDRIVERPROC)(DWORD_PTR, HACMDRIVERID, UINT, LPARAM, LPARAM);
  295. typedef ACMDRIVERPROC FAR *LPACMDRIVERPROC;
  296. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  297. //
  298. // acmDriverRemove()
  299. //
  300. //
  301. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  302. MMRESULT ACMAPI acmDriverRemove
  303. (
  304. HACMDRIVERID hadid,
  305. DWORD fdwRemove
  306. );
  307. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  308. //
  309. // acmDriverOpen()
  310. //
  311. //
  312. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  313. MMRESULT ACMAPI acmDriverOpen
  314. (
  315. LPHACMDRIVER phad,
  316. HACMDRIVERID hadid,
  317. DWORD fdwOpen
  318. );
  319. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  320. //
  321. // acmDriverClose()
  322. //
  323. //
  324. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  325. MMRESULT ACMAPI acmDriverClose
  326. (
  327. HACMDRIVER had,
  328. DWORD fdwClose
  329. );
  330. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  331. //
  332. // acmDriverMessage()
  333. //
  334. //
  335. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  336. LRESULT ACMAPI acmDriverMessage
  337. (
  338. HACMDRIVER had,
  339. UINT uMsg,
  340. LPARAM lParam1,
  341. LPARAM lParam2
  342. );
  343. //
  344. //
  345. //
  346. //
  347. #define ACMDM_USER (DRV_USER + 0x0000)
  348. #define ACMDM_RESERVED_LOW (DRV_USER + 0x2000)
  349. #define ACMDM_RESERVED_HIGH (DRV_USER + 0x2FFF)
  350. #define ACMDM_BASE ACMDM_RESERVED_LOW
  351. #define ACMDM_DRIVER_ABOUT (ACMDM_BASE + 11)
  352. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  353. //
  354. // acmDriverPriority
  355. //
  356. //
  357. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  358. MMRESULT ACMAPI acmDriverPriority
  359. (
  360. HACMDRIVERID hadid,
  361. DWORD dwPriority,
  362. DWORD fdwPriority
  363. );
  364. #define ACM_DRIVERPRIORITYF_ENABLE 0x00000001L
  365. #define ACM_DRIVERPRIORITYF_DISABLE 0x00000002L
  366. #define ACM_DRIVERPRIORITYF_ABLEMASK 0x00000003L
  367. #define ACM_DRIVERPRIORITYF_BEGIN 0x00010000L
  368. #define ACM_DRIVERPRIORITYF_END 0x00020000L
  369. #define ACM_DRIVERPRIORITYF_DEFERMASK 0x00030000L
  370. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  371. //
  372. // acmDriverDetails()
  373. //
  374. //
  375. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  376. //
  377. // ACMDRIVERDETAILS
  378. //
  379. // the ACMDRIVERDETAILS structure is used to get various capabilities from
  380. // an ACM driver (codec, converter, filter).
  381. //
  382. #define ACMDRIVERDETAILS_SHORTNAME_CHARS 32
  383. #define ACMDRIVERDETAILS_LONGNAME_CHARS 128
  384. #define ACMDRIVERDETAILS_COPYRIGHT_CHARS 80
  385. #define ACMDRIVERDETAILS_LICENSING_CHARS 128
  386. #define ACMDRIVERDETAILS_FEATURES_CHARS 512
  387. #ifdef _WIN32
  388. typedef struct tACMDRIVERDETAILSA
  389. {
  390. DWORD cbStruct; // number of valid bytes in structure
  391. FOURCC fccType; // compressor type 'audc'
  392. FOURCC fccComp; // sub-type (not used; reserved)
  393. WORD wMid; // manufacturer id
  394. WORD wPid; // product id
  395. DWORD vdwACM; // version of the ACM *compiled* for
  396. DWORD vdwDriver; // version of the driver
  397. DWORD fdwSupport; // misc. support flags
  398. DWORD cFormatTags; // total unique format tags supported
  399. DWORD cFilterTags; // total unique filter tags supported
  400. HICON hicon; // handle to custom icon
  401. char szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
  402. char szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
  403. char szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
  404. char szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
  405. char szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
  406. } ACMDRIVERDETAILSA, *PACMDRIVERDETAILSA, FAR *LPACMDRIVERDETAILSA;
  407. typedef struct tACMDRIVERDETAILSW
  408. {
  409. DWORD cbStruct; // number of valid bytes in structure
  410. FOURCC fccType; // compressor type 'audc'
  411. FOURCC fccComp; // sub-type (not used; reserved)
  412. WORD wMid; // manufacturer id
  413. WORD wPid; // product id
  414. DWORD vdwACM; // version of the ACM *compiled* for
  415. DWORD vdwDriver; // version of the driver
  416. DWORD fdwSupport; // misc. support flags
  417. DWORD cFormatTags; // total unique format tags supported
  418. DWORD cFilterTags; // total unique filter tags supported
  419. HICON hicon; // handle to custom icon
  420. WCHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
  421. WCHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
  422. WCHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
  423. WCHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
  424. WCHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
  425. } ACMDRIVERDETAILSW, *PACMDRIVERDETAILSW, FAR *LPACMDRIVERDETAILSW;
  426. #ifdef _UNICODE
  427. #define ACMDRIVERDETAILS ACMDRIVERDETAILSW
  428. #define PACMDRIVERDETAILS PACMDRIVERDETAILSW
  429. #define LPACMDRIVERDETAILS LPACMDRIVERDETAILSW
  430. #else
  431. #define ACMDRIVERDETAILS ACMDRIVERDETAILSA
  432. #define PACMDRIVERDETAILS PACMDRIVERDETAILSA
  433. #define LPACMDRIVERDETAILS LPACMDRIVERDETAILSA
  434. #endif
  435. #else
  436. typedef struct tACMDRIVERDETAILS
  437. {
  438. DWORD cbStruct; // number of valid bytes in structure
  439. FOURCC fccType; // compressor type 'audc'
  440. FOURCC fccComp; // sub-type (not used; reserved)
  441. WORD wMid; // manufacturer id
  442. WORD wPid; // product id
  443. DWORD vdwACM; // version of the ACM *compiled* for
  444. DWORD vdwDriver; // version of the driver
  445. DWORD fdwSupport; // misc. support flags
  446. DWORD cFormatTags; // total unique format tags supported
  447. DWORD cFilterTags; // total unique filter tags supported
  448. HICON hicon; // handle to custom icon
  449. char szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
  450. char szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
  451. char szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
  452. char szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
  453. char szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
  454. } ACMDRIVERDETAILS, *PACMDRIVERDETAILS, FAR *LPACMDRIVERDETAILS;
  455. #endif
  456. //
  457. // ACMDRIVERDETAILS.fccType
  458. //
  459. // ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC: the FOURCC used in the fccType
  460. // field of the ACMDRIVERDETAILS structure to specify that this is an ACM
  461. // codec designed for audio.
  462. //
  463. //
  464. // ACMDRIVERDETAILS.fccComp
  465. //
  466. // ACMDRIVERDETAILS_FCCCOMP_UNDEFINED: the FOURCC used in the fccComp
  467. // field of the ACMDRIVERDETAILS structure. this is currently an unused
  468. // field.
  469. //
  470. #define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
  471. #define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED mmioFOURCC('\0', '\0', '\0', '\0')
  472. //
  473. // the following flags are used to specify the type of conversion(s) that
  474. // the converter/codec/filter supports. these are placed in the fdwSupport
  475. // field of the ACMDRIVERDETAILS structure. note that a converter can
  476. // support one or more of these flags in any combination.
  477. //
  478. // ACMDRIVERDETAILS_SUPPORTF_CODEC: this flag is set if the driver supports
  479. // conversions from one format tag to another format tag. for example, if a
  480. // converter compresses WAVE_FORMAT_PCM to WAVE_FORMAT_ADPCM, then this bit
  481. // should be set.
  482. //
  483. // ACMDRIVERDETAILS_SUPPORTF_CONVERTER: this flags is set if the driver
  484. // supports conversions on the same format tag. as an example, the PCM
  485. // converter that is built into the ACM sets this bit (and only this bit)
  486. // because it converts only PCM formats (bits, sample rate).
  487. //
  488. // ACMDRIVERDETAILS_SUPPORTF_FILTER: this flag is set if the driver supports
  489. // transformations on a single format. for example, a converter that changed
  490. // the 'volume' of PCM data would set this bit. 'echo' and 'reverb' are
  491. // also filter types.
  492. //
  493. // ACMDRIVERDETAILS_SUPPORTF_HARDWARE: this flag is set if the driver supports
  494. // hardware input and/or output through a waveform device.
  495. //
  496. // ACMDRIVERDETAILS_SUPPORTF_ASYNC: this flag is set if the driver supports
  497. // async conversions.
  498. //
  499. //
  500. // ACMDRIVERDETAILS_SUPPORTF_LOCAL: this flag is set _by the ACM_ if a
  501. // driver has been installed local to the current task. this flag is also
  502. // set in the fdwSupport argument to the enumeration callback function
  503. // for drivers.
  504. //
  505. // ACMDRIVERDETAILS_SUPPORTF_DISABLED: this flag is set _by the ACM_ if a
  506. // driver has been disabled. this flag is also passed set in the fdwSupport
  507. // argument to the enumeration callback function for drivers.
  508. //
  509. #define ACMDRIVERDETAILS_SUPPORTF_CODEC 0x00000001L
  510. #define ACMDRIVERDETAILS_SUPPORTF_CONVERTER 0x00000002L
  511. #define ACMDRIVERDETAILS_SUPPORTF_FILTER 0x00000004L
  512. #define ACMDRIVERDETAILS_SUPPORTF_HARDWARE 0x00000008L
  513. #define ACMDRIVERDETAILS_SUPPORTF_ASYNC 0x00000010L
  514. #define ACMDRIVERDETAILS_SUPPORTF_LOCAL 0x40000000L
  515. #define ACMDRIVERDETAILS_SUPPORTF_DISABLED 0x80000000L
  516. #ifdef _WIN32
  517. MMRESULT ACMAPI acmDriverDetailsA
  518. (
  519. HACMDRIVERID hadid,
  520. LPACMDRIVERDETAILSA padd,
  521. DWORD fdwDetails
  522. );
  523. MMRESULT ACMAPI acmDriverDetailsW
  524. (
  525. HACMDRIVERID hadid,
  526. LPACMDRIVERDETAILSW padd,
  527. DWORD fdwDetails
  528. );
  529. #ifdef _UNICODE
  530. #define acmDriverDetails acmDriverDetailsW
  531. #else
  532. #define acmDriverDetails acmDriverDetailsA
  533. #endif
  534. #else
  535. MMRESULT ACMAPI acmDriverDetails
  536. (
  537. HACMDRIVERID hadid,
  538. LPACMDRIVERDETAILS padd,
  539. DWORD fdwDetails
  540. );
  541. #endif
  542. //--------------------------------------------------------------------------;
  543. //
  544. // ACM Format Tags
  545. //
  546. //
  547. //
  548. //
  549. //--------------------------------------------------------------------------;
  550. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  551. //
  552. // acmFormatTagDetails()
  553. //
  554. //
  555. //
  556. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  557. #define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48
  558. #ifdef _WIN32
  559. typedef struct tACMFORMATTAGDETAILSA
  560. {
  561. DWORD cbStruct;
  562. DWORD dwFormatTagIndex;
  563. DWORD dwFormatTag;
  564. DWORD cbFormatSize;
  565. DWORD fdwSupport;
  566. DWORD cStandardFormats;
  567. char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  568. } ACMFORMATTAGDETAILSA, *PACMFORMATTAGDETAILSA, FAR *LPACMFORMATTAGDETAILSA;
  569. typedef struct tACMFORMATTAGDETAILSW
  570. {
  571. DWORD cbStruct;
  572. DWORD dwFormatTagIndex;
  573. DWORD dwFormatTag;
  574. DWORD cbFormatSize;
  575. DWORD fdwSupport;
  576. DWORD cStandardFormats;
  577. WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  578. } ACMFORMATTAGDETAILSW, *PACMFORMATTAGDETAILSW, FAR *LPACMFORMATTAGDETAILSW;
  579. #ifdef _UNICODE
  580. #define ACMFORMATTAGDETAILS ACMFORMATTAGDETAILSW
  581. #define PACMFORMATTAGDETAILS PACMFORMATTAGDETAILSW
  582. #define LPACMFORMATTAGDETAILS LPACMFORMATTAGDETAILSW
  583. #else
  584. #define ACMFORMATTAGDETAILS ACMFORMATTAGDETAILSA
  585. #define PACMFORMATTAGDETAILS PACMFORMATTAGDETAILSA
  586. #define LPACMFORMATTAGDETAILS LPACMFORMATTAGDETAILSA
  587. #endif
  588. #else
  589. typedef struct tACMFORMATTAGDETAILS
  590. {
  591. DWORD cbStruct;
  592. DWORD dwFormatTagIndex;
  593. DWORD dwFormatTag;
  594. DWORD cbFormatSize;
  595. DWORD fdwSupport;
  596. DWORD cStandardFormats;
  597. char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  598. } ACMFORMATTAGDETAILS, *PACMFORMATTAGDETAILS, FAR *LPACMFORMATTAGDETAILS;
  599. #endif
  600. #ifdef _WIN32
  601. MMRESULT ACMAPI acmFormatTagDetailsA
  602. (
  603. HACMDRIVER had,
  604. LPACMFORMATTAGDETAILSA paftd,
  605. DWORD fdwDetails
  606. );
  607. MMRESULT ACMAPI acmFormatTagDetailsW
  608. (
  609. HACMDRIVER had,
  610. LPACMFORMATTAGDETAILSW paftd,
  611. DWORD fdwDetails
  612. );
  613. #ifdef _UNICODE
  614. #define acmFormatTagDetails acmFormatTagDetailsW
  615. #else
  616. #define acmFormatTagDetails acmFormatTagDetailsA
  617. #endif
  618. #else
  619. MMRESULT ACMAPI acmFormatTagDetails
  620. (
  621. HACMDRIVER had,
  622. LPACMFORMATTAGDETAILS paftd,
  623. DWORD fdwDetails
  624. );
  625. #endif
  626. #define ACM_FORMATTAGDETAILSF_INDEX 0x00000000L
  627. #define ACM_FORMATTAGDETAILSF_FORMATTAG 0x00000001L
  628. #define ACM_FORMATTAGDETAILSF_LARGESTSIZE 0x00000002L
  629. #define ACM_FORMATTAGDETAILSF_QUERYMASK 0x0000000FL
  630. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  631. //
  632. // acmFormatTagEnum()
  633. //
  634. //
  635. //
  636. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  637. #ifdef _WIN32
  638. typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA)
  639. (
  640. HACMDRIVERID hadid,
  641. LPACMFORMATTAGDETAILSA paftd,
  642. DWORD_PTR dwInstance,
  643. DWORD fdwSupport
  644. );
  645. MMRESULT ACMAPI acmFormatTagEnumA
  646. (
  647. HACMDRIVER had,
  648. LPACMFORMATTAGDETAILSA paftd,
  649. ACMFORMATTAGENUMCBA fnCallback,
  650. DWORD_PTR dwInstance,
  651. DWORD fdwEnum
  652. );
  653. typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW)
  654. (
  655. HACMDRIVERID hadid,
  656. LPACMFORMATTAGDETAILSW paftd,
  657. DWORD_PTR dwInstance,
  658. DWORD fdwSupport
  659. );
  660. MMRESULT ACMAPI acmFormatTagEnumW
  661. (
  662. HACMDRIVER had,
  663. LPACMFORMATTAGDETAILSW paftd,
  664. ACMFORMATTAGENUMCBW fnCallback,
  665. DWORD_PTR dwInstance,
  666. DWORD fdwEnum
  667. );
  668. #ifdef _UNICODE
  669. #define ACMFORMATTAGENUMCB ACMFORMATTAGENUMCBW
  670. #define acmFormatTagEnum acmFormatTagEnumW
  671. #else
  672. #define ACMFORMATTAGENUMCB ACMFORMATTAGENUMCBA
  673. #define acmFormatTagEnum acmFormatTagEnumA
  674. #endif
  675. #else
  676. typedef BOOL (CALLBACK *ACMFORMATTAGENUMCB)
  677. (
  678. HACMDRIVERID hadid,
  679. LPACMFORMATTAGDETAILS paftd,
  680. DWORD_PTR dwInstance,
  681. DWORD fdwSupport
  682. );
  683. MMRESULT ACMAPI acmFormatTagEnum
  684. (
  685. HACMDRIVER had,
  686. LPACMFORMATTAGDETAILS paftd,
  687. ACMFORMATTAGENUMCB fnCallback,
  688. DWORD_PTR dwInstance,
  689. DWORD fdwEnum
  690. );
  691. #endif
  692. //--------------------------------------------------------------------------;
  693. //
  694. // ACM Formats
  695. //
  696. //
  697. //
  698. //
  699. //--------------------------------------------------------------------------;
  700. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  701. //
  702. // acmFormatDetails()
  703. //
  704. //
  705. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  706. #define ACMFORMATDETAILS_FORMAT_CHARS 128
  707. #ifdef _WIN32
  708. typedef struct tACMFORMATDETAILSA
  709. {
  710. DWORD cbStruct;
  711. DWORD dwFormatIndex;
  712. DWORD dwFormatTag;
  713. DWORD fdwSupport;
  714. LPWAVEFORMATEX pwfx;
  715. DWORD cbwfx;
  716. char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
  717. } ACMFORMATDETAILSA, *PACMFORMATDETAILSA, FAR *LPACMFORMATDETAILSA;
  718. typedef struct tACMFORMATDETAILSW
  719. {
  720. DWORD cbStruct;
  721. DWORD dwFormatIndex;
  722. DWORD dwFormatTag;
  723. DWORD fdwSupport;
  724. LPWAVEFORMATEX pwfx;
  725. DWORD cbwfx;
  726. WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
  727. } ACMFORMATDETAILSW, *PACMFORMATDETAILSW, FAR *LPACMFORMATDETAILSW;
  728. #ifdef _UNICODE
  729. #define ACMFORMATDETAILS ACMFORMATDETAILSW
  730. #define PACMFORMATDETAILS PACMFORMATDETAILSW
  731. #define LPACMFORMATDETAILS LPACMFORMATDETAILSW
  732. #else
  733. #define ACMFORMATDETAILS ACMFORMATDETAILSA
  734. #define PACMFORMATDETAILS PACMFORMATDETAILSA
  735. #define LPACMFORMATDETAILS LPACMFORMATDETAILSA
  736. #endif
  737. #else
  738. typedef struct tACMFORMATDETAILS
  739. {
  740. DWORD cbStruct;
  741. DWORD dwFormatIndex;
  742. DWORD dwFormatTag;
  743. DWORD fdwSupport;
  744. LPWAVEFORMATEX pwfx;
  745. DWORD cbwfx;
  746. char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
  747. } ACMFORMATDETAILS, *PACMFORMATDETAILS, FAR *LPACMFORMATDETAILS;
  748. #endif
  749. #ifdef _WIN32
  750. MMRESULT ACMAPI acmFormatDetailsA
  751. (
  752. HACMDRIVER had,
  753. LPACMFORMATDETAILSA pafd,
  754. DWORD fdwDetails
  755. );
  756. MMRESULT ACMAPI acmFormatDetailsW
  757. (
  758. HACMDRIVER had,
  759. LPACMFORMATDETAILSW pafd,
  760. DWORD fdwDetails
  761. );
  762. #ifdef _UNICODE
  763. #define acmFormatDetails acmFormatDetailsW
  764. #else
  765. #define acmFormatDetails acmFormatDetailsA
  766. #endif
  767. #else
  768. MMRESULT ACMAPI acmFormatDetails
  769. (
  770. HACMDRIVER had,
  771. LPACMFORMATDETAILS pafd,
  772. DWORD fdwDetails
  773. );
  774. #endif
  775. #define ACM_FORMATDETAILSF_INDEX 0x00000000L
  776. #define ACM_FORMATDETAILSF_FORMAT 0x00000001L
  777. #define ACM_FORMATDETAILSF_QUERYMASK 0x0000000FL
  778. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  779. //
  780. // acmFormatEnum()
  781. //
  782. //
  783. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  784. #ifdef _WIN32
  785. typedef BOOL (CALLBACK *ACMFORMATENUMCBA)
  786. (
  787. HACMDRIVERID hadid,
  788. LPACMFORMATDETAILSA pafd,
  789. DWORD_PTR dwInstance,
  790. DWORD fdwSupport
  791. );
  792. MMRESULT ACMAPI acmFormatEnumA
  793. (
  794. HACMDRIVER had,
  795. LPACMFORMATDETAILSA pafd,
  796. ACMFORMATENUMCBA fnCallback,
  797. DWORD_PTR dwInstance,
  798. DWORD fdwEnum
  799. );
  800. typedef BOOL (CALLBACK *ACMFORMATENUMCBW)
  801. (
  802. HACMDRIVERID hadid,
  803. LPACMFORMATDETAILSW pafd,
  804. DWORD_PTR dwInstance,
  805. DWORD fdwSupport
  806. );
  807. MMRESULT ACMAPI acmFormatEnumW
  808. (
  809. HACMDRIVER had,
  810. LPACMFORMATDETAILSW pafd,
  811. ACMFORMATENUMCBW fnCallback,
  812. DWORD_PTR dwInstance,
  813. DWORD fdwEnum
  814. );
  815. #ifdef _UNICODE
  816. #define ACMFORMATENUMCB ACMFORMATENUMCBW
  817. #define acmFormatEnum acmFormatEnumW
  818. #else
  819. #define ACMFORMATENUMCB ACMFORMATENUMCBA
  820. #define acmFormatEnum acmFormatEnumA
  821. #endif
  822. #else
  823. typedef BOOL (CALLBACK *ACMFORMATENUMCB)
  824. (
  825. HACMDRIVERID hadid,
  826. LPACMFORMATDETAILS pafd,
  827. DWORD_PTR dwInstance,
  828. DWORD fdwSupport
  829. );
  830. MMRESULT ACMAPI acmFormatEnum
  831. (
  832. HACMDRIVER had,
  833. LPACMFORMATDETAILS pafd,
  834. ACMFORMATENUMCB fnCallback,
  835. DWORD_PTR dwInstance,
  836. DWORD fdwEnum
  837. );
  838. #endif
  839. #define ACM_FORMATENUMF_WFORMATTAG 0x00010000L
  840. #define ACM_FORMATENUMF_NCHANNELS 0x00020000L
  841. #define ACM_FORMATENUMF_NSAMPLESPERSEC 0x00040000L
  842. #define ACM_FORMATENUMF_WBITSPERSAMPLE 0x00080000L
  843. #define ACM_FORMATENUMF_CONVERT 0x00100000L
  844. #define ACM_FORMATENUMF_SUGGEST 0x00200000L
  845. #define ACM_FORMATENUMF_HARDWARE 0x00400000L
  846. #define ACM_FORMATENUMF_INPUT 0x00800000L
  847. #define ACM_FORMATENUMF_OUTPUT 0x01000000L
  848. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  849. //
  850. // acmFormatSuggest()
  851. //
  852. //
  853. //
  854. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  855. MMRESULT ACMAPI acmFormatSuggest
  856. (
  857. HACMDRIVER had,
  858. LPWAVEFORMATEX pwfxSrc,
  859. LPWAVEFORMATEX pwfxDst,
  860. DWORD cbwfxDst,
  861. DWORD fdwSuggest
  862. );
  863. #define ACM_FORMATSUGGESTF_WFORMATTAG 0x00010000L
  864. #define ACM_FORMATSUGGESTF_NCHANNELS 0x00020000L
  865. #define ACM_FORMATSUGGESTF_NSAMPLESPERSEC 0x00040000L
  866. #define ACM_FORMATSUGGESTF_WBITSPERSAMPLE 0x00080000L
  867. #define ACM_FORMATSUGGESTF_TYPEMASK 0x00FF0000L
  868. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  869. //
  870. // acmFormatChoose()
  871. //
  872. //
  873. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  874. #ifdef _WIN32
  875. #define ACMHELPMSGSTRINGA "acmchoose_help"
  876. #define ACMHELPMSGSTRINGW L"acmchoose_help"
  877. #define ACMHELPMSGCONTEXTMENUA "acmchoose_contextmenu"
  878. #define ACMHELPMSGCONTEXTMENUW L"acmchoose_contextmenu"
  879. #define ACMHELPMSGCONTEXTHELPA "acmchoose_contexthelp"
  880. #define ACMHELPMSGCONTEXTHELPW L"acmchoose_contexthelp"
  881. #ifdef _UNICODE
  882. #define ACMHELPMSGSTRING ACMHELPMSGSTRINGW
  883. #define ACMHELPMSGCONTEXTMENU ACMHELPMSGCONTEXTMENUW
  884. #define ACMHELPMSGCONTEXTHELP ACMHELPMSGCONTEXTHELPW
  885. #else
  886. #define ACMHELPMSGSTRING ACMHELPMSGSTRINGA
  887. #define ACMHELPMSGCONTEXTMENU ACMHELPMSGCONTEXTMENUA
  888. #define ACMHELPMSGCONTEXTHELP ACMHELPMSGCONTEXTHELPA
  889. #endif
  890. #else
  891. #define ACMHELPMSGSTRING "acmchoose_help"
  892. #define ACMHELPMSGCONTEXTMENU "acmchoose_contextmenu"
  893. #define ACMHELPMSGCONTEXTHELP "acmchoose_contexthelp"
  894. #endif
  895. //
  896. // MM_ACM_FORMATCHOOSE is sent to hook callbacks by the Format Chooser
  897. // Dialog...
  898. //
  899. #define MM_ACM_FORMATCHOOSE (0x8000)
  900. #define FORMATCHOOSE_MESSAGE 0
  901. #define FORMATCHOOSE_FORMATTAG_VERIFY (FORMATCHOOSE_MESSAGE+0)
  902. #define FORMATCHOOSE_FORMAT_VERIFY (FORMATCHOOSE_MESSAGE+1)
  903. #define FORMATCHOOSE_CUSTOM_VERIFY (FORMATCHOOSE_MESSAGE+2)
  904. #ifdef _WIN32
  905. typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCA)
  906. (
  907. HWND hwnd,
  908. UINT uMsg,
  909. WPARAM wParam,
  910. LPARAM lParam
  911. );
  912. typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCW)
  913. (
  914. HWND hwnd,
  915. UINT uMsg,
  916. WPARAM wParam,
  917. LPARAM lParam
  918. );
  919. #ifdef _UNICODE
  920. #define ACMFORMATCHOOSEHOOKPROC ACMFORMATCHOOSEHOOKPROCW
  921. #else
  922. #define ACMFORMATCHOOSEHOOKPROC ACMFORMATCHOOSEHOOKPROCA
  923. #endif
  924. #else
  925. typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROC)
  926. (
  927. HWND hwnd,
  928. UINT uMsg,
  929. WPARAM wParam,
  930. LPARAM lParam
  931. );
  932. #endif
  933. //
  934. //
  935. //
  936. //
  937. #ifdef _WIN32
  938. typedef struct tACMFORMATCHOOSEA
  939. {
  940. DWORD cbStruct; // sizeof(ACMFORMATCHOOSE)
  941. DWORD fdwStyle; // chooser style flags
  942. HWND hwndOwner; // caller's window handle
  943. LPWAVEFORMATEX pwfx; // ptr to wfx buf to receive choice
  944. DWORD cbwfx; // size of mem buf for pwfx
  945. LPCSTR pszTitle; // dialog box title bar
  946. char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  947. char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
  948. LPSTR pszName; // custom name selection
  949. DWORD cchName; // size in chars of mem buf for pszName
  950. DWORD fdwEnum; // format enumeration restrictions
  951. LPWAVEFORMATEX pwfxEnum; // format describing restrictions
  952. HINSTANCE hInstance; // app instance containing dlg template
  953. LPCSTR pszTemplateName; // custom template name
  954. LPARAM lCustData; // data passed to hook fn.
  955. ACMFORMATCHOOSEHOOKPROCA pfnHook; // ptr to hook function
  956. } ACMFORMATCHOOSEA, *PACMFORMATCHOOSEA, FAR *LPACMFORMATCHOOSEA;
  957. typedef struct tACMFORMATCHOOSEW
  958. {
  959. DWORD cbStruct; // sizeof(ACMFORMATCHOOSE)
  960. DWORD fdwStyle; // chooser style flags
  961. HWND hwndOwner; // caller's window handle
  962. LPWAVEFORMATEX pwfx; // ptr to wfx buf to receive choice
  963. DWORD cbwfx; // size of mem buf for pwfx
  964. LPCWSTR pszTitle; // dialog box title bar
  965. WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  966. WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
  967. LPWSTR pszName; // custom name selection
  968. DWORD cchName; // size in chars of mem buf for pszName
  969. DWORD fdwEnum; // format enumeration restrictions
  970. LPWAVEFORMATEX pwfxEnum; // format describing restrictions
  971. HINSTANCE hInstance; // app instance containing dlg template
  972. LPCWSTR pszTemplateName; // custom template name
  973. LPARAM lCustData; // data passed to hook fn.
  974. ACMFORMATCHOOSEHOOKPROCW pfnHook; // ptr to hook function
  975. } ACMFORMATCHOOSEW, *PACMFORMATCHOOSEW, FAR *LPACMFORMATCHOOSEW;
  976. #ifdef _UNICODE
  977. #define ACMFORMATCHOOSE ACMFORMATCHOOSEW
  978. #define PACMFORMATCHOOSE PACMFORMATCHOOSEW
  979. #define LPACMFORMATCHOOSE LPACMFORMATCHOOSEW
  980. #else
  981. #define ACMFORMATCHOOSE ACMFORMATCHOOSEA
  982. #define PACMFORMATCHOOSE PACMFORMATCHOOSEA
  983. #define LPACMFORMATCHOOSE LPACMFORMATCHOOSEA
  984. #endif
  985. #else
  986. typedef struct tACMFORMATCHOOSE
  987. {
  988. DWORD cbStruct; // sizeof(ACMFORMATCHOOSE)
  989. DWORD fdwStyle; // chooser style flags
  990. HWND hwndOwner; // caller's window handle
  991. LPWAVEFORMATEX pwfx; // ptr to wfx buf to receive choice
  992. DWORD cbwfx; // size of mem buf for pwfx
  993. LPCSTR pszTitle; // dialog box title bar
  994. char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  995. char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
  996. LPSTR pszName; // custom name selection
  997. DWORD cchName; // size in chars of mem buf for pszName
  998. DWORD fdwEnum; // format enumeration restrictions
  999. LPWAVEFORMATEX pwfxEnum; // format describing restrictions
  1000. HINSTANCE hInstance; // app instance containing dlg template
  1001. LPCSTR pszTemplateName; // custom template name
  1002. LPARAM lCustData; // data passed to hook fn.
  1003. ACMFORMATCHOOSEHOOKPROC pfnHook; // ptr to hook function
  1004. } ACMFORMATCHOOSE, *PACMFORMATCHOOSE, FAR *LPACMFORMATCHOOSE;
  1005. #endif
  1006. //
  1007. // ACMFORMATCHOOSE.fdwStyle
  1008. //
  1009. //
  1010. //
  1011. #define ACMFORMATCHOOSE_STYLEF_SHOWHELP 0x00000004L
  1012. #define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK 0x00000008L
  1013. #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE 0x00000010L
  1014. #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
  1015. #define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT 0x00000040L
  1016. #define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP 0x00000080L
  1017. #ifdef _WIN32
  1018. MMRESULT ACMAPI acmFormatChooseA
  1019. (
  1020. LPACMFORMATCHOOSEA pafmtc
  1021. );
  1022. MMRESULT ACMAPI acmFormatChooseW
  1023. (
  1024. LPACMFORMATCHOOSEW pafmtc
  1025. );
  1026. #ifdef _UNICODE
  1027. #define acmFormatChoose acmFormatChooseW
  1028. #else
  1029. #define acmFormatChoose acmFormatChooseA
  1030. #endif
  1031. #else
  1032. MMRESULT ACMAPI acmFormatChoose
  1033. (
  1034. LPACMFORMATCHOOSE pafmtc
  1035. );
  1036. #endif
  1037. //--------------------------------------------------------------------------;
  1038. //
  1039. // ACM Filter Tags
  1040. //
  1041. //
  1042. //
  1043. //
  1044. //--------------------------------------------------------------------------;
  1045. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1046. //
  1047. // acmFilterTagDetails()
  1048. //
  1049. //
  1050. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1051. #define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48
  1052. #ifdef _WIN32
  1053. typedef struct tACMFILTERTAGDETAILSA
  1054. {
  1055. DWORD cbStruct;
  1056. DWORD dwFilterTagIndex;
  1057. DWORD dwFilterTag;
  1058. DWORD cbFilterSize;
  1059. DWORD fdwSupport;
  1060. DWORD cStandardFilters;
  1061. char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  1062. } ACMFILTERTAGDETAILSA, *PACMFILTERTAGDETAILSA, FAR *LPACMFILTERTAGDETAILSA;
  1063. typedef struct tACMFILTERTAGDETAILSW
  1064. {
  1065. DWORD cbStruct;
  1066. DWORD dwFilterTagIndex;
  1067. DWORD dwFilterTag;
  1068. DWORD cbFilterSize;
  1069. DWORD fdwSupport;
  1070. DWORD cStandardFilters;
  1071. WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  1072. } ACMFILTERTAGDETAILSW, *PACMFILTERTAGDETAILSW, FAR *LPACMFILTERTAGDETAILSW;
  1073. #ifdef _UNICODE
  1074. #define ACMFILTERTAGDETAILS ACMFILTERTAGDETAILSW
  1075. #define PACMFILTERTAGDETAILS PACMFILTERTAGDETAILSW
  1076. #define LPACMFILTERTAGDETAILS LPACMFILTERTAGDETAILSW
  1077. #else
  1078. #define ACMFILTERTAGDETAILS ACMFILTERTAGDETAILSA
  1079. #define PACMFILTERTAGDETAILS PACMFILTERTAGDETAILSA
  1080. #define LPACMFILTERTAGDETAILS LPACMFILTERTAGDETAILSA
  1081. #endif
  1082. #else
  1083. typedef struct tACMFILTERTAGDETAILS
  1084. {
  1085. DWORD cbStruct;
  1086. DWORD dwFilterTagIndex;
  1087. DWORD dwFilterTag;
  1088. DWORD cbFilterSize;
  1089. DWORD fdwSupport;
  1090. DWORD cStandardFilters;
  1091. char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  1092. } ACMFILTERTAGDETAILS, *PACMFILTERTAGDETAILS, FAR *LPACMFILTERTAGDETAILS;
  1093. #endif
  1094. #ifdef _WIN32
  1095. MMRESULT ACMAPI acmFilterTagDetailsA
  1096. (
  1097. HACMDRIVER had,
  1098. LPACMFILTERTAGDETAILSA paftd,
  1099. DWORD fdwDetails
  1100. );
  1101. MMRESULT ACMAPI acmFilterTagDetailsW
  1102. (
  1103. HACMDRIVER had,
  1104. LPACMFILTERTAGDETAILSW paftd,
  1105. DWORD fdwDetails
  1106. );
  1107. #ifdef _UNICODE
  1108. #define acmFilterTagDetails acmFilterTagDetailsW
  1109. #else
  1110. #define acmFilterTagDetails acmFilterTagDetailsA
  1111. #endif
  1112. #else
  1113. MMRESULT ACMAPI acmFilterTagDetails
  1114. (
  1115. HACMDRIVER had,
  1116. LPACMFILTERTAGDETAILS paftd,
  1117. DWORD fdwDetails
  1118. );
  1119. #endif
  1120. #define ACM_FILTERTAGDETAILSF_INDEX 0x00000000L
  1121. #define ACM_FILTERTAGDETAILSF_FILTERTAG 0x00000001L
  1122. #define ACM_FILTERTAGDETAILSF_LARGESTSIZE 0x00000002L
  1123. #define ACM_FILTERTAGDETAILSF_QUERYMASK 0x0000000FL
  1124. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1125. //
  1126. // acmFilterTagEnum()
  1127. //
  1128. //
  1129. //
  1130. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1131. #ifdef _WIN32
  1132. typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBA)
  1133. (
  1134. HACMDRIVERID hadid,
  1135. LPACMFILTERTAGDETAILSA paftd,
  1136. DWORD_PTR dwInstance,
  1137. DWORD fdwSupport
  1138. );
  1139. MMRESULT ACMAPI acmFilterTagEnumA
  1140. (
  1141. HACMDRIVER had,
  1142. LPACMFILTERTAGDETAILSA paftd,
  1143. ACMFILTERTAGENUMCBA fnCallback,
  1144. DWORD_PTR dwInstance,
  1145. DWORD fdwEnum
  1146. );
  1147. typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBW)
  1148. (
  1149. HACMDRIVERID hadid,
  1150. LPACMFILTERTAGDETAILSW paftd,
  1151. DWORD_PTR dwInstance,
  1152. DWORD fdwSupport
  1153. );
  1154. MMRESULT ACMAPI acmFilterTagEnumW
  1155. (
  1156. HACMDRIVER had,
  1157. LPACMFILTERTAGDETAILSW paftd,
  1158. ACMFILTERTAGENUMCBW fnCallback,
  1159. DWORD_PTR dwInstance,
  1160. DWORD fdwEnum
  1161. );
  1162. #ifdef _UNICODE
  1163. #define ACMFILTERTAGENUMCB ACMFILTERTAGENUMCBW
  1164. #define acmFilterTagEnum acmFilterTagEnumW
  1165. #else
  1166. #define ACMFILTERTAGENUMCB ACMFILTERTAGENUMCBA
  1167. #define acmFilterTagEnum acmFilterTagEnumA
  1168. #endif
  1169. #else
  1170. typedef BOOL (CALLBACK *ACMFILTERTAGENUMCB)
  1171. (
  1172. HACMDRIVERID hadid,
  1173. LPACMFILTERTAGDETAILS paftd,
  1174. DWORD_PTR dwInstance,
  1175. DWORD fdwSupport
  1176. );
  1177. MMRESULT ACMAPI acmFilterTagEnum
  1178. (
  1179. HACMDRIVER had,
  1180. LPACMFILTERTAGDETAILS paftd,
  1181. ACMFILTERTAGENUMCB fnCallback,
  1182. DWORD_PTR dwInstance,
  1183. DWORD fdwEnum
  1184. );
  1185. #endif
  1186. //--------------------------------------------------------------------------;
  1187. //
  1188. // ACM Filters
  1189. //
  1190. //
  1191. //
  1192. //
  1193. //--------------------------------------------------------------------------;
  1194. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1195. //
  1196. // acmFilterDetails()
  1197. //
  1198. //
  1199. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1200. #define ACMFILTERDETAILS_FILTER_CHARS 128
  1201. #ifdef _WIN32
  1202. typedef struct tACMFILTERDETAILSA
  1203. {
  1204. DWORD cbStruct;
  1205. DWORD dwFilterIndex;
  1206. DWORD dwFilterTag;
  1207. DWORD fdwSupport;
  1208. LPWAVEFILTER pwfltr;
  1209. DWORD cbwfltr;
  1210. char szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  1211. } ACMFILTERDETAILSA, *PACMFILTERDETAILSA, FAR *LPACMFILTERDETAILSA;
  1212. typedef struct tACMFILTERDETAILSW
  1213. {
  1214. DWORD cbStruct;
  1215. DWORD dwFilterIndex;
  1216. DWORD dwFilterTag;
  1217. DWORD fdwSupport;
  1218. LPWAVEFILTER pwfltr;
  1219. DWORD cbwfltr;
  1220. WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  1221. } ACMFILTERDETAILSW, *PACMFILTERDETAILSW, FAR *LPACMFILTERDETAILSW;
  1222. #ifdef _UNICODE
  1223. #define ACMFILTERDETAILS ACMFILTERDETAILSW
  1224. #define PACMFILTERDETAILS PACMFILTERDETAILSW
  1225. #define LPACMFILTERDETAILS LPACMFILTERDETAILSW
  1226. #else
  1227. #define ACMFILTERDETAILS ACMFILTERDETAILSA
  1228. #define PACMFILTERDETAILS PACMFILTERDETAILSA
  1229. #define LPACMFILTERDETAILS LPACMFILTERDETAILSA
  1230. #endif
  1231. #else
  1232. typedef struct tACMFILTERDETAILS
  1233. {
  1234. DWORD cbStruct;
  1235. DWORD dwFilterIndex;
  1236. DWORD dwFilterTag;
  1237. DWORD fdwSupport;
  1238. LPWAVEFILTER pwfltr;
  1239. DWORD cbwfltr;
  1240. char szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  1241. } ACMFILTERDETAILS, *PACMFILTERDETAILS, FAR *LPACMFILTERDETAILS;
  1242. #endif
  1243. #ifdef _WIN32
  1244. MMRESULT ACMAPI acmFilterDetailsA
  1245. (
  1246. HACMDRIVER had,
  1247. LPACMFILTERDETAILSA pafd,
  1248. DWORD fdwDetails
  1249. );
  1250. MMRESULT ACMAPI acmFilterDetailsW
  1251. (
  1252. HACMDRIVER had,
  1253. LPACMFILTERDETAILSW pafd,
  1254. DWORD fdwDetails
  1255. );
  1256. #ifdef _UNICODE
  1257. #define acmFilterDetails acmFilterDetailsW
  1258. #else
  1259. #define acmFilterDetails acmFilterDetailsA
  1260. #endif
  1261. #else
  1262. MMRESULT ACMAPI acmFilterDetails
  1263. (
  1264. HACMDRIVER had,
  1265. LPACMFILTERDETAILS pafd,
  1266. DWORD fdwDetails
  1267. );
  1268. #endif
  1269. #define ACM_FILTERDETAILSF_INDEX 0x00000000L
  1270. #define ACM_FILTERDETAILSF_FILTER 0x00000001L
  1271. #define ACM_FILTERDETAILSF_QUERYMASK 0x0000000FL
  1272. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1273. //
  1274. // acmFilterEnum()
  1275. //
  1276. //
  1277. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1278. #ifdef _WIN32
  1279. typedef BOOL (CALLBACK *ACMFILTERENUMCBA)
  1280. (
  1281. HACMDRIVERID hadid,
  1282. LPACMFILTERDETAILSA pafd,
  1283. DWORD_PTR dwInstance,
  1284. DWORD fdwSupport
  1285. );
  1286. MMRESULT ACMAPI acmFilterEnumA
  1287. (
  1288. HACMDRIVER had,
  1289. LPACMFILTERDETAILSA pafd,
  1290. ACMFILTERENUMCBA fnCallback,
  1291. DWORD_PTR dwInstance,
  1292. DWORD fdwEnum
  1293. );
  1294. typedef BOOL (CALLBACK *ACMFILTERENUMCBW)
  1295. (
  1296. HACMDRIVERID hadid,
  1297. LPACMFILTERDETAILSW pafd,
  1298. DWORD_PTR dwInstance,
  1299. DWORD fdwSupport
  1300. );
  1301. MMRESULT ACMAPI acmFilterEnumW
  1302. (
  1303. HACMDRIVER had,
  1304. LPACMFILTERDETAILSW pafd,
  1305. ACMFILTERENUMCBW fnCallback,
  1306. DWORD_PTR dwInstance,
  1307. DWORD fdwEnum
  1308. );
  1309. #ifdef _UNICODE
  1310. #define ACMFILTERENUMCB ACMFILTERENUMCBW
  1311. #define acmFilterEnum acmFilterEnumW
  1312. #else
  1313. #define ACMFILTERENUMCB ACMFILTERENUMCBA
  1314. #define acmFilterEnum acmFilterEnumA
  1315. #endif
  1316. #else
  1317. typedef BOOL (CALLBACK *ACMFILTERENUMCB)
  1318. (
  1319. HACMDRIVERID hadid,
  1320. LPACMFILTERDETAILS pafd,
  1321. DWORD_PTR dwInstance,
  1322. DWORD fdwSupport
  1323. );
  1324. MMRESULT ACMAPI acmFilterEnum
  1325. (
  1326. HACMDRIVER had,
  1327. LPACMFILTERDETAILS pafd,
  1328. ACMFILTERENUMCB fnCallback,
  1329. DWORD_PTR dwInstance,
  1330. DWORD fdwEnum
  1331. );
  1332. #endif
  1333. #define ACM_FILTERENUMF_DWFILTERTAG 0x00010000L
  1334. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1335. //
  1336. // acmFilterChoose()
  1337. //
  1338. //
  1339. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1340. //
  1341. // MM_ACM_FILTERCHOOSE is sent to hook callbacks by the Filter Chooser
  1342. // Dialog...
  1343. //
  1344. #define MM_ACM_FILTERCHOOSE (0x8000)
  1345. #define FILTERCHOOSE_MESSAGE 0
  1346. #define FILTERCHOOSE_FILTERTAG_VERIFY (FILTERCHOOSE_MESSAGE+0)
  1347. #define FILTERCHOOSE_FILTER_VERIFY (FILTERCHOOSE_MESSAGE+1)
  1348. #define FILTERCHOOSE_CUSTOM_VERIFY (FILTERCHOOSE_MESSAGE+2)
  1349. #ifdef _WIN32
  1350. typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCA)
  1351. (
  1352. HWND hwnd,
  1353. UINT uMsg,
  1354. WPARAM wParam,
  1355. LPARAM lParam
  1356. );
  1357. typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCW)
  1358. (
  1359. HWND hwnd,
  1360. UINT uMsg,
  1361. WPARAM wParam,
  1362. LPARAM lParam
  1363. );
  1364. #ifdef _UNICODE
  1365. #define ACMFILTERCHOOSEHOOKPROC ACMFILTERCHOOSEHOOKPROCW
  1366. #else
  1367. #define ACMFILTERCHOOSEHOOKPROC ACMFILTERCHOOSEHOOKPROCA
  1368. #endif
  1369. #else
  1370. typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROC)
  1371. (
  1372. HWND hwnd,
  1373. UINT uMsg,
  1374. WPARAM wParam,
  1375. LPARAM lParam
  1376. );
  1377. #endif
  1378. //
  1379. // ACMFILTERCHOOSE
  1380. //
  1381. //
  1382. #ifdef _WIN32
  1383. typedef struct tACMFILTERCHOOSEA
  1384. {
  1385. DWORD cbStruct; // sizeof(ACMFILTERCHOOSE)
  1386. DWORD fdwStyle; // chooser style flags
  1387. HWND hwndOwner; // caller's window handle
  1388. LPWAVEFILTER pwfltr; // ptr to wfltr buf to receive choice
  1389. DWORD cbwfltr; // size of mem buf for pwfltr
  1390. LPCSTR pszTitle;
  1391. char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  1392. char szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  1393. LPSTR pszName; // custom name selection
  1394. DWORD cchName; // size in chars of mem buf for pszName
  1395. DWORD fdwEnum; // filter enumeration restrictions
  1396. LPWAVEFILTER pwfltrEnum; // filter describing restrictions
  1397. HINSTANCE hInstance; // app instance containing dlg template
  1398. LPCSTR pszTemplateName; // custom template name
  1399. LPARAM lCustData; // data passed to hook fn.
  1400. ACMFILTERCHOOSEHOOKPROCA pfnHook; // ptr to hook function
  1401. } ACMFILTERCHOOSEA, *PACMFILTERCHOOSEA, FAR *LPACMFILTERCHOOSEA;
  1402. typedef struct tACMFILTERCHOOSEW
  1403. {
  1404. DWORD cbStruct; // sizeof(ACMFILTERCHOOSE)
  1405. DWORD fdwStyle; // chooser style flags
  1406. HWND hwndOwner; // caller's window handle
  1407. LPWAVEFILTER pwfltr; // ptr to wfltr buf to receive choice
  1408. DWORD cbwfltr; // size of mem buf for pwfltr
  1409. LPCWSTR pszTitle;
  1410. WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  1411. WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  1412. LPWSTR pszName; // custom name selection
  1413. DWORD cchName; // size in chars of mem buf for pszName
  1414. DWORD fdwEnum; // filter enumeration restrictions
  1415. LPWAVEFILTER pwfltrEnum; // filter describing restrictions
  1416. HINSTANCE hInstance; // app instance containing dlg template
  1417. LPCWSTR pszTemplateName; // custom template name
  1418. LPARAM lCustData; // data passed to hook fn.
  1419. ACMFILTERCHOOSEHOOKPROCW pfnHook; // ptr to hook function
  1420. } ACMFILTERCHOOSEW, *PACMFILTERCHOOSEW, FAR *LPACMFILTERCHOOSEW;
  1421. #ifdef _UNICODE
  1422. #define ACMFILTERCHOOSE ACMFILTERCHOOSEW
  1423. #define PACMFILTERCHOOSE PACMFILTERCHOOSEW
  1424. #define LPACMFILTERCHOOSE LPACMFILTERCHOOSEW
  1425. #else
  1426. #define ACMFILTERCHOOSE ACMFILTERCHOOSEA
  1427. #define PACMFILTERCHOOSE PACMFILTERCHOOSEA
  1428. #define LPACMFILTERCHOOSE LPACMFILTERCHOOSEA
  1429. #endif
  1430. #else
  1431. typedef struct tACMFILTERCHOOSE
  1432. {
  1433. DWORD cbStruct; // sizeof(ACMFILTERCHOOSE)
  1434. DWORD fdwStyle; // chooser style flags
  1435. HWND hwndOwner; // caller's window handle
  1436. LPWAVEFILTER pwfltr; // ptr to wfltr buf to receive choice
  1437. DWORD cbwfltr; // size of mem buf for pwfltr
  1438. LPCSTR pszTitle;
  1439. char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  1440. char szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  1441. LPSTR pszName; // custom name selection
  1442. DWORD cchName; // size in chars of mem buf for pszName
  1443. DWORD fdwEnum; // filter enumeration restrictions
  1444. LPWAVEFILTER pwfltrEnum; // filter describing restrictions
  1445. HINSTANCE hInstance; // app instance containing dlg template
  1446. LPCSTR pszTemplateName; // custom template name
  1447. LPARAM lCustData; // data passed to hook fn.
  1448. ACMFILTERCHOOSEHOOKPROC pfnHook; // ptr to hook function
  1449. } ACMFILTERCHOOSE, *PACMFILTERCHOOSE, FAR *LPACMFILTERCHOOSE;
  1450. #endif
  1451. //
  1452. // ACMFILTERCHOOSE.fdwStyle
  1453. //
  1454. //
  1455. #define ACMFILTERCHOOSE_STYLEF_SHOWHELP 0x00000004L
  1456. #define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK 0x00000008L
  1457. #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE 0x00000010L
  1458. #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
  1459. #define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT 0x00000040L
  1460. #define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP 0x00000080L
  1461. #ifdef _WIN32
  1462. MMRESULT ACMAPI acmFilterChooseA
  1463. (
  1464. LPACMFILTERCHOOSEA pafltrc
  1465. );
  1466. MMRESULT ACMAPI acmFilterChooseW
  1467. (
  1468. LPACMFILTERCHOOSEW pafltrc
  1469. );
  1470. #ifdef _UNICODE
  1471. #define acmFilterChoose acmFilterChooseW
  1472. #else
  1473. #define acmFilterChoose acmFilterChooseA
  1474. #endif
  1475. #else
  1476. MMRESULT ACMAPI acmFilterChoose
  1477. (
  1478. LPACMFILTERCHOOSE pafltrc
  1479. );
  1480. #endif
  1481. //--------------------------------------------------------------------------;
  1482. //
  1483. // ACM Stream API's
  1484. //
  1485. //
  1486. //
  1487. //--------------------------------------------------------------------------;
  1488. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1489. //
  1490. // acmStreamOpen()
  1491. //
  1492. //
  1493. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1494. #ifdef _WIN64
  1495. #define _DRVRESERVED 15
  1496. #else
  1497. #define _DRVRESERVED 10
  1498. #endif // _WIN64
  1499. typedef struct tACMSTREAMHEADER
  1500. {
  1501. DWORD cbStruct; // sizeof(ACMSTREAMHEADER)
  1502. DWORD fdwStatus; // ACMSTREAMHEADER_STATUSF_*
  1503. DWORD_PTR dwUser; // user instance data for hdr
  1504. LPBYTE pbSrc;
  1505. DWORD cbSrcLength;
  1506. DWORD cbSrcLengthUsed;
  1507. DWORD_PTR dwSrcUser; // user instance data for src
  1508. LPBYTE pbDst;
  1509. DWORD cbDstLength;
  1510. DWORD cbDstLengthUsed;
  1511. DWORD_PTR dwDstUser; // user instance data for dst
  1512. DWORD dwReservedDriver[_DRVRESERVED]; // driver reserved work space
  1513. } ACMSTREAMHEADER, *PACMSTREAMHEADER, FAR *LPACMSTREAMHEADER;
  1514. //
  1515. // ACMSTREAMHEADER.fdwStatus
  1516. //
  1517. // ACMSTREAMHEADER_STATUSF_DONE: done bit for async conversions.
  1518. //
  1519. #define ACMSTREAMHEADER_STATUSF_DONE 0x00010000L
  1520. #define ACMSTREAMHEADER_STATUSF_PREPARED 0x00020000L
  1521. #define ACMSTREAMHEADER_STATUSF_INQUEUE 0x00100000L
  1522. MMRESULT ACMAPI acmStreamOpen
  1523. (
  1524. LPHACMSTREAM phas, // pointer to stream handle
  1525. HACMDRIVER had, // optional driver handle
  1526. LPWAVEFORMATEX pwfxSrc, // source format to convert
  1527. LPWAVEFORMATEX pwfxDst, // required destination format
  1528. LPWAVEFILTER pwfltr, // optional filter
  1529. DWORD_PTR dwCallback, // callback
  1530. DWORD_PTR dwInstance, // callback instance data
  1531. DWORD fdwOpen // ACM_STREAMOPENF_* and CALLBACK_*
  1532. );
  1533. #define ACM_STREAMOPENF_QUERY 0x00000001
  1534. #define ACM_STREAMOPENF_ASYNC 0x00000002
  1535. #define ACM_STREAMOPENF_NONREALTIME 0x00000004
  1536. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1537. //
  1538. // acmStreamClose()
  1539. //
  1540. //
  1541. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1542. MMRESULT ACMAPI acmStreamClose
  1543. (
  1544. HACMSTREAM has,
  1545. DWORD fdwClose
  1546. );
  1547. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1548. //
  1549. // acmStreamSize()
  1550. //
  1551. //
  1552. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1553. MMRESULT ACMAPI acmStreamSize
  1554. (
  1555. HACMSTREAM has,
  1556. DWORD cbInput,
  1557. LPDWORD pdwOutputBytes,
  1558. DWORD fdwSize
  1559. );
  1560. #define ACM_STREAMSIZEF_SOURCE 0x00000000L
  1561. #define ACM_STREAMSIZEF_DESTINATION 0x00000001L
  1562. #define ACM_STREAMSIZEF_QUERYMASK 0x0000000FL
  1563. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1564. //
  1565. // acmStreamReset()
  1566. //
  1567. //
  1568. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1569. MMRESULT ACMAPI acmStreamReset
  1570. (
  1571. HACMSTREAM has,
  1572. DWORD fdwReset
  1573. );
  1574. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1575. //
  1576. // acmStreamMessage()
  1577. //
  1578. //
  1579. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1580. MMRESULT ACMAPI acmStreamMessage
  1581. (
  1582. HACMSTREAM has,
  1583. UINT uMsg,
  1584. LPARAM lParam1,
  1585. LPARAM lParam2
  1586. );
  1587. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1588. //
  1589. // acmStreamConvert()
  1590. //
  1591. //
  1592. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1593. MMRESULT ACMAPI acmStreamConvert
  1594. (
  1595. HACMSTREAM has,
  1596. LPACMSTREAMHEADER pash,
  1597. DWORD fdwConvert
  1598. );
  1599. #define ACM_STREAMCONVERTF_BLOCKALIGN 0x00000004
  1600. #define ACM_STREAMCONVERTF_START 0x00000010
  1601. #define ACM_STREAMCONVERTF_END 0x00000020
  1602. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1603. //
  1604. // acmStreamPrepareHeader()
  1605. //
  1606. //
  1607. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1608. MMRESULT ACMAPI acmStreamPrepareHeader
  1609. (
  1610. HACMSTREAM has,
  1611. LPACMSTREAMHEADER pash,
  1612. DWORD fdwPrepare
  1613. );
  1614. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1615. //
  1616. // acmStreamUnprepareHeader()
  1617. //
  1618. //
  1619. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1620. MMRESULT ACMAPI acmStreamUnprepareHeader
  1621. (
  1622. HACMSTREAM has,
  1623. LPACMSTREAMHEADER pash,
  1624. DWORD fdwUnprepare
  1625. );
  1626. #include "poppack.h" /* Revert to default packing */
  1627. #ifdef __cplusplus
  1628. } /* End of extern "C" { */
  1629. #endif /* __cplusplus */
  1630. #endif /* _INC_ACM */