home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / AutoPC / apcsdk10.exe / data1.cab / Emulation_Include_Files / msacm.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-13  |  34.4 KB  |  1,183 lines

  1. // -----------------------------------------------------------------------------
  2. //
  3. //  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  4. //  ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  5. //  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  6. //  PARTICULAR PURPOSE.
  7. //  Copyright (c) 1995, 1996, 1997  Microsoft Corporation
  8. //  
  9. // -----------------------------------------------------------------------------
  10. //
  11. //  msacm.h     Audio Compression Manager Public Header File
  12. //
  13. // -----------------------------------------------------------------------------
  14.  
  15. #ifndef _INC_ACM
  16. #define _INC_ACM        /* #defined if msacm.h has been included */
  17.  
  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.  
  24. #ifndef RC_INVOKED
  25. #pragma pack(1)         /* Assume byte packing throughout */
  26. #endif  /* RC_INVOKED */
  27.  
  28. #ifdef __cplusplus
  29. extern "C" {            /* Assume C declarations for C++ */
  30. #endif  /* __cplusplus */
  31.  
  32.  
  33. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  34. //
  35. //
  36. //
  37. //
  38. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  39.  
  40. #ifndef DRV_MAPPER_PREFERRED_INPUT_GET
  41. #define DRV_MAPPER_PREFERRED_INPUT_GET  (DRV_USER + 0)
  42. #endif
  43.  
  44. #ifndef DRV_MAPPER_PREFERRED_OUTPUT_GET
  45. #define DRV_MAPPER_PREFERRED_OUTPUT_GET (DRV_USER + 2)
  46. #endif
  47.  
  48.  
  49. #ifndef DRVM_MAPPER_STATUS
  50. #define DRVM_MAPPER_STATUS              (0x2000)
  51. #endif
  52.  
  53. #ifndef WIDM_MAPPER_STATUS
  54. #define WIDM_MAPPER_STATUS              (DRVM_MAPPER_STATUS + 0)
  55. #define WAVEIN_MAPPER_STATUS_DEVICE     0
  56. #define WAVEIN_MAPPER_STATUS_MAPPED     1
  57. #define WAVEIN_MAPPER_STATUS_FORMAT     2
  58. #endif
  59.  
  60. #ifndef WODM_MAPPER_STATUS
  61. #define WODM_MAPPER_STATUS              (DRVM_MAPPER_STATUS + 0)
  62. #define WAVEOUT_MAPPER_STATUS_DEVICE    0
  63. #define WAVEOUT_MAPPER_STATUS_MAPPED    1
  64. #define WAVEOUT_MAPPER_STATUS_FORMAT    2
  65. #endif
  66.  
  67.  
  68. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  69. //
  70. //
  71. //
  72. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  73. #define ACMAPI              WINAPI
  74.  
  75. typedef DWORD FOURCC;
  76.  
  77.  
  78. //
  79. //  there are four types of 'handles' used by the ACM. the first three
  80. //  are unique types that define specific objects:
  81. //
  82. //  HACMDRIVERID: used to _identify_ an ACM driver. this identifier can be
  83. //  used to _open_ the driver for querying details, etc about the driver.
  84. //
  85. //  HACMDRIVER: used to manage a driver (codec, filter, etc). this handle
  86. //  is much like a handle to other media drivers--you use it to send
  87. //  messages to the converter, query for capabilities, etc.
  88. //
  89. //  HACMSTREAM: used to manage a 'stream' (conversion channel) with the
  90. //  ACM. you use a stream handle to convert data from one format/type
  91. //  to another--much like dealing with a file handle.
  92. //
  93. //
  94. //  the fourth handle type is a generic type used on ACM functions that
  95. //  can accept two or more of the above handle types (for example the
  96. //  acmMetrics and acmDriverID functions).
  97. //
  98. //  HACMOBJ: used to identify ACM objects. this handle is used on functions
  99. //  that can accept two or more ACM handle types.
  100. //
  101. DECLARE_HANDLE(HACMDRIVERID);
  102. typedef HACMDRIVERID       *PHACMDRIVERID;
  103. typedef HACMDRIVERID   FAR *LPHACMDRIVERID;
  104.  
  105. DECLARE_HANDLE(HACMDRIVER);
  106. typedef HACMDRIVER         *PHACMDRIVER;
  107. typedef HACMDRIVER     FAR *LPHACMDRIVER;
  108.  
  109. DECLARE_HANDLE(HACMSTREAM);
  110. typedef HACMSTREAM         *PHACMSTREAM;
  111. typedef HACMSTREAM     FAR *LPHACMSTREAM;
  112.  
  113. DECLARE_HANDLE(HACMOBJ);
  114. typedef HACMOBJ            *PHACMOBJ;
  115. typedef HACMOBJ        FAR *LPHACMOBJ;
  116.  
  117.  
  118.  
  119. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  120. //
  121. //  ACM Error Codes
  122. //
  123. //  Note that these error codes are specific errors that apply to the ACM
  124. //  directly--general errors are defined as MMSYSERR_*.
  125. //
  126. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  127.  
  128. #ifndef _MMRESULT_
  129. #define _MMRESULT_
  130. typedef UINT                MMRESULT;
  131. #endif
  132.  
  133. #define ACMERR_BASE         (512)
  134. #define ACMERR_NOTPOSSIBLE  (ACMERR_BASE + 0)
  135. #define ACMERR_BUSY         (ACMERR_BASE + 1)
  136. #define ACMERR_UNPREPARED   (ACMERR_BASE + 2)
  137. #define ACMERR_CANCELED     (ACMERR_BASE + 3)
  138.  
  139.  
  140. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  141. //
  142. //  ACM Window Messages
  143. //
  144. //  These window messages are sent by the ACM or ACM drivers to notify
  145. //  applications of events.
  146. //
  147. //  Note that these window message numbers will also be defined in
  148. //  mmsystem.
  149. //
  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. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  158. //
  159. //  acmGetVersion()
  160. //
  161. //  the ACM version is a 32 bit number that is broken into three parts as 
  162. //  follows:
  163. //
  164. //      bits 24 - 31:   8 bit _major_ version number
  165. //      bits 16 - 23:   8 bit _minor_ version number
  166. //      bits  0 - 15:   16 bit build number
  167. //
  168. //  this is then displayed as follows:
  169. //
  170. //      bMajor = (BYTE)(dwVersion >> 24)
  171. //      bMinor = (BYTE)(dwVersion >> 16) & 
  172. //      wBuild = LOWORD(dwVersion)
  173. //
  174. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  175.  
  176. DWORD ACMAPI acmGetVersion
  177. (
  178.     void
  179. );
  180.  
  181.  
  182. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  183. //
  184. //  acmMetrics()
  185. //
  186. //
  187. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  188.  
  189. MMRESULT ACMAPI acmMetrics
  190. (
  191.     HACMOBJ                 hao,
  192.     UINT                    uMetric,
  193.     LPVOID                  pMetric
  194. );
  195.  
  196. #define ACM_METRIC_COUNT_DRIVERS            1
  197. #define ACM_METRIC_COUNT_CODECS             2
  198. #define ACM_METRIC_COUNT_CONVERTERS         3
  199. #define ACM_METRIC_COUNT_FILTERS            4
  200. #define ACM_METRIC_COUNT_DISABLED           5
  201. #define ACM_METRIC_COUNT_HARDWARE           6
  202. #define ACM_METRIC_COUNT_LOCAL_DRIVERS      20
  203. #define ACM_METRIC_COUNT_LOCAL_CODECS       21
  204. #define ACM_METRIC_COUNT_LOCAL_CONVERTERS   22
  205. #define ACM_METRIC_COUNT_LOCAL_FILTERS      23
  206. #define ACM_METRIC_COUNT_LOCAL_DISABLED     24
  207. #define ACM_METRIC_HARDWARE_WAVE_INPUT      30
  208. #define ACM_METRIC_HARDWARE_WAVE_OUTPUT     31
  209. #define ACM_METRIC_MAX_SIZE_FORMAT          50
  210. #define ACM_METRIC_MAX_SIZE_FILTER          51
  211. #define ACM_METRIC_DRIVER_SUPPORT           100
  212. #define ACM_METRIC_DRIVER_PRIORITY          101
  213.  
  214.  
  215. //--------------------------------------------------------------------------;
  216. //
  217. //  ACM Drivers
  218. //
  219. //
  220. //
  221. //
  222. //--------------------------------------------------------------------------;
  223.  
  224. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  225. //
  226. //  acmDriverEnum()
  227. //
  228. //
  229. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  230.  
  231. typedef BOOL (CALLBACK *ACMDRIVERENUMCB)
  232. (
  233.     HACMDRIVERID            hadid,
  234.     DWORD                   dwInstance,
  235.     DWORD                   fdwSupport
  236. );
  237.  
  238. MMRESULT ACMAPI acmDriverEnum
  239. (
  240.     ACMDRIVERENUMCB         fnCallback,
  241.     DWORD                   dwInstance,
  242.     DWORD                   fdwEnum
  243. );
  244.  
  245. #define ACM_DRIVERENUMF_NOLOCAL     0x40000000L
  246. #define ACM_DRIVERENUMF_DISABLED    0x80000000L
  247.  
  248.  
  249.  
  250.  
  251. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  252. //
  253. //  acmDriverID()
  254. //
  255. //
  256. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  257.  
  258. MMRESULT ACMAPI acmDriverID
  259. (
  260.     HACMOBJ                 hao,
  261.     LPHACMDRIVERID          phadid,
  262.     DWORD                   fdwDriverID
  263. );
  264.  
  265.  
  266.  
  267. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  268. //
  269. //  acmDriverAdd()
  270. //
  271. //
  272. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  273.  
  274. MMRESULT ACMAPI acmDriverAdd
  275. (
  276.     LPHACMDRIVERID          phadid,
  277.     HINSTANCE               hinstModule,
  278.     LPARAM                  lParam, 
  279.     DWORD                   dwPriority,
  280.     DWORD                   fdwAdd
  281. );
  282.  
  283.  
  284. #define ACM_DRIVERADDF_FUNCTION     0x00000003L  // lParam is a procedure
  285. #define ACM_DRIVERADDF_NOTIFYHWND   0x00000004L  // lParam is notify hwnd
  286. #define ACM_DRIVERADDF_TYPEMASK     0x00000007L  // driver type mask
  287. #define ACM_DRIVERADDF_LOCAL        0x00000000L  // is local to current task
  288. #define ACM_DRIVERADDF_GLOBAL       0x00000008L  // is global
  289.  
  290.  
  291.  
  292. //
  293. //  prototype for ACM driver procedures that are installed as _functions_
  294. //  or _notifations_ instead of as a standalone installable driver.
  295. //
  296. typedef LRESULT (CALLBACK *ACMDRIVERPROC)(DWORD, HACMDRIVERID, UINT, LPARAM, LPARAM);
  297. typedef ACMDRIVERPROC FAR *LPACMDRIVERPROC;
  298.  
  299. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  300. //
  301. //  acmDriverRemove()
  302. //
  303. //
  304. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  305.  
  306. MMRESULT ACMAPI acmDriverRemove
  307. (
  308.     HACMDRIVERID            hadid,
  309.     DWORD                   fdwRemove
  310. );
  311.  
  312.  
  313. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  314. //
  315. //  acmDriverOpen()
  316. //
  317. //
  318. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  319.  
  320. MMRESULT ACMAPI acmDriverOpen
  321. (
  322.     LPHACMDRIVER            phad, 
  323.     HACMDRIVERID            hadid,
  324.     DWORD                   fdwOpen
  325. );
  326.  
  327.  
  328. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  329. //
  330. //  acmDriverClose()
  331. //
  332. //
  333. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  334.  
  335. MMRESULT ACMAPI acmDriverClose
  336. (
  337.     HACMDRIVER              had,
  338.     DWORD                   fdwClose
  339. );
  340.  
  341.  
  342. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  343. //
  344. //  acmDriverMessage()
  345. //
  346. //
  347. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  348.  
  349. LRESULT ACMAPI acmDriverMessage
  350. (
  351.     HACMDRIVER              had,
  352.     UINT                    uMsg, 
  353.     LPARAM                  lParam1,
  354.     LPARAM                  lParam2
  355. );
  356.  
  357.  
  358. //
  359. //
  360. //
  361. //
  362. #define DRV_USER 0x4000
  363. #define ACMDM_USER                  (DRV_USER + 0x0000)
  364. #define ACMDM_RESERVED_LOW          (DRV_USER + 0x2000)
  365. #define ACMDM_RESERVED_HIGH         (DRV_USER + 0x2FFF)
  366.  
  367. #define ACMDM_BASE                  ACMDM_RESERVED_LOW
  368.  
  369. #define ACMDM_DRIVER_ABOUT          (ACMDM_BASE + 11)
  370.  
  371.  
  372. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  373. //
  374. //  acmDriverPriority
  375. //
  376. //
  377. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  378.  
  379. MMRESULT ACMAPI acmDriverPriority
  380. (
  381.     HACMDRIVERID            hadid,
  382.     DWORD                   dwPriority,
  383.     DWORD                   fdwPriority
  384. );
  385.  
  386.  
  387. #define ACM_DRIVERPRIORITYF_ENABLE      0x00000001L
  388. #define ACM_DRIVERPRIORITYF_DISABLE     0x00000002L
  389. #define ACM_DRIVERPRIORITYF_ABLEMASK    0x00000003L
  390. #define ACM_DRIVERPRIORITYF_BEGIN       0x00010000L
  391. #define ACM_DRIVERPRIORITYF_END         0x00020000L
  392. #define ACM_DRIVERPRIORITYF_DEFERMASK   0x00030000L
  393.  
  394.  
  395.  
  396. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  397. //
  398. //  acmDriverDetails()
  399. //
  400. //
  401. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  402.  
  403. //
  404. //  ACMDRIVERDETAILS
  405. //
  406. //  the ACMDRIVERDETAILS structure is used to get various capabilities from
  407. //  an ACM driver (codec, converter, filter).
  408. //
  409. #define ACMDRIVERDETAILS_SHORTNAME_CHARS    32
  410. #define ACMDRIVERDETAILS_LONGNAME_CHARS     128
  411. #define ACMDRIVERDETAILS_COPYRIGHT_CHARS    80
  412. #define ACMDRIVERDETAILS_LICENSING_CHARS    128
  413. #define ACMDRIVERDETAILS_FEATURES_CHARS     512
  414.  
  415. typedef struct tACMDRIVERDETAILS
  416. {
  417.     DWORD           cbStruct;           // number of valid bytes in structure
  418.  
  419.     FOURCC          fccType;            // compressor type 'audc'
  420.     FOURCC          fccComp;            // sub-type (not used; reserved)
  421.  
  422.     WORD            wMid;               // manufacturer id
  423.     WORD            wPid;               // product id
  424.  
  425.     DWORD           vdwACM;             // version of the ACM *compiled* for
  426.     DWORD           vdwDriver;          // version of the driver
  427.  
  428.     DWORD           fdwSupport;         // misc. support flags
  429.     DWORD           cFormatTags;        // total unique format tags supported
  430.     DWORD           cFilterTags;        // total unique filter tags supported
  431.  
  432.     HICON           hicon;              // handle to custom icon
  433.  
  434.     WCHAR           szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
  435.     WCHAR           szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
  436.     WCHAR           szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
  437.     WCHAR           szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
  438.     WCHAR           szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
  439.  
  440. } ACMDRIVERDETAILS, *PACMDRIVERDETAILS, FAR *LPACMDRIVERDETAILS;
  441.  
  442.  
  443. //
  444. //  ACMDRIVERDETAILS.fccType
  445. //
  446. //  ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC: the FOURCC used in the fccType
  447. //  field of the ACMDRIVERDETAILS structure to specify that this is an ACM
  448. //  codec designed for audio.
  449. //
  450. //
  451. //  ACMDRIVERDETAILS.fccComp
  452. //
  453. //  ACMDRIVERDETAILS_FCCCOMP_UNDEFINED: the FOURCC used in the fccComp
  454. //  field of the ACMDRIVERDETAILS structure. this is currently an unused
  455. //  field.
  456. //
  457. #define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
  458. #define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED  mmioFOURCC('\0', '\0', '\0', '\0')
  459.  
  460.  
  461. //
  462. //  the following flags are used to specify the type of conversion(s) that
  463. //  the converter/codec/filter supports. these are placed in the fdwSupport
  464. //  field of the ACMDRIVERDETAILS structure. note that a converter can
  465. //  support one or more of these flags in any combination.
  466. //
  467. //  ACMDRIVERDETAILS_SUPPORTF_CODEC: this flag is set if the driver supports
  468. //  conversions from one format tag to another format tag. for example, if a
  469. //  converter compresses WAVE_FORMAT_PCM to WAVE_FORMAT_ADPCM, then this bit
  470. //  should be set.
  471. //
  472. //  ACMDRIVERDETAILS_SUPPORTF_CONVERTER: this flags is set if the driver
  473. //  supports conversions on the same format tag. as an example, the PCM
  474. //  converter that is built into the ACM sets this bit (and only this bit)
  475. //  because it converts only PCM formats (bits, sample rate).
  476. //
  477. //  ACMDRIVERDETAILS_SUPPORTF_FILTER: this flag is set if the driver supports
  478. //  transformations on a single format. for example, a converter that changed
  479. //  the 'volume' of PCM data would set this bit. 'echo' and 'reverb' are
  480. //  also filter types.
  481. //
  482. //  ACMDRIVERDETAILS_SUPPORTF_HARDWARE: this flag is set if the driver supports
  483. //  hardware input and/or output through a waveform device.
  484. //
  485. //  ACMDRIVERDETAILS_SUPPORTF_ASYNC: this flag is set if the driver supports
  486. //  async conversions.
  487. //
  488. //
  489. //  ACMDRIVERDETAILS_SUPPORTF_LOCAL: this flag is set _by the ACM_ if a
  490. //  driver has been installed local to the current task. this flag is also
  491. //  set in the fdwSupport argument to the enumeration callback function
  492. //  for drivers.
  493. //
  494. //  ACMDRIVERDETAILS_SUPPORTF_DISABLED: this flag is set _by the ACM_ if a
  495. //  driver has been disabled. this flag is also passed set in the fdwSupport
  496. //  argument to the enumeration callback function for drivers.
  497. //
  498. #define ACMDRIVERDETAILS_SUPPORTF_CODEC     0x00000001L
  499. #define ACMDRIVERDETAILS_SUPPORTF_CONVERTER 0x00000002L
  500. #define ACMDRIVERDETAILS_SUPPORTF_FILTER    0x00000004L
  501. #define ACMDRIVERDETAILS_SUPPORTF_HARDWARE  0x00000008L
  502. #define ACMDRIVERDETAILS_SUPPORTF_ASYNC     0x00000010L
  503. #define ACMDRIVERDETAILS_SUPPORTF_LOCAL     0x40000000L
  504. #define ACMDRIVERDETAILS_SUPPORTF_DISABLED  0x80000000L
  505.  
  506.  
  507. MMRESULT ACMAPI acmDriverDetails
  508. (
  509.     HACMDRIVERID            hadid,
  510.     LPACMDRIVERDETAILS      padd,
  511.     DWORD                   fdwDetails
  512. );
  513.  
  514.  
  515.  
  516.  
  517. //--------------------------------------------------------------------------;
  518. //
  519. //  ACM Format Tags
  520. //
  521. //
  522. //
  523. //
  524. //--------------------------------------------------------------------------;
  525.  
  526. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  527. //
  528. //  acmFormatTagDetails()
  529. //
  530. //
  531. //
  532. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  533.  
  534. #define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48
  535.  
  536. typedef struct tACMFORMATTAGDETAILSW
  537. {
  538.     DWORD           cbStruct;
  539.     DWORD           dwFormatTagIndex;
  540.     DWORD           dwFormatTag;
  541.     DWORD           cbFormatSize;
  542.     DWORD           fdwSupport;
  543.     DWORD           cStandardFormats;
  544.     WCHAR           szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  545.  
  546. } ACMFORMATTAGDETAILS, *PACMFORMATTAGDETAILS, FAR *LPACMFORMATTAGDETAILS;
  547.  
  548. MMRESULT ACMAPI acmFormatTagDetails
  549. (
  550.     HACMDRIVER              had,
  551.     LPACMFORMATTAGDETAILS   paftd,
  552.     DWORD                   fdwDetails
  553. );
  554.  
  555. #define ACM_FORMATTAGDETAILSF_INDEX         0x00000000L
  556. #define ACM_FORMATTAGDETAILSF_FORMATTAG     0x00000001L
  557. #define ACM_FORMATTAGDETAILSF_LARGESTSIZE   0x00000002L
  558. #define ACM_FORMATTAGDETAILSF_QUERYMASK     0x0000000FL
  559.  
  560.  
  561.  
  562. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  563. //
  564. //  acmFormatTagEnum()
  565. //
  566. //
  567. //
  568. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  569.  
  570. typedef BOOL (CALLBACK *ACMFORMATTAGENUMCB)
  571. (
  572.     HACMDRIVERID            hadid,
  573.     LPACMFORMATTAGDETAILS   paftd,
  574.     DWORD                   dwInstance,
  575.     DWORD                   fdwSupport
  576. );
  577.  
  578. MMRESULT ACMAPI acmFormatTagEnum
  579. (
  580.     HACMDRIVER              had,
  581.     LPACMFORMATTAGDETAILS   paftd,
  582.     ACMFORMATTAGENUMCB      fnCallback,
  583.     DWORD                   dwInstance, 
  584.     DWORD                   fdwEnum
  585. );
  586.  
  587.  
  588.  
  589. //--------------------------------------------------------------------------;
  590. //
  591. //  ACM Formats
  592. //
  593. //
  594. //
  595. //
  596. //--------------------------------------------------------------------------;
  597.  
  598. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  599. //
  600. //  acmFormatDetails()
  601. //
  602. //
  603. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  604.  
  605. #define ACMFORMATDETAILS_FORMAT_CHARS   128
  606.  
  607. typedef struct tACMFORMATDETAILS
  608. {
  609.     DWORD           cbStruct;
  610.     DWORD           dwFormatIndex;
  611.     DWORD           dwFormatTag;
  612.     DWORD           fdwSupport;
  613.     LPWAVEFORMATEX  pwfx;
  614.     DWORD           cbwfx;
  615.     WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
  616.  
  617. } ACMFORMATDETAILS, *PACMFORMATDETAILS, FAR *LPACMFORMATDETAILS;
  618.  
  619.  
  620. MMRESULT ACMAPI acmFormatDetails
  621. (
  622.     HACMDRIVER              had,
  623.     LPACMFORMATDETAILS      pafd,
  624.     DWORD                   fdwDetails
  625. );
  626.  
  627. #define ACM_FORMATDETAILSF_INDEX        0x00000000L
  628. #define ACM_FORMATDETAILSF_FORMAT       0x00000001L
  629. #define ACM_FORMATDETAILSF_QUERYMASK    0x0000000FL
  630.  
  631.  
  632.  
  633. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  634. //
  635. //  acmFormatEnum()
  636. //
  637. //
  638. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  639.  
  640. typedef BOOL (CALLBACK *ACMFORMATENUMCB)
  641. (
  642.     HACMDRIVERID            hadid,
  643.     LPACMFORMATDETAILS      pafd,
  644.     DWORD                   dwInstance,
  645.     DWORD                   fdwSupport
  646. );
  647.  
  648. MMRESULT ACMAPI acmFormatEnum
  649. (
  650.     HACMDRIVER              had,
  651.     LPACMFORMATDETAILS      pafd,
  652.     ACMFORMATENUMCB         fnCallback,
  653.     DWORD                   dwInstance, 
  654.     DWORD                   fdwEnum
  655. );
  656.  
  657. #define ACM_FORMATENUMF_WFORMATTAG       0x00010000L
  658. #define ACM_FORMATENUMF_NCHANNELS        0x00020000L
  659. #define ACM_FORMATENUMF_NSAMPLESPERSEC   0x00040000L
  660. #define ACM_FORMATENUMF_WBITSPERSAMPLE   0x00080000L
  661. #define ACM_FORMATENUMF_CONVERT          0x00100000L
  662. #define ACM_FORMATENUMF_SUGGEST          0x00200000L
  663. #define ACM_FORMATENUMF_HARDWARE         0x00400000L
  664. #define ACM_FORMATENUMF_INPUT            0x00800000L
  665. #define ACM_FORMATENUMF_OUTPUT           0x01000000L
  666.  
  667. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  668. //
  669. //  acmFormatSuggest()
  670. //
  671. //
  672. //
  673. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  674.  
  675. MMRESULT ACMAPI acmFormatSuggest
  676. (
  677.     HACMDRIVER          had,
  678.     LPWAVEFORMATEX      pwfxSrc,
  679.     LPWAVEFORMATEX      pwfxDst,
  680.     DWORD               cbwfxDst,
  681.     DWORD               fdwSuggest
  682. );
  683.  
  684. #define ACM_FORMATSUGGESTF_WFORMATTAG       0x00010000L
  685. #define ACM_FORMATSUGGESTF_NCHANNELS        0x00020000L
  686. #define ACM_FORMATSUGGESTF_NSAMPLESPERSEC   0x00040000L
  687. #define ACM_FORMATSUGGESTF_WBITSPERSAMPLE   0x00080000L
  688.  
  689. #define ACM_FORMATSUGGESTF_TYPEMASK         0x00FF0000L
  690.  
  691.  
  692. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  693. //
  694. //  acmFormatChoose()
  695. //
  696. //
  697. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  698.  
  699. #define ACMHELPMSGSTRING        TEXT("acmchoose_help")
  700. #define ACMHELPMSGCONTEXTMENU   TEXT("acmchoose_contextmenu")
  701. #define ACMHELPMSGCONTEXTHELP   TEXT("acmchoose_contexthelp")
  702.  
  703. //
  704. //  MM_ACM_FORMATCHOOSE is sent to hook callbacks by the Format Chooser
  705. //  Dialog...
  706. //
  707. #define MM_ACM_FORMATCHOOSE             (0x8000)
  708.  
  709. #define FORMATCHOOSE_MESSAGE            0
  710. #define FORMATCHOOSE_FORMATTAG_VERIFY   (FORMATCHOOSE_MESSAGE+0)
  711. #define FORMATCHOOSE_FORMAT_VERIFY      (FORMATCHOOSE_MESSAGE+1)
  712. #define FORMATCHOOSE_CUSTOM_VERIFY      (FORMATCHOOSE_MESSAGE+2)
  713.  
  714.  
  715. typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROC)
  716. (
  717.     HWND                    hwnd,
  718.     UINT                    uMsg,
  719.     WPARAM                  wParam,
  720.     LPARAM                  lParam
  721. );
  722.  
  723. //
  724. //
  725. //
  726. //
  727. typedef struct tACMFORMATCHOOSE
  728. {
  729.     DWORD           cbStruct;           // sizeof(ACMFORMATCHOOSE)
  730.     DWORD           fdwStyle;           // chooser style flags
  731.     
  732.     HWND            hwndOwner;          // caller's window handle
  733.  
  734.     LPWAVEFORMATEX  pwfx;               // ptr to wfx buf to receive choice
  735.     DWORD           cbwfx;              // size of mem buf for pwfx
  736.     LPCWSTR         pszTitle;           // dialog box title bar
  737.     
  738.     WCHAR           szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  739.     WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
  740.  
  741.     LPWSTR          pszName;            // custom name selection
  742.     DWORD           cchName;            // size in chars of mem buf for pszName
  743.  
  744.     DWORD           fdwEnum;            // format enumeration restrictions
  745.     LPWAVEFORMATEX  pwfxEnum;           // format describing restrictions
  746.     
  747.     HINSTANCE       hInstance;          // app instance containing dlg template
  748.     LPCWSTR         pszTemplateName;    // custom template name
  749.     LPARAM          lCustData;          // data passed to hook fn.
  750.     ACMFORMATCHOOSEHOOKPROC pfnHook;    // ptr to hook function
  751.  
  752. } ACMFORMATCHOOSE, *PACMFORMATCHOOSE, FAR *LPACMFORMATCHOOSE;
  753.  
  754. //
  755. //  ACMFORMATCHOOSE.fdwStyle
  756. //
  757. //
  758. //
  759. #define ACMFORMATCHOOSE_STYLEF_SHOWHELP              0x00000004L
  760. #define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK            0x00000008L
  761. #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE        0x00000010L
  762. #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE  0x00000020L
  763. #define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT       0x00000040L
  764. #define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP           0x00000080L
  765.  
  766. MMRESULT ACMAPI acmFormatChoose
  767. (
  768.     LPACMFORMATCHOOSE       pafmtc
  769. );
  770.  
  771.  
  772. //--------------------------------------------------------------------------;
  773. //
  774. //  ACM Filter Tags
  775. //
  776. //
  777. //
  778. //
  779. //--------------------------------------------------------------------------;
  780.  
  781. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  782. //
  783. //  acmFilterTagDetails()
  784. //
  785. //
  786. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  787.  
  788. #define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48
  789.  
  790. typedef struct tACMFILTERTAGDETAILS
  791. {
  792.     DWORD           cbStruct;
  793.     DWORD           dwFilterTagIndex;
  794.     DWORD           dwFilterTag;
  795.     DWORD           cbFilterSize;
  796.     DWORD           fdwSupport;
  797.     DWORD           cStandardFilters;
  798.     WCHAR           szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  799.  
  800. } ACMFILTERTAGDETAILS, *PACMFILTERTAGDETAILS, FAR *LPACMFILTERTAGDETAILS;
  801.  
  802. MMRESULT ACMAPI acmFilterTagDetails
  803. (
  804.     HACMDRIVER              had,
  805.     LPACMFILTERTAGDETAILS   paftd,
  806.     DWORD                   fdwDetails
  807. );
  808.  
  809. #define ACM_FILTERTAGDETAILSF_INDEX         0x00000000L
  810. #define ACM_FILTERTAGDETAILSF_FILTERTAG     0x00000001L
  811. #define ACM_FILTERTAGDETAILSF_LARGESTSIZE   0x00000002L
  812. #define ACM_FILTERTAGDETAILSF_QUERYMASK     0x0000000FL
  813.  
  814.  
  815.  
  816. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  817. //
  818. //  acmFilterTagEnum()
  819. //
  820. //
  821. //
  822. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  823.  
  824. typedef BOOL (CALLBACK *ACMFILTERTAGENUMCB)
  825. (
  826.     HACMDRIVERID            hadid,
  827.     LPACMFILTERTAGDETAILS   paftd,
  828.     DWORD                   dwInstance,
  829.     DWORD                   fdwSupport
  830. );
  831.  
  832. MMRESULT ACMAPI acmFilterTagEnum
  833. (
  834.     HACMDRIVER              had,
  835.     LPACMFILTERTAGDETAILS   paftd,
  836.     ACMFILTERTAGENUMCB      fnCallback,
  837.     DWORD                   dwInstance, 
  838.     DWORD                   fdwEnum
  839. );
  840.  
  841.  
  842.  
  843. //--------------------------------------------------------------------------;
  844. //
  845. //  ACM Filters
  846. //
  847. //
  848. //
  849. //
  850. //--------------------------------------------------------------------------;
  851.  
  852. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  853. //
  854. //  acmFilterDetails()
  855. //
  856. //
  857. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  858.  
  859. #define ACMFILTERDETAILS_FILTER_CHARS   128
  860.  
  861. typedef struct tACMFILTERDETAILS
  862. {
  863.     DWORD           cbStruct;
  864.     DWORD           dwFilterIndex;
  865.     DWORD           dwFilterTag;
  866.     DWORD           fdwSupport;
  867.     LPWAVEFILTER    pwfltr;
  868.     DWORD           cbwfltr;
  869.     WCHAR           szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  870.  
  871. } ACMFILTERDETAILS, *PACMFILTERDETAILS, FAR *LPACMFILTERDETAILS;
  872.  
  873. MMRESULT ACMAPI acmFilterDetails
  874. (
  875.     HACMDRIVER              had,
  876.     LPACMFILTERDETAILS      pafd,
  877.     DWORD                   fdwDetails
  878. );
  879.  
  880. #define ACM_FILTERDETAILSF_INDEX        0x00000000L
  881. #define ACM_FILTERDETAILSF_FILTER       0x00000001L
  882. #define ACM_FILTERDETAILSF_QUERYMASK    0x0000000FL
  883.  
  884.  
  885.  
  886. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  887. //
  888. //  acmFilterEnum()
  889. //
  890. //
  891. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  892.  
  893. typedef BOOL (CALLBACK *ACMFILTERENUMCB)
  894. (
  895.     HACMDRIVERID            hadid,
  896.     LPACMFILTERDETAILS      pafd,
  897.     DWORD                   dwInstance,
  898.     DWORD                   fdwSupport
  899. );
  900.  
  901. MMRESULT ACMAPI acmFilterEnum
  902. (
  903.     HACMDRIVER              had,
  904.     LPACMFILTERDETAILS      pafd,
  905.     ACMFILTERENUMCB         fnCallback,
  906.     DWORD                   dwInstance, 
  907.     DWORD                   fdwEnum
  908. );
  909.  
  910. #define ACM_FILTERENUMF_DWFILTERTAG         0x00010000L
  911.  
  912.  
  913.  
  914.  
  915. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  916. //
  917. //  acmFilterChoose()
  918. //
  919. //
  920. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  921.  
  922. //
  923. //  MM_ACM_FILTERCHOOSE is sent to hook callbacks by the Filter Chooser
  924. //  Dialog...
  925. //
  926. #define MM_ACM_FILTERCHOOSE             (0x8000)
  927.  
  928. #define FILTERCHOOSE_MESSAGE            0
  929. #define FILTERCHOOSE_FILTERTAG_VERIFY   (FILTERCHOOSE_MESSAGE+0)
  930. #define FILTERCHOOSE_FILTER_VERIFY      (FILTERCHOOSE_MESSAGE+1)
  931. #define FILTERCHOOSE_CUSTOM_VERIFY      (FILTERCHOOSE_MESSAGE+2)
  932.  
  933.  
  934. typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROC)
  935. (
  936.     HWND                    hwnd,
  937.     UINT                    uMsg,
  938.     WPARAM                  wParam,
  939.     LPARAM                  lParam
  940. );
  941.  
  942. //
  943. //  ACMFILTERCHOOSE
  944. //
  945. //
  946. typedef struct tACMFILTERCHOOSE
  947. {
  948.     DWORD           cbStruct;           // sizeof(ACMFILTERCHOOSE)
  949.     DWORD           fdwStyle;           // chooser style flags
  950.  
  951.     HWND            hwndOwner;          // caller's window handle
  952.  
  953.     LPWAVEFILTER    pwfltr;             // ptr to wfltr buf to receive choice
  954.     DWORD           cbwfltr;            // size of mem buf for pwfltr
  955.  
  956.     LPCWSTR         pszTitle;
  957.  
  958.     WCHAR           szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  959.     WCHAR           szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  960.     LPWSTR          pszName;            // custom name selection
  961.     DWORD           cchName;            // size in chars of mem buf for pszName
  962.  
  963.     DWORD           fdwEnum;            // filter enumeration restrictions
  964.     LPWAVEFILTER    pwfltrEnum;         // filter describing restrictions
  965.     
  966.     HINSTANCE       hInstance;          // app instance containing dlg template
  967.     LPCWSTR         pszTemplateName;    // custom template name
  968.     LPARAM          lCustData;          // data passed to hook fn.
  969.     ACMFILTERCHOOSEHOOKPROC pfnHook;    // ptr to hook function
  970.  
  971. } ACMFILTERCHOOSE, *PACMFILTERCHOOSE, FAR *LPACMFILTERCHOOSE;
  972.  
  973. //
  974. //  ACMFILTERCHOOSE.fdwStyle
  975. //
  976. //
  977. #define ACMFILTERCHOOSE_STYLEF_SHOWHELP              0x00000004L
  978. #define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK            0x00000008L
  979. #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE        0x00000010L
  980. #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE  0x00000020L
  981. #define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT    0x00000040L
  982. #define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP           0x00000080L
  983.  
  984. MMRESULT ACMAPI acmFilterChoose
  985. (
  986.     LPACMFILTERCHOOSE       pafltrc
  987. );
  988.  
  989.  
  990. //--------------------------------------------------------------------------;
  991. //
  992. //  ACM Stream API's
  993. //
  994. //
  995. //
  996. //--------------------------------------------------------------------------;
  997.  
  998. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  999. //
  1000. //  acmStreamOpen()
  1001. //
  1002. //
  1003. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1004.  
  1005. typedef struct tACMSTREAMHEADER
  1006. {
  1007.     DWORD           cbStruct;               // sizeof(ACMSTREAMHEADER)
  1008.     DWORD           fdwStatus;              // ACMSTREAMHEADER_STATUSF_*
  1009.     DWORD           dwUser;                 // user instance data for hdr
  1010.     LPBYTE          pbSrc;
  1011.     DWORD           cbSrcLength;
  1012.     DWORD           cbSrcLengthUsed;
  1013.     DWORD           dwSrcUser;              // user instance data for src
  1014.     LPBYTE          pbDst;
  1015.     DWORD           cbDstLength;
  1016.     DWORD           cbDstLengthUsed;
  1017.     DWORD           dwDstUser;              // user instance data for dst
  1018.     DWORD           dwReservedDriver[10];   // driver reserved work space
  1019.  
  1020. } ACMSTREAMHEADER, *PACMSTREAMHEADER, FAR *LPACMSTREAMHEADER;
  1021.  
  1022. //
  1023. //  ACMSTREAMHEADER.fdwStatus
  1024. //
  1025. //  ACMSTREAMHEADER_STATUSF_DONE: done bit for async conversions.
  1026. //
  1027. #define ACMSTREAMHEADER_STATUSF_DONE        0x00010000L
  1028. #define ACMSTREAMHEADER_STATUSF_PREPARED    0x00020000L
  1029. #define ACMSTREAMHEADER_STATUSF_INQUEUE     0x00100000L
  1030.  
  1031.  
  1032.  
  1033. MMRESULT ACMAPI acmStreamOpen
  1034. (
  1035.     LPHACMSTREAM            phas,       // pointer to stream handle
  1036.     HACMDRIVER              had,        // optional driver handle
  1037.     LPWAVEFORMATEX          pwfxSrc,    // source format to convert
  1038.     LPWAVEFORMATEX          pwfxDst,    // required destination format
  1039.     LPWAVEFILTER            pwfltr,     // optional filter
  1040.     DWORD                   dwCallback, // callback
  1041.     DWORD                   dwInstance, // callback instance data
  1042.     DWORD                   fdwOpen     // ACM_STREAMOPENF_* and CALLBACK_*
  1043. );
  1044.  
  1045. #define ACM_STREAMOPENF_QUERY           0x00000001
  1046. #define ACM_STREAMOPENF_ASYNC           0x00000002
  1047. #define ACM_STREAMOPENF_NONREALTIME     0x00000004
  1048.  
  1049.  
  1050. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1051. //
  1052. //  acmStreamClose()
  1053. //
  1054. //
  1055. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1056.  
  1057. MMRESULT ACMAPI acmStreamClose
  1058. (
  1059.     HACMSTREAM              has,
  1060.     DWORD                   fdwClose
  1061. );
  1062.  
  1063.  
  1064.  
  1065. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1066. //
  1067. //  acmStreamSize()
  1068. //
  1069. //
  1070. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1071.  
  1072. MMRESULT ACMAPI acmStreamSize
  1073. (
  1074.     HACMSTREAM              has,
  1075.     DWORD                   cbInput,
  1076.     LPDWORD                 pdwOutputBytes,
  1077.     DWORD                   fdwSize
  1078. );
  1079.  
  1080. #define ACM_STREAMSIZEF_SOURCE          0x00000000L
  1081. #define ACM_STREAMSIZEF_DESTINATION     0x00000001L
  1082. #define ACM_STREAMSIZEF_QUERYMASK       0x0000000FL
  1083.  
  1084.  
  1085.  
  1086. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1087. //
  1088. //  acmStreamReset()
  1089. //
  1090. //
  1091. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1092.  
  1093. MMRESULT ACMAPI acmStreamReset
  1094. (
  1095.     HACMSTREAM              has,
  1096.     DWORD                   fdwReset
  1097. );
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1104. //
  1105. //  acmStreamMessage()
  1106. //
  1107. //
  1108. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1109.  
  1110. MMRESULT ACMAPI acmStreamMessage
  1111. (
  1112.     HACMSTREAM              has,
  1113.     UINT                    uMsg, 
  1114.     LPARAM                  lParam1,
  1115.     LPARAM                  lParam2
  1116. );
  1117.  
  1118.  
  1119.  
  1120. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1121. //
  1122. //  acmStreamConvert()
  1123. //
  1124. //
  1125. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1126.  
  1127. MMRESULT ACMAPI acmStreamConvert
  1128. (
  1129.     HACMSTREAM              has, 
  1130.     LPACMSTREAMHEADER       pash,
  1131.     DWORD                   fdwConvert
  1132. );
  1133.  
  1134. #define ACM_STREAMCONVERTF_BLOCKALIGN   0x00000004
  1135. #define ACM_STREAMCONVERTF_START        0x00000010
  1136. #define ACM_STREAMCONVERTF_END          0x00000020
  1137.  
  1138.  
  1139. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1140. //
  1141. //  acmStreamPrepareHeader()
  1142. //
  1143. //
  1144. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1145.  
  1146. MMRESULT ACMAPI acmStreamPrepareHeader
  1147. (
  1148.     HACMSTREAM          has,
  1149.     LPACMSTREAMHEADER   pash,
  1150.     DWORD               fdwPrepare
  1151. );
  1152.  
  1153.  
  1154.  
  1155.  
  1156. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1157. //
  1158. //  acmStreamUnprepareHeader()
  1159. //
  1160. //
  1161. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1162.  
  1163. MMRESULT ACMAPI acmStreamUnprepareHeader
  1164. (
  1165.     HACMSTREAM          has,
  1166.     LPACMSTREAMHEADER   pash,
  1167.     DWORD               fdwUnprepare
  1168. );
  1169.                                        
  1170.  
  1171.  
  1172. #ifndef RC_INVOKED
  1173. #pragma pack()          /* Revert to default packing */
  1174. #endif  /* RC_INVOKED */
  1175.  
  1176. #ifdef __cplusplus
  1177. }                       /* End of extern "C" { */
  1178. #endif  /* __cplusplus */
  1179.  
  1180. #endif  /* _INC_ACM */
  1181.  
  1182.  
  1183.