home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mmoshead.zip / mcios2.h < prev    next >
C/C++ Source or Header  |  1997-06-01  |  65KB  |  1,546 lines

  1. /**************************************/
  2. /* mcios2.h -- Multimedia for emx 1.0 */
  3. /*                                    */
  4. /*                                    */
  5. /* Marc E.E. van Woerkom, 2/94        */
  6. /*                                    */
  7. /**************************************/
  8.  
  9.  
  10. /* nested header management */
  11. #ifndef _MCIOS2_H
  12. #define _MCIOS2_H
  13.  
  14. /* use 8-bit alignment */
  15. #pragma pack(1)
  16.  
  17.  
  18. /***************/
  19. /* definitions */
  20. /***************/
  21.  
  22. #define MCI_TRUE   1
  23. #define MCI_FALSE  0
  24.  
  25.  
  26. /**********/
  27. /* limits */
  28. /**********/
  29.  
  30. #define MAX_DEVICE_NAME      20
  31. #define MAX_ALIAS_NAME       20
  32. #define MAX_PRODINFO         40
  33. #define MAX_EXTENSION_NAME    4
  34. #define MAX_DEV_PARAMS      128
  35. #define MAX_VERSION_NUMBER    6
  36. #define MAX_PDD_NAME          9
  37. #define MAX_DLL_NAME        260
  38. #define MAX_CLASSES          10
  39. #define MAX_CONNECTORS       10
  40. #define MAX_EXTENSIONS       25
  41. #define MAX_TYPEBUFFER      256
  42.  
  43.  
  44. /************************/
  45. /* MCI command messages */
  46. /************************/
  47.  
  48. #define MCI_OPEN                  1
  49. #define MCI_CLOSE                 2
  50. #define MCI_ESCAPE                3
  51. #define MCI_PLAY                  4
  52. #define MCI_SEEK                  5
  53. #define MCI_STOP                  6
  54. #define MCI_PAUSE                 7
  55. #define MCI_INFO                  8
  56. #define MCI_GETDEVCAPS            9
  57. #define MCI_STATUS               10
  58. #define MCI_SPIN                 11
  59. #define MCI_SET                  12
  60. #define MCI_STEP                 13
  61. #define MCI_RECORD               14
  62. #define MCI_SYSINFO              15
  63. #define MCI_SAVE                 16
  64. #define MCI_CUE                  17
  65. #define MCI_UPDATE               18
  66. #define MCI_SET_CUEPOINT         19
  67. #define MCI_SET_POSITION_ADVISE  20
  68. #define MCI_SET_SYNC_OFFSET      21
  69. #define MCI_LOAD                 22
  70. #define MCI_ACQUIREDEVICE        23
  71. #define MCI_RELEASEDEVICE        24
  72. #define MCI_MASTERAUDIO          25
  73. #define MCI_GETTOC               26
  74. #define MCI_DEVICESETTINGS       27
  75. #define MCI_CONNECTOR            28
  76. #define MCI_RESUME               29
  77. #define MCI_CONNECTORINFO        31
  78. #define MCI_DEFAULT_CONNECTION   32
  79. #define MCI_CONNECTION           33
  80. #define MCI_GROUP                34
  81. #define MCI_CAPTURE              40
  82. #define MCI_FREEZE               41
  83. #define MCI_GETIMAGEBUFFER       42
  84. #define MCI_GETIMAGEPALETTE      43
  85. #define MCI_PUT                  44
  86. #define MCI_REALIZE              45
  87. #define MCI_REWIND               46
  88. #define MCI_RESTORE              47
  89. #define MCI_SETIMAGEBUFFER       48
  90. #define MCI_SETIMAGEPALETTE      49
  91. #define MCI_UNFREEZE             50
  92. #define MCI_WHERE                51
  93. #define MCI_WINDOW               52
  94. #define MCI_DELETE               53
  95. #define MCI_CUT                  54
  96. #define MCI_PASTE                55
  97. #define MCI_COPY                 56
  98. #define MCI_REDO                 57
  99. #define MCI_UNDO                 58
  100. /*#define MCI_MAX_COMMAND          58*/
  101. #define MCI_USER_MESSAGES      2000
  102.  
  103. /*DART*/
  104. #define MCI_BUFFER               62
  105. #define MCI_MIXSETUP             63
  106. #define MCI_MAX_COMMAND          64
  107.  
  108. /****************/
  109. /* device stuff */
  110. /****************/
  111.  
  112. #define MCI_ALL_DEVICE_ID  0xFFFF
  113.  
  114. #define MCI_DEVTYPE_VIDEOTAPE        1
  115. #define MCI_DEVTYPE_VIDEODISC        2
  116. #define MCI_DEVTYPE_CD_AUDIO         3
  117. #define MCI_DEVTYPE_DAT              4
  118. #define MCI_DEVTYPE_AUDIO_TAPE       5
  119. #define MCI_DEVTYPE_OTHER            6
  120. #define MCI_DEVTYPE_WAVEFORM_AUDIO   7
  121. #define MCI_DEVTYPE_SEQUENCER        8
  122. #define MCI_DEVTYPE_AUDIO_AMPMIX     9
  123. #define MCI_DEVTYPE_OVERLAY         10
  124. #define MCI_DEVTYPE_ANIMATION       11
  125. #define MCI_DEVTYPE_DIGITAL_VIDEO   12
  126. #define MCI_DEVTYPE_SPEAKER         13
  127. #define MCI_DEVTYPE_HEADPHONE       14
  128. #define MCI_DEVTYPE_MICROPHONE      15
  129. #define MCI_DEVTYPE_MONITOR         16
  130. #define MCI_DEVTYPE_CDXA            17
  131.  
  132. #define MCI_MAX_SYSTEM_DEVICE_NAMES  17
  133.  
  134. #define MCI_DEVTYPE_VIDEOTAPE_NAME       "Videotape"
  135. #define MCI_DEVTYPE_VIDEODISC_NAME       "Videodisc"
  136. #define MCI_DEVTYPE_CD_AUDIO_NAME        "CDaudio"
  137. #define MCI_DEVTYPE_DAT_NAME             "DAT"
  138. #define MCI_DEVTYPE_AUDIO_TAPE_NAME      "Audiotape"
  139. #define MCI_DEVTYPE_OTHER_NAME           "Other"
  140. #define MCI_DEVTYPE_WAVEFORM_AUDIO_NAME  "Waveaudio"
  141. #define MCI_DEVTYPE_SEQUENCER_NAME       "Sequencer"
  142. #define MCI_DEVTYPE_AUDIO_AMPMIX_NAME    "Ampmix"
  143. #define MCI_DEVTYPE_OVERLAY_NAME         "Overlay"
  144. #define MCI_DEVTYPE_ANIMATION_NAME       "Animation"
  145. #define MCI_DEVTYPE_DIGITAL_VIDEO_NAME   "Digitalvideo"
  146. #define MCI_DEVTYPE_SPEAKER_NAME         "Speaker"
  147. #define MCI_DEVTYPE_HEADPHONE_NAME       "Headphone"
  148. #define MCI_DEVTYPE_MICROPHONE_NAME      "Microphone"
  149. #define MCI_DEVTYPE_MONITOR_NAME         "Monitor"
  150. #define MCI_DEVTYPE_CDXA_NAME            "CDXA"
  151.  
  152.  
  153. /********************/
  154. /* item base values */
  155. /********************/
  156.  
  157. #define MCI_AMP_ITEM_BASE   0x1000L
  158. #define MCI_CD_ITEM_BASE    0x2000L
  159. #define MCI_CDXA_ITEM_BASE  0x3000L
  160. #define MCI_VD_ITEM_BASE    0x4000L
  161. #define MCI_SEQ_ITEM_BASE   0x5000L
  162. #define MCI_WAVE_ITEM_BASE  0x6000L
  163. #define MCI_VID_ITEM_BASE   0x7000L
  164. #define MCI_DGV_ITEM_BASE   0x8000L
  165. #define MCI_OVLY_ITEM_BASE  0x9000L
  166.  
  167.  
  168. /*********/
  169. /* items */
  170. /*********/
  171.  
  172. #define MCI_AMP_STATUS_PITCH     MCI_AMP_ITEM_BASE
  173. #define MCI_AMP_STATUS_TREBLE   (MCI_AMP_ITEM_BASE+1)
  174. #define MCI_AMP_STATUS_BASS     (MCI_AMP_ITEM_BASE+2)
  175. #define MCI_AMP_STATUS_BALANCE  (MCI_AMP_ITEM_BASE+3)
  176. #define MCI_AMP_STATUS_GAIN     (MCI_AMP_ITEM_BASE+4)
  177. #define MCI_AMP_STATUS_MONITOR  (MCI_AMP_ITEM_BASE+5)
  178.  
  179. #define MCI_CD_STATUS_TRACK_TYPE            MCI_CD_ITEM_BASE
  180. #define MCI_CD_STATUS_TRACK_COPYPERMITTED  (MCI_CD_ITEM_BASE+1)
  181. #define MCI_CD_STATUS_TRACK_CHANNELS       (MCI_CD_ITEM_BASE+2)
  182. #define MCI_CD_STATUS_TRACK_PREEMPHASIS    (MCI_CD_ITEM_BASE+3)
  183.  
  184. #define MCI_CDXA_STATUS_CHANNEL  MCI_CDXA_ITEM_BASE
  185.  
  186. #define MCI_VD_STATUS_SPEED       MCI_VD_ITEM_BASE
  187. #define MCI_VD_STATUS_FORWARD    (MCI_VD_ITEM_BASE+1)
  188. #define MCI_VD_MEDIA_TYPE        (MCI_VD_ITEM_BASE+2)
  189. #define MCI_VD_STATUS_SIDE       (MCI_VD_ITEM_BASE+3)
  190. #define MCI_VD_STATUS_DISC_SIZE  (MCI_VD_ITEM_BASE+4)
  191.  
  192. #define MCI_SEQ_STATUS_TEMPO     MCI_SEQ_ITEM_BASE
  193. #define MCI_SEQ_STATUS_OFFSET   (MCI_SEQ_ITEM_BASE+1)
  194. #define MCI_SEQ_STATUS_DIVTYPE  (MCI_SEQ_ITEM_BASE+2)
  195. #define MCI_SEQ_STATUS_MASTER   (MCI_SEQ_ITEM_BASE+3)
  196. #define MCI_SEQ_STATUS_PORT     (MCI_SEQ_ITEM_BASE+4)
  197. #define MCI_SEQ_STATUS_SLAVE    (MCI_SEQ_ITEM_BASE+5)
  198.  
  199. #define MCI_WAVE_STATUS_LEVEL            MCI_WAVE_ITEM_BASE
  200. #define MCI_WAVE_STATUS_SAMPLESPERSEC   (MCI_WAVE_ITEM_BASE+1)
  201. #define MCI_WAVE_STATUS_AVGBYTESPERSEC  (MCI_WAVE_ITEM_BASE+2)
  202. #define MCI_WAVE_STATUS_BLOCKALIGN      (MCI_WAVE_ITEM_BASE+3)
  203. #define MCI_WAVE_STATUS_FORMATTAG       (MCI_WAVE_ITEM_BASE+4)
  204. #define MCI_WAVE_STATUS_CHANNELS        (MCI_WAVE_ITEM_BASE+5)
  205. #define MCI_WAVE_STATUS_BITSPERSAMPLE   (MCI_WAVE_ITEM_BASE+6)
  206.  
  207. #define MCI_VID_SET_VIDEO_COMPRESSION            MCI_VID_ITEM_BASE
  208. #define MCI_VID_SET_IMAGE_COMPRESSION           (MCI_VID_ITEM_BASE+1)
  209. #define MCI_VID_SET_IMAGE_BITSPERPEL            (MCI_VID_ITEM_BASE+2)
  210. #define MCI_VID_SET_IMAGE_PELFORMAT             (MCI_VID_ITEM_BASE+3)
  211. #define MCI_VID_SET_BRIGHTNESS                  (MCI_VID_ITEM_BASE+4)
  212. #define MCI_VID_SET_CONTRAST                    (MCI_VID_ITEM_BASE+5)
  213. #define MCI_VID_SET_HUE                         (MCI_VID_ITEM_BASE+6)
  214. #define MCI_VID_SET_SATURATION                  (MCI_VID_ITEM_BASE+7)
  215. #define MCI_VID_SET_SHARPNESS                   (MCI_VID_ITEM_BASE+8)
  216. #define MCI_VID_SET_GREYSCALE                   (MCI_VID_ITEM_BASE+9)
  217. #define MCI_VID_SET_IMAGE_QUALITY               (MCI_VID_ITEM_BASE+10)
  218. #define MCI_VID_SET_VIDEO_QUALITY               (MCI_VID_ITEM_BASE+11)
  219. #define MCI_VID_SET_IMAGE_COMPRESSION_METHOD    (MCI_VID_ITEM_BASE+12)
  220. #define MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE  (MCI_VID_ITEM_BASE+13)
  221. #define MCI_VID_SET_IMAGE_FILE_FORMAT           (MCI_VID_ITEM_BASE+14)
  222. #define MCI_VID_SET_REF_INTERVAL                (MCI_VID_ITEM_BASE+15)
  223. #define MCI_VID_SET_MAXDATARATE                 (MCI_VID_ITEM_BASE+16)
  224. #define MCI_VID_SET_VIDEO_FILE_FORMAT           (MCI_VID_ITEM_BASE+17)
  225.  
  226. #define MCI_VID_STATUS_HWND                MCI_VID_ITEM_BASE
  227. #define MCI_VID_STATUS_AUDIO_COMPRESSION  (MCI_VID_ITEM_BASE+1)
  228. #define MCI_VID_STATUS_VIDEO_COMPRESSION  (MCI_VID_ITEM_BASE+2)
  229. #define MCI_VID_STATUS_IMAGE_COMPRESSION  (MCI_VID_ITEM_BASE+3)
  230. #define MCI_VID_STATUS_AUDIO_QUALITY      (MCI_VID_ITEM_BASE+4)
  231. #define MCI_VID_STATUS_VIDEO_QUALITY      (MCI_VID_ITEM_BASE+5)
  232. #define MCI_VID_STATUS_IMAGE_QUALITY      (MCI_VID_ITEM_BASE+6)
  233. #define MCI_VID_STATUS_IMAGE_BITSPERPEL   (MCI_VID_ITEM_BASE+7)
  234. #define MCI_VID_STATUS_IMAGE_PELFORMAT    (MCI_VID_ITEM_BASE+8)
  235. #define MCI_VID_STATUS_FORWARD            (MCI_VID_ITEM_BASE+9)
  236. #define MCI_VID_STATUS_NORMAL_RATE        (MCI_VID_ITEM_BASE+10)
  237. #define MCI_VID_STATUS_VIDEO_X_EXTENT     (MCI_VID_ITEM_BASE+11)
  238. #define MCI_VID_STATUS_VIDEO_Y_EXTENT     (MCI_VID_ITEM_BASE+12)
  239. #define MCI_VID_STATUS_IMAGE_X_EXTENT     (MCI_VID_ITEM_BASE+13)
  240. #define MCI_VID_STATUS_IMAGE_Y_EXTENT     (MCI_VID_ITEM_BASE+14)
  241. #define MCI_VID_STATUS_BRIGHTNESS         (MCI_VID_ITEM_BASE+15)
  242. #define MCI_VID_STATUS_CONTRAST           (MCI_VID_ITEM_BASE+16)
  243. #define MCI_VID_STATUS_HUE                (MCI_VID_ITEM_BASE+17)
  244. #define MCI_VID_STATUS_SATURATION         (MCI_VID_ITEM_BASE+18)
  245. #define MCI_VID_STATUS_GREYSCALE          (MCI_VID_ITEM_BASE+19)
  246. #define MCI_VID_STATUS_SHARPNESS          (MCI_VID_ITEM_BASE+20)
  247. #define MCI_VID_STATUS_SPEED              (MCI_VID_ITEM_BASE+21)
  248. #define MCI_VID_STATUS_IMAGE_FILE_FORMAT  (MCI_VID_ITEM_BASE+22)
  249. #define MCI_VID_STATUS_TRANSPARENT_TYPE   (MCI_VID_ITEM_BASE+23)
  250. #define MCI_VID_STATUS_REF_INTERVAL       (MCI_VID_ITEM_BASE+24)
  251. #define MCI_VID_STATUS_MAXDATARATE        (MCI_VID_ITEM_BASE+25)
  252. #define MCI_VID_STATUS_VIDEO_FILE_FORMAT  (MCI_VID_ITEM_BASE+26)
  253. #define MCI_VID_STATUS_TRANSPARENT_COLOR  (MCI_VID_ITEM_BASE+24)  /*???*/
  254.  
  255. #define MCI_DGV_SET_AUDIO_COMPRESSION   MCI_DGV_ITEM_BASE
  256. #define MCI_DGV_SET_AUDIO_QUALITY      (MCI_DGV_ITEM_BASE+1)
  257.  
  258.  
  259. /**************/
  260. /* operations */
  261. /**************/
  262.  
  263. #define MCI_NOTIFY          0x00000001L
  264. #define MCI_WAIT            0x00000002L
  265. #define MCI_FROM            0x00000004L
  266. #define MCI_TO              0x00000008L
  267. #define MCI_MILLISECONDS    0x00000010L
  268. #define MCI_TRACK           0x00000020L
  269. #define MCI_OVER            0x00000040L
  270. #define MCI_TEST            0x00000080L
  271. #define MCI_TO_BUFFER       0x00000100L
  272. #define MCI_FROM_BUFFER     0x00000200L
  273. #define MCI_CONVERT_FORMAT  0x00000400L
  274.  
  275.  
  276. /*********************/
  277. /* other definitions */
  278. /*********************/
  279.  
  280. #define MCI_ACQUIRE_QUEUE                0x00000400L
  281. #define MCI_AUD_COMP_ADPCM4              0x00000001L
  282. #define MCI_AUD_COMP_PCM8                0x00000002L
  283. #define MCI_AUD_QUALITY_HIGH             0x00000001L
  284. #define MCI_AUD_QUALITY_MED              0x00000002L
  285. #define MCI_AUD_QUALITY_LOW              0x00000003L
  286.  
  287. #define MCI_CAPTURE_RECT                 0x00000100L
  288. #define MCI_CONVERT                      0x00001000L
  289. #define MCI_CUE_INPUT                    0x00000100L
  290. #define MCI_CUE_OUTPUT                   0x00000200L
  291.  
  292. #define MCI_ESCAPE_STRING                0x00000100L
  293. #define MCI_EXCLUSIVE                    0x00000100L
  294. #define MCI_EXCLUSIVE_INSTANCE           0x00000200L
  295.  
  296. #define MCI_FIND_BEST_REGISTERED         0x00000100L
  297. #define MCI_FORMAT_MILLISECONDS          0x00000001L
  298. #define MCI_FORMAT_MMTIME                0x00000002L
  299. #define MCI_FORMAT_MSF                   0x00000005L
  300. #define MCI_FORMAT_TMSF                  0x00000006L
  301. #define MCI_FORMAT_CHAPTERS              0x00000007L
  302. #define MCI_FORMAT_FRAMES                0x00000008L
  303. #define MCI_FORMAT_HMS                   0x00000009L
  304. #define MCI_FORMAT_TRACKS                0x0000000AL
  305. #define MCI_FORMAT_BYTES                 0x0000000BL
  306. #define MCI_FORMAT_SAMPLES               0x0000000CL
  307. #define MCI_FORMAT_HMSF                  0x0000000DL
  308. #define MCI_FORMAT_SET_SMPTE_24          0x0000000EL
  309. #define MCI_FORMAT_SET_SMPTE_25          0x0000000FL
  310. #define MCI_FORMAT_SET_SMPTE_30          0x00000010L
  311. #define MCI_FORMAT_SET_SMPTE_30DROP      0x00000011L
  312. #define MCI_FORMAT_SET_SONGPTR           0x00000012L
  313. #define MCI_FORMAT_PERCENTAGE            0x00000003L
  314. #define MCI_FORMAT_FPS                   0x00000004L
  315.  
  316. #define MCI_GAINING_USE                  0x00000002L
  317. #define MCI_GET_HW_BUFFER_PTR            0x00000800L
  318. #define MCI_GROUP_MAKE                   0x00000400L
  319. #define MCI_GROUP_DELETE                 0x00000800L
  320. #define MCI_GROUP_ALIAS                  0x00001000L
  321. #define MCI_GROUP_MASTER                 0x00002000L
  322.  
  323. #define MCI_HEADPHONES                   0x00000400L
  324.  
  325. #define MCI_IMG_COMP_NONE                0x00000201L
  326. #define MCI_IMG_COMP_PIC9_1_0            0x00000202L
  327. #define MCI_IMG_COMP_PIC16_1_0           0x00000203L
  328. #define MCI_IMG_COMP_JPEG9               0x00000204L
  329. #define MCI_IMG_COMP_JPEG9_1_0           MCI_IMG_COMP_JPEG9
  330. #define MCI_IMG_COMP_BMP_RLE4            0x00000205L
  331. #define MCI_IMG_COMP_BMP_RLE8            0x00000206L
  332. #define MCI_IMG_COMP_JPEGN               0x00000207L
  333. #define MCI_IMG_PALETTE                  MCI_VID_PALETTE
  334. #define MCI_IMG_RGB                      MCI_VID_RGB
  335. #define MCI_IMG_YUV                      MCI_VID_YUV
  336. #define MCI_IMG_QUALITY_HIGH             0x00000201L
  337. #define MCI_IMG_QUALITY_MED              0x00000202L
  338. #define MCI_IMG_QUALITY_LOW              0x00000203L
  339. #define MCI_INFO_FILE                    0x00000200L
  340. #define MCI_INFO_PRODUCT                 0x00000100L
  341.  
  342. #define MCI_LOSING_USE                   0x00000001L
  343.  
  344. #define MCI_MASTERVOL                    0x00001000L
  345. #define MCI_MODE_NOT_READY               0x00000001L
  346. #define MCI_MODE_PAUSE                   0x00000002L
  347. #define MCI_MODE_PLAY                    0x00000003L
  348. #define MCI_MODE_STOP                    0x00000004L
  349. #define MCI_MODE_RECORD                  0x00000005L
  350. #define MCI_MODE_SEEK                    0x00000006L
  351.  
  352. #define MCI_NOPIECEMEAL                  0x00000200L
  353. #define MCI_NOTIFY_SUCCESSFUL            0x0000
  354. #define MCI_NOTIFY_SUPERSEDED            0x0001
  355. #define MCI_NOTIFY_ABORTED               0x0002
  356. #define MCI_NOTIFY_ERROR                 0x0003
  357.  
  358. #define MCI_ON                           0x00000100L
  359. #define MCI_OFF                          0x00000200L
  360. #define MCI_OPEN_ELEMENT                 0x00000100L
  361. #define MCI_OPEN_ALIAS                   0x00000200L
  362. #define MCI_OPEN_ELEMENT_ID              0x00000400L
  363. #define MCI_OPEN_PLAYLIST                0x00000800L
  364. #define MCI_OPEN_TYPE_ID                 0x00001000L
  365. #define MCI_OPEN_SHAREABLE               0x00002000L
  366. #define MCI_OPEN_MMIO                    0x00004000L
  367.  
  368. #define MCI_PREROLL_NOTIFIED             0x00000001L
  369. #define MCI_PREROLL_DETERMINISTIC        0x00000002L
  370. #define MCI_PREROLL_NONE                 0x00000003L
  371.  
  372. #define MCI_QUERYSAVEDSETTING            0x00004000L
  373. #define MCI_QUERYCURRENTSETTING          0x00008000L
  374. #define MCI_QUERY_REGISTERED_MAP         0x00000200L
  375. #define MCI_QUERY_REGISTERED_MAP_SIZE    0x00000400L
  376.  
  377. #define MCI_READONLY                     0x00008000L
  378. #define MCI_RECORD_INSERT                0x00000100L
  379. #define MCI_RECORD_OVERWRITE             0x00000200L
  380. #define MCI_RESTORE_SRC_RECT             0x00000100L
  381. #define MCI_RESTORE_DEST_RECT            0x00000200L
  382. #define MCI_RETURN_RESOURCE              0x00000100L
  383.  
  384. #define MCI_SAVESETTING                  0x00002000L
  385. #define MCI_SAVE_FILE                    0x00000100L
  386. #define MCI_SET_ITEM                     0x00000100L
  387. #define MCI_SET_ON                       0x00000200L
  388. #define MCI_SET_OFF                      0x00000400L
  389. #define MCI_SET_VIDEO                    0x00000800L
  390. #define MCI_SET_AUDIO                    0x00001000L
  391. #define MCI_SET_DOOR_OPEN                0x00002000L
  392. #define MCI_SET_DOOR_CLOSED              0x00004000L
  393. #define MCI_SET_SPEED_FORMAT             0x00008000L
  394. #define MCI_SET_TIME_FORMAT              0x00010000L
  395. #define MCI_SET_DOOR_LOCK                0x00020000L
  396. #define MCI_SET_DOOR_UNLOCK              0x00040000L
  397. #define MCI_SET_VOLUME                   0x00080000L
  398. #define MCI_SET_ITEM_FOURCC              0x00100000L
  399. #define MCI_SET_AUDIO_ALL                0x00000000L
  400. #define MCI_SET_AUDIO_LEFT               0x00000001L
  401. #define MCI_SET_AUDIO_RIGHT              0x00000002L
  402. #define MCI_SET_MONITOR                  0x00000001L
  403. #define MCI_SET_MONITOR_AUDIO            0x00000002L
  404. #define MCI_SET_MONITOR_VIDEO            0x00000003L
  405. #define MCI_SET_RECORD                   0x00000004L
  406. #define MCI_SET_NONE                     0x10000000L
  407. #define MCI_SET_POSITION_ADVISE_ON       0x00000100L
  408. #define MCI_SET_POSITION_ADVISE_OFF      0x00000200L
  409. #define MCI_SET_CUEPOINT_ON              0x00000100L
  410. #define MCI_SET_CUEPOINT_OFF             0x00000200L
  411. #define MCI_SET_REGISTERED               0x00000100L
  412. #define MCI_SPEAKERS                     0x00000800L
  413. #define MCI_SPIN_UP                      0x00000100L
  414. #define MCI_SPIN_DOWN                    0x00000200L
  415. #define MCI_STATUS_ITEM                  0x00000100L
  416. #define MCI_STATUS_START                 0x00000200L
  417. #define MCI_STATUS_CURRENT_TRACK         0x00000001L
  418. #define MCI_STATUS_LENGTH                0x00000002L
  419. #define MCI_STATUS_MODE                  0x00000003L
  420. #define MCI_STATUS_NUMBER_OF_TRACKS      0x00000004L
  421. #define MCI_STATUS_POSITION              0x00000005L
  422. #define MCI_STATUS_POSITION_IN_TRACK     0x00000006L
  423. #define MCI_STATUS_MEDIA_PRESENT         0x00000007L
  424. #define MCI_STATUS_VOLUME                0x00000008L
  425. #define MCI_STATUS_READY                 0x00000009L
  426. #define MCI_STATUS_TIME_FORMAT           0x0000000AL
  427. #define MCI_STATUS_SPEED_FORMAT          0x0000000BL
  428. #define MCI_STATUS_MONITOR               0x0000000CL
  429. #define MCI_STATUS_AUDIO                 0x0000000DL
  430. #define MCI_STATUS_VIDEO                 0x0000000EL
  431. #define MCI_STATUS_CLIPBOARD             0x0000000FL
  432. #define MCI_STATUS_AUDIO_ALL             0x00000000L
  433. #define MCI_STATUS_AUDIO_LEFT            0x00000001L
  434. #define MCI_STATUS_AUDIO_RIGHT           0x00000002L
  435. #define MCI_STEP_FRAMES                  0x00000100L
  436. #define MCI_STEP_REVERSE                 0x00000200L
  437. #define MCI_SYNCHRONIZE                  0x00000100L
  438. #define MCI_SYSINFO_QUANTITY             0x00000100L
  439. #define MCI_SYSINFO_OPEN                 0x00000200L
  440. #define MCI_SYSINFO_NAME                 0x00000400L
  441. #define MCI_SYSINFO_INSTALLNAME          0x00000800L
  442. #define MCI_SYSINFO_ITEM                 0x00001000L
  443. #define MCI_SYSINFO_INI_LOCK             0x00002000L
  444. #define MCI_SYSINFO_DEV_CONTROLLABLE     0x00000001L
  445. #define MCI_SYSINFO_DEV_NONCONTROLLABLE  0x00000002L
  446. #define MCI_SYSINFO_DEVICESETTINGS       0x00000004L
  447. #define MCI_SYSINFO_INSTALL_DRIVER       0x00000001L
  448. #define MCI_SYSINFO_QUERY_DRIVER         0x00000002L
  449. #define MCI_SYSINFO_DELETE_DRIVER        0x00000004L
  450. #define MCI_SYSINFO_SET_PARAMS           0x00000008L
  451. #define MCI_SYSINFO_QUERY_PARAMS         0x00000010L
  452. #define MCI_SYSINFO_SET_CONNECTORS       0x00000020L
  453. #define MCI_SYSINFO_QUERY_CONNECTORS     0x00000040L
  454. #define MCI_SYSINFO_SET_EXTENSIONS       0x00000080L
  455. #define MCI_SYSINFO_QUERY_EXTENSIONS     0x00000100L
  456. #define MCI_SYSINFO_SET_ALIAS            0x00000200L
  457. #define MCI_SYSINFO_QUERY_NAMES          0x00000400L
  458. #define MCI_SYSINFO_SET_DEFAULT          0x00000800L
  459. #define MCI_SYSINFO_QUERY_DEFAULT        0x00001000L
  460. #define MCI_SYSINFO_SET_TYPES            0x00002000L
  461. #define MCI_SYSINFO_QUERY_TYPES          0x00004000L
  462.  
  463. #define MCI_TO_START                     0x00000100L
  464. #define MCI_TO_END                       0x00000200L
  465.  
  466. #define MCI_USE_HW_BUFFER                0x00000400L
  467.  
  468. /*Constants for DART Callbacks*/
  469. #define MIX_STREAM_ERROR   0x00000080L
  470. #define MIX_READ_COMPLETE  0x00000001L
  471. #define MIX_WRITE_COMPLETE 0x00000002L
  472. /*DART constants*/
  473. #define MCI_MIXSETUP_INIT                0x00010000L
  474. #define MCI_MIXSETUP_DEINIT              0x00020000L
  475. #define MCI_MIXSETUP_QUERYMODE           0x00040000L
  476.  
  477. #define MCI_ALLOCATE_MEMORY              0x00040000L
  478. #define MCI_DEALLOCATE_MEMORY            0x00080000L
  479.  
  480. /****************/
  481. /* device stuff */
  482. /****************/
  483.  
  484. #define MCI_AMP_SET_BALANCE                      0x00100000L
  485. #define MCI_AMP_SET_PITCH                        0x00200000L
  486. #define MCI_AMP_SET_TREBLE                       0x00400000L
  487. #define MCI_AMP_SET_BASS                         0x00800000L
  488. #define MCI_AMP_SET_GAIN                         0x01000000L
  489. #define MCI_AMP_SET_MONITOR                      MCI_SET_MONITOR_AUDIO
  490.                                                  
  491. #define MCI_CD_INFO_ID                           0x00010000L
  492. #define MCI_CD_INFO_UPC                          0x00020000L
  493. #define MCI_CD_TRACK_AUDIO                       0x00000001L
  494. #define MCI_CD_TRACK_DATA                        0x00000002L
  495. #define MCI_CD_TRACK_OTHER                       0x00000003L
  496.                                                  
  497. #define MCI_CDXA_NONE                            0x00000000L
  498. #define MCI_CDXA_SET_CHANNEL                     0x01000000L
  499. #define MCI_CDXA_AUDIO_DEVICE                    0x10000000L
  500. #define MCI_CDXA_AUDIO_BUFFER                    0x02000000L
  501. #define MCI_CDXA_VIDEO_BUFFER                    0x04000000L
  502. #define MCI_CDXA_DATA_BUFFER                     0x08000000L
  503.                                                  
  504. #define MCI_VD_INFO_LABEL                        0x00001000L
  505. #define MCI_VD_MEDIA_CLV                         0x00000001L
  506. #define MCI_VD_MEDIA_CAV                         0x00000002L
  507. #define MCI_VD_MEDIA_OTHER                       0x00000003L
  508. #define MCI_VD_PLAY_REVERSE                      0x00001000L
  509. #define MCI_VD_PLAY_FAST                         0x00002000L
  510. #define MCI_VD_PLAY_SPEED                        0x00004000L
  511. #define MCI_VD_PLAY_SCAN                         0x00008000L
  512. #define MCI_VD_PLAY_SLOW                         0x00010000L
  513. #define MCI_VD_SEEK_REVERSE                      0x00001000L
  514. #define MCI_VD_SET_CHANNEL                       0x00100000L
  515. #define MCI_VD_SET_DISPLAY                       0x00200000L
  516. #define MCI_VD_SET_ON                            MCI_SET_ON
  517. #define MCI_VD_SET_OFF                           MCI_SET_OFF
  518. #define MCI_VD_SET_VIDEO                         MCI_SET_VIDEO
  519. #define MCI_VD_SPEED_NORMAL                      0x00000000L
  520. #define MCI_VD_SPEED_FAST                        0x00000001L
  521. #define MCI_VD_SPEED_SLOW                        0x00000002L
  522.                                                  
  523. #define MCI_SEQ_SET_TEMPO                        0x00100000L
  524. #define MCI_SEQ_SET_PORT                         0x00200000L
  525. #define MCI_SEQ_ENABLE_PORT_MAPPER               0x00400000L
  526. #define MCI_SEQ_DISABLE_PORT_MAPPER              0x00800000L
  527. #define MCI_SEQ_SET_OFFSET                       0x01000000L
  528. #define MCI_SEQ_SET_MASTER                       0x02000000L
  529. #define MCI_SEQ_SET_SLAVE                        0x04000000L
  530. #define MCI_SEQ_SET_SMPTE_24                     0x00000100L
  531. #define MCI_SEQ_SET_SMPTE_25                     0x00000200L
  532. #define MCI_SEQ_SET_SMPTE_30                     0x00000300L
  533. #define MCI_SEQ_SET_SMPTE_30DROP                 0x00000400L
  534. #define MCI_SEQ_SET_SONGPTR                      0x00000500L
  535. #define MCI_SEQ_MIDI                             0x00000001L
  536. #define MCI_SEQ_SMPTE                            0x00000002L
  537. #define MCI_SEQ_FILE                             0x00000003L
  538. #define MCI_SEQ_NONE                             0x00000004L
  539. #define MCI_SEQ_DIV_PPQN                         0x00000001L
  540. #define MCI_SEQ_DIV_SMPTE_24                     0x00000002L
  541. #define MCI_SEQ_DIV_SMPTE_25                     0x00000003L
  542. #define MCI_SEQ_DIV_SMPTE_30DROP                 0x00000004L
  543. #define MCI_SEQ_DIV_SMPTE_30                     0x00000005L
  544.                                                  
  545. #define MCI_WAVE_INPUT                           0x00001000L
  546. #define MCI_WAVE_OUTPUT                          0x00002000L
  547. #define MCI_WAVE_SET_SAMPLESPERSEC               0x01000000L
  548. #define MCI_WAVE_SET_AVGBYTESPERSEC              0x02000000L
  549. #define MCI_WAVE_SET_BLOCKALIGN                  0x04000000L
  550. #define MCI_WAVE_SET_FORMATTAG                   0x08000000L
  551. #define MCI_WAVE_SET_CHANNELS                    0x10000000L
  552. #define MCI_WAVE_SET_BITSPERSAMPLE               0x80000000L
  553. #define MCI_WAVE_FORMAT_PCM                      DATATYPE_WAVEFORM
  554. #define MCI_WAVE_FORMAT_ADPCM                    0x0002L
  555. #define MCI_WAVE_FORMAT_IBM_CVSD                 0x0005L
  556. #define MCI_WAVE_FORMAT_ALAW                     DATATYPE_RIFF_ALAW
  557. #define MCI_WAVE_FORMAT_MULAW                    DATATYPE_RIFF_MULAW
  558. #define MCI_WAVE_FORMAT_OKI_ADPCM                0x0010L
  559. #define MCI_WAVE_FORMAT_DVI_ADPCM                0x0011L
  560. #define MCI_WAVE_FORMAT_DIGISTD                  0x0015L
  561. #define MCI_WAVE_FORMAT_DIGIFIX                  0x0016L
  562. #define MCI_WAVE_FORMAT_AVC_ADPCM                DATATYPE_ADPCM_AVC
  563. #define MCI_WAVE_FORMAT_IBM_ADPCM                DATATYPE_ADPCM_AVC
  564. #define MCI_WAVE_FORMAT_IBM_MULAW                DATATYPE_MULAW
  565. #define MCI_WAVE_FORMAT_IBM_ALAW                 DATATYPE_ALAW
  566. #define MCI_WAVE_FORMAT_CT_ADPCM                 DATATYPE_CT_ADPCM
  567.                                                  
  568. #define MCI_VID_COMP_RTV_2_0                     0x00000101L
  569. #define MCI_VID_COMP_RTV_2_1                     0x00000102L
  570. #define MCI_VID_COMP_ULTI                        0x49544C55L
  571. #define MCI_VID_COMP_RT21                        0x31325452L
  572. #define MCI_VID_FILE_FORMAT_AVI                  0x20495641L
  573. #define MCI_VID_OPEN_PARENT                      0x01000000L
  574. #define MCI_VID_PALETTE                          0x00000001L
  575. #define MCI_VID_PUT_RECT                         0x00000100L
  576. #define MCI_VID_PUT_DESTINATION                  0x00000200L
  577. #define MCI_VID_PUT_SOURCE                       0x00000400L
  578. #define MCI_VID_PUT_WINDOW_MOVE                  0x00000800L
  579. #define MCI_VID_PUT_WINDOW_SIZE                  0x00001000L
  580. #define MCI_VID_QUALITY_HIGH                     0x00000101L
  581. #define MCI_VID_QUALITY_MED                      0x00000102L
  582. #define MCI_VID_QUALITY_LOW                      0x00000103L
  583. #define MCI_VID_QUALITY_BEST                     MCI_VID_QUALITY_HIGH
  584. #define MCI_VID_QUALITY_CDROM                    MCI_VID_QUALITY_MED
  585. #define MCI_VID_QUALITY_COMPACT                  MCI_VID_QUALITY_LOW
  586. #define MCI_VID_QUALITY_BETTER                   MCI_VID_QUALITY_MED
  587. #define MCI_VID_QUALITY_GOOD                     MCI_VID_QUALITY_LOW
  588. #define MCI_VID_RGB                              0x00000002L
  589. #define MCI_VID_WHERE_DESTINATION                0x00000100L
  590. #define MCI_VID_WHERE_SOURCE                     0x00000200L
  591. #define MCI_VID_WHERE_WINDOW                     0x00000400L
  592. #define MCI_VID_WINDOW_HWND                      0x00000100L
  593. #define MCI_VID_WINDOW_STATE                     0x00000200L
  594. #define MCI_VID_WINDOW_TEXT                      0x00000400L
  595. #define MCI_VID_WINDOW_DEFAULT                   0x00000800L
  596. #define MCI_VID_YUV                              0x00000003L
  597.                                                  
  598. #define MCI_DGV_INFO_VIDEO_FILE                  0x00001000L
  599. #define MCI_DGV_INFO_IMAGE_FILE                  0x00002000L
  600. #define MCI_DGV_INFO_TEXT                        0x00010000L
  601. #define MCI_DGV_OPEN_PARENT                      MCI_VID_OPEN_PARENT
  602. #define MCI_DGV_PLAY_REVERSE                     0x00001000L
  603. #define MCI_DGV_PLAY_FAST                        0x00002000L
  604. #define MCI_DGV_PLAY_SPEED                       0x00004000L
  605. #define MCI_DGV_PLAY_SCAN                        0x00008000L
  606. #define MCI_DGV_PLAY_SLOW                        0x00010000L
  607. #define MCI_DGV_PLAY_REPEAT                      0x00020000L
  608. #define MCI_DGV_PUT_RECT                         MCI_VID_PUT_RECT
  609. #define MCI_DGV_PUT_DESTINATION                  MCI_VID_PUT_DESTINATION
  610. #define MCI_DGV_PUT_SOURCE                       MCI_VID_PUT_SOURCE
  611. #define MCI_DGV_PUT_WINDOW_MOVE                  MCI_VID_PUT_WINDOW_MOVE
  612. #define MCI_DGV_PUT_WINDOW_SIZE                  MCI_VID_PUT_WINDOW_SIZE
  613. #define MCI_DGV_RECORD_RECT                      0x00000400L
  614. #define MCI_DGV_SAVE_VIDEO_FILE                  0x00001000L
  615. #define MCI_DGV_SAVE_IMAGE_FILE                  0x00002000L
  616. #define MCI_DGV_SEEK_TO_NEAREST_IFRAME           0x00100000L
  617. #define MCI_DGV_SET_VIDEO_COMPRESSION            MCI_VID_SET_VIDEO_COMPRESSION
  618. #define MCI_DGV_SET_IMAGE_COMPRESSION            MCI_VID_SET_IMAGE_COMPRESSION
  619. #define MCI_DGV_SET_IMAGE_BITSPERPEL             MCI_VID_SET_IMAGE_BITSPERPEL
  620. #define MCI_DGV_SET_IMAGE_PELFORMAT              MCI_VID_SET_IMAGE_PELFORMAT
  621. #define MCI_DGV_SET_BRIGHTNESS                   MCI_VID_SET_BRIGHTNESS
  622. #define MCI_DGV_SET_CONTRAST                     MCI_VID_SET_CONTRAST
  623. #define MCI_DGV_SET_HUE                          MCI_VID_SET_HUE
  624. #define MCI_DGV_SET_SATURATION                   MCI_VID_SET_SATURATION
  625. #define MCI_DGV_SET_SHARPNESS                    MCI_VID_SET_SHARPNESS
  626. #define MCI_DGV_SET_GREYSCALE                    MCI_VID_SET_GREYSCALE
  627. #define MCI_DGV_SET_IMAGE_QUALITY                MCI_VID_SET_IMAGE_QUALITY
  628. #define MCI_DGV_SET_VIDEO_QUALITY                MCI_VID_SET_VIDEO_QUALITY
  629. #define MCI_DGV_SET_IMAGE_COMPRESSION_METHOD     MCI_VID_SET_IMAGE_COMPRESSION_METHOD
  630. #define MCI_DGV_SET_MONITOR                      MCI_SET_MONITOR
  631. #define MCI_DGV_SET_MINIMUM_VIDEO_REFRESH_RATE   MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE
  632. #define MCI_DGV_SET_IMAGE_FILE_FORMAT            MCI_VID_SET_IMAGE_FILE_FORMAT
  633. #define MCI_DGV_SET_REF_INTERVAL                 MCI_VID_SET_REF_INTERVAL
  634. #define MCI_DGV_SET_MAXDATARATE                  MCI_VID_SET_MAXDATARATE
  635. #define MCI_DGV_SET_VIDEO_FILE_FORMAT            MCI_VID_SET_VIDEO_FILE_FORMAT
  636. #define MCI_DGV_STATUS_HWND                      MCI_VID_STATUS_HWND
  637. #define MCI_DGV_STATUS_AUDIO_COMPRESSION         MCI_VID_STATUS_AUDIO_COMPRESSION
  638. #define MCI_DGV_STATUS_VIDEO_COMPRESSION         MCI_VID_STATUS_VIDEO_COMPRESSION
  639. #define MCI_DGV_STATUS_IMAGE_COMPRESSION         MCI_VID_STATUS_IMAGE_COMPRESSION
  640. #define MCI_DGV_STATUS_AUDIO_QUALITY             MCI_VID_STATUS_AUDIO_QUALITY
  641. #define MCI_DGV_STATUS_VIDEO_QUALITY             MCI_VID_STATUS_VIDEO_QUALITY
  642. #define MCI_DGV_STATUS_IMAGE_QUALITY             MCI_VID_STATUS_IMAGE_QUALITY
  643. #define MCI_DGV_STATUS_IMAGE_BITSPERPEL          MCI_VID_STATUS_IMAGE_BITSPERPEL
  644. #define MCI_DGV_STATUS_IMAGE_PELFORMAT           MCI_VID_STATUS_IMAGE_PELFORMAT
  645. #define MCI_DGV_STATUS_FORWARD                   MCI_VID_STATUS_FORWARD
  646. #define MCI_DGV_STATUS_NORMAL_RATE               MCI_VID_STATUS_NORMAL_RATE
  647. #define MCI_DGV_STATUS_VIDEO_X_EXTENT            MCI_VID_STATUS_VIDEO_X_EXTENT
  648. #define MCI_DGV_STATUS_VIDEO_Y_EXTENT            MCI_VID_STATUS_VIDEO_Y_EXTENT
  649. #define MCI_DGV_STATUS_IMAGE_X_EXTENT            MCI_VID_STATUS_IMAGE_X_EXTENT
  650. #define MCI_DGV_STATUS_IMAGE_Y_EXTENT            MCI_VID_STATUS_IMAGE_Y_EXTENT
  651. #define MCI_DGV_STATUS_BRIGHTNESS                MCI_VID_STATUS_BRIGHTNESS
  652. #define MCI_DGV_STATUS_CONTRAST                  MCI_VID_STATUS_CONTRAST
  653. #define MCI_DGV_STATUS_HUE                       MCI_VID_STATUS_HUE
  654. #define MCI_DGV_STATUS_SATURATION                MCI_VID_STATUS_SATURATION
  655. #define MCI_DGV_STATUS_SPEED                     MCI_VID_STATUS_SPEED
  656. #define MCI_DGV_STATUS_SHARPNESS                 MCI_VID_STATUS_SHARPNESS
  657. #define MCI_DGV_STATUS_REF_INTERVAL              MCI_VID_STATUS_REF_INTERVAL
  658. #define MCI_DGV_STATUS_MAXDATARATE               MCI_VID_STATUS_MAXDATARATE
  659. #define MCI_DGV_STATUS_VIDEO_FILE_FORMAT         MCI_VID_STATUS_VIDEO_FILE_FORMAT
  660. #define MCI_DGV_WHERE_DESTINATION                MCI_VID_WHERE_DESTINATION
  661. #define MCI_DGV_WHERE_SOURCE                     MCI_VID_WHERE_SOURCE
  662. #define MCI_DGV_WHERE_WINDOW                     MCI_VID_WHERE_WINDOW
  663. #define MCI_DGV_WINDOW_HWND                      MCI_VID_WINDOW_HWND
  664. #define MCI_DGV_WINDOW_STATE                     MCI_VID_WINDOW_STATE
  665. #define MCI_DGV_WINDOW_TEXT                      MCI_VID_WINDOW_TEXT
  666. #define MCI_DGV_WINDOW_DEFAULT                   MCI_VID_WINDOW_DEFAULT
  667.  
  668. #define MCI_OVLY_FREEZE_RECT                     0x00000100L
  669. #define MCI_OVLY_FREEZE_RECT_OUTSIDE             0x00000200L
  670. #define MCI_OVLY_UNFREEZE_RECT                   0x00000100L
  671. #define MCI_OVLY_UNFREEZE_RECT_OUTSIDE           0x00000200L
  672. #define MCI_OVLY_INFO_TEXT                       0x00010000L
  673. #define MCI_OVLY_OPEN_PARENT                     MCI_VID_OPEN_PARENT
  674. #define MCI_OVLY_PUT_RECT                        MCI_VID_PUT_RECT
  675. #define MCI_OVLY_PUT_DESTINATION                 MCI_VID_PUT_DESTINATION
  676. #define MCI_OVLY_PUT_SOURCE                      MCI_VID_PUT_SOURCE
  677. #define MCI_OVLY_PUT_WINDOW_MOVE                 MCI_VID_PUT_WINDOW_MOVE
  678. #define MCI_OVLY_PUT_WINDOW_SIZE                 MCI_VID_PUT_WINDOW_SIZE
  679. #define MCI_OVLY_SET_IMAGE_COMPRESSION           MCI_VID_SET_IMAGE_COMPRESSION
  680. #define MCI_OVLY_SET_IMAGE_BITSPERPEL            MCI_VID_SET_IMAGE_BITSPERPEL
  681. #define MCI_OVLY_SET_IMAGE_PELFORMAT             MCI_VID_SET_IMAGE_PELFORMAT
  682. #define MCI_OVLY_SET_BRIGHTNESS                  MCI_VID_SET_BRIGHTNESS
  683. #define MCI_OVLY_SET_CONTRAST                    MCI_VID_SET_CONTRAST
  684. #define MCI_OVLY_SET_HUE                         MCI_VID_SET_HUE
  685. #define MCI_OVLY_SET_SATURATION                  MCI_VID_SET_SATURATION
  686. #define MCI_OVLY_SET_SHARPNESS                   MCI_VID_SET_SHARPNESS
  687. #define MCI_OVLY_SET_GREYSCALE                   MCI_VID_SET_GREYSCALE
  688. #define MCI_OVLY_SET_IMAGE_QUALITY               MCI_VID_SET_IMAGE_QUALITY
  689. #define MCI_OVLY_SET_IMAGE_COMPRESSION_METHOD    MCI_VID_SET_IMAGE_COMPRESSION_METHOD
  690. #define MCI_OVLY_SET_MINIMUM_VIDEO_REFRESH_RATE  MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE
  691. #define MCI_OVLY_SET_IMAGE_FILE_FORMAT           MCI_VID_SET_IMAGE_FILE_FORMAT
  692. #define MCI_OVLY_STATUS_HWND                     MCI_VID_STATUS_HWND
  693. #define MCI_OVLY_STATUS_IMAGE_COMPRESSION        MCI_VID_STATUS_IMAGE_COMPRESSION
  694. #define MCI_OVLY_STATUS_IMAGE_BITSPERPEL         MCI_VID_STATUS_IMAGE_BITSPERPEL
  695. #define MCI_OVLY_STATUS_IMAGE_PELFORMAT          MCI_VID_STATUS_IMAGE_PELFORMAT
  696. #define MCI_OVLY_STATUS_IMAGE_X_EXTENT           MCI_VID_STATUS_IMAGE_X_EXTENT
  697. #define MCI_OVLY_STATUS_IMAGE_Y_EXTENT           MCI_VID_STATUS_IMAGE_Y_EXTENT
  698. #define MCI_OVLY_STATUS_BRIGHTNESS               MCI_VID_STATUS_BRIGHTNESS
  699. #define MCI_OVLY_STATUS_CONTRAST                 MCI_VID_STATUS_CONTRAST
  700. #define MCI_OVLY_STATUS_HUE                      MCI_VID_STATUS_HUE
  701. #define MCI_OVLY_STATUS_SATURATION               MCI_VID_STATUS_SATURATION
  702. #define MCI_OVLY_STATUS_GREYSCALE                MCI_VID_STATUS_GREYSCALE
  703. #define MCI_OVLY_STATUS_IMAGE_QUALITY            MCI_VID_STATUS_IMAGE_QUALITY
  704. #define MCI_OVLY_STATUS_SHARPNESS                MCI_VID_STATUS_SHARPNESS
  705. #define MCI_OVLY_STATUS_IMAGE_FILE_FORMAT        MCI_VID_STATUS_IMAGE_FILE_FORMAT
  706. #define MCI_OVLY_STATUS_TRANSPARENT_TYPE         MCI_VID_STATUS_TRANSPARENT_TYPE
  707. #define MCI_OVLY_STATUS_TRANSPARENT_COLOR        MCI_VID_STATUS_TRANSPARENT_COLOR
  708. #define MCI_OVLY_WHERE_DESTINATION               MCI_VID_WHERE_DESTINATION
  709. #define MCI_OVLY_WHERE_SOURCE                    MCI_VID_WHERE_SOURCE
  710. #define MCI_OVLY_WHERE_WINDOW                    MCI_VID_WHERE_WINDOW
  711. #define MCI_OVLY_WINDOW_HWND                     MCI_VID_WINDOW_HWND
  712. #define MCI_OVLY_WINDOW_STATE                    MCI_VID_WINDOW_STATE
  713. #define MCI_OVLY_WINDOW_TEXT                     MCI_VID_WINDOW_TEXT
  714. #define MCI_OVLY_WINDOW_DEFAULT                  MCI_VID_WINDOW_DEFAULT
  715.  
  716.  
  717. /**************************/
  718. /* get device capabilites */
  719. /**************************/
  720.  
  721. #define MCI_GETDEVCAPS_MESSAGE                0x00000100L
  722. #define MCI_GETDEVCAPS_ITEM                   0x00000200L
  723. #define MCI_GETDEVCAPS_EXTENDED               0x00000400L
  724.                                               
  725. #define MCI_GETDEVCAPS_CAN_EJECT              0x00000001L
  726. #define MCI_GETDEVCAPS_CAN_LOCKEJECT          0x00000002L
  727. #define MCI_GETDEVCAPS_CAN_PLAY               0x00000003L
  728. #define MCI_GETDEVCAPS_CAN_PROCESS_INTERNAL   0x00000004L
  729. #define MCI_GETDEVCAPS_CAN_RECORD             0x00000005L
  730. #define MCI_GETDEVCAPS_CAN_RECORD_INSERT      0x00000006L
  731. #define MCI_GETDEVCAPS_CAN_SAVE               0x00000007L
  732. #define MCI_GETDEVCAPS_CAN_SETVOLUME          0x00000008L
  733. #define MCI_GETDEVCAPS_CAN_STREAM             0x00000009L
  734. #define MCI_GETDEVCAPS_DEVICE_TYPE            0x0000000AL
  735. #define MCI_GETDEVCAPS_HAS_AUDIO              0x0000000BL
  736. #define MCI_GETDEVCAPS_HAS_VIDEO              0x0000000CL
  737. #define MCI_GETDEVCAPS_PREROLL_TIME           0x0000000DL
  738. #define MCI_GETDEVCAPS_PREROLL_TYPE           0x0000000EL
  739. #define MCI_GETDEVCAPS_USES_FILES             0x0000000FL
  740. #define MCI_GETDEVCAPS_HAS_IMAGE              0x00000010L
  741. #define MCI_GETDEVCAPS_WAVE_FORMAT            0x00000011L
  742.  
  743. #define MCI_VID_GETDEVCAPS_CAN_STRETCH        MCI_VID_ITEM_BASE
  744. #define MCI_VID_GETDEVCAPS_CAN_DISTORT       (MCI_VID_ITEM_BASE+1)
  745. #define MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT    (MCI_VID_ITEM_BASE+2)
  746. #define MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT    (MCI_VID_ITEM_BASE+3)
  747. #define MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT    (MCI_VID_ITEM_BASE+4)
  748. #define MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT    (MCI_VID_ITEM_BASE+5)
  749. #define MCI_VID_GETDEVCAPS_MAX_WINDOWS       (MCI_VID_ITEM_BASE+6)
  750. #define MCI_VID_GETDEVCAPS_CAN_FREEZE        (MCI_VID_ITEM_BASE+7)
  751. #define MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS  (MCI_VID_ITEM_BASE+8)
  752. #define MCI_VID_GETDEVCAPS_CAN_REVERSE       (MCI_VID_ITEM_BASE+9)
  753. #define MCI_VID_GETDEVCAPS_FAST_RATE         (MCI_VID_ITEM_BASE+10)
  754. #define MCI_VID_GETDEVCAPS_SLOW_RATE         (MCI_VID_ITEM_BASE+11)
  755. #define MCI_VID_GETDEVCAPS_NORMAL_RATE       (MCI_VID_ITEM_BASE+12)
  756. #define MCI_VID_GETDEVCAPS_MINIMUM_RATE      (MCI_VID_ITEM_BASE+13)
  757. #define MCI_VID_GETDEVCAPS_MAXIMUM_RATE      (MCI_VID_ITEM_BASE+14)
  758.  
  759. #define MCI_VD_GETDEVCAPS_CLV                 0x00000400L
  760. #define MCI_VD_GETDEVCAPS_CAV                 0x00000800L
  761. #define MCI_VD_GETDEVCAPS_CAN_REVERSE         MCI_VID_GETDEVCAPS_CAN_REVERSE
  762. #define MCI_VD_GETDEVCAPS_FAST_RATE           MCI_VID_GETDEVCAPS_FAST_RATE
  763. #define MCI_VD_GETDEVCAPS_SLOW_RATE           MCI_VID_GETDEVCAPS_SLOW_RATE
  764. #define MCI_VD_GETDEVCAPS_NORMAL_RATE         MCI_VID_GETDEVCAPS_NORMAL_RATE
  765. #define MCI_VD_GETDEVCAPS_MINIMUM_RATE        MCI_VID_GETDEVCAPS_MINIMUM_RATE
  766. #define MCI_VD_GETDEVCAPS_MAXIMUM_RATE        MCI_VID_GETDEVCAPS_MAXIMUM_RATE
  767.                                               
  768. #define MCI_DGV_GETDEVCAPS_CAN_STRETCH        MCI_VID_GETDEVCAPS_CAN_STRETCH
  769. #define MCI_DGV_GETDEVCAPS_CAN_DISTORT        MCI_VID_GETDEVCAPS_CAN_DISTORT
  770. #define MCI_DGV_GETDEVCAPS_VIDEO_X_EXTENT     MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT
  771. #define MCI_DGV_GETDEVCAPS_VIDEO_Y_EXTENT     MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT
  772. #define MCI_DGV_GETDEVCAPS_IMAGE_X_EXTENT     MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT
  773. #define MCI_DGV_GETDEVCAPS_IMAGE_Y_EXTENT     MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT
  774. #define MCI_DGV_GETDEVCAPS_MAX_WINDOWS        MCI_VID_GETDEVCAPS_MAX_WINDOWS
  775. #define MCI_DGV_GETDEVCAPS_OVERLAY_GRAPHICS   MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS
  776. #define MCI_DGV_GETDEVCAPS_CAN_REVERSE        MCI_VID_GETDEVCAPS_CAN_REVERSE
  777. #define MCI_DGV_GETDEVCAPS_FAST_RATE          MCI_VID_GETDEVCAPS_FAST_RATE
  778. #define MCI_DGV_GETDEVCAPS_SLOW_RATE          MCI_VID_GETDEVCAPS_SLOW_RATE
  779. #define MCI_DGV_GETDEVCAPS_NORMAL_RATE        MCI_VID_GETDEVCAPS_NORMAL_RATE
  780. #define MCI_DGV_GETDEVCAPS_MINIMUM_RATE       MCI_VID_GETDEVCAPS_MINIMUM_RATE
  781. #define MCI_DGV_GETDEVCAPS_MAXIMUM_RATE       MCI_VID_GETDEVCAPS_MAXIMUM_RATE
  782.                                               
  783. #define MCI_OVLY_GETDEVCAPS_CAN_STRETCH       MCI_VID_GETDEVCAPS_CAN_STRETCH
  784. #define MCI_OVLY_GETDEVCAPS_CAN_DISTORT       MCI_VID_GETDEVCAPS_CAN_DISTORT
  785. #define MCI_OVLY_GETDEVCAPS_VIDEO_X_EXTENT    MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT
  786. #define MCI_OVLY_GETDEVCAPS_VIDEO_Y_EXTENT    MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT
  787. #define MCI_OVLY_GETDEVCAPS_IMAGE_X_EXTENT    MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT
  788. #define MCI_OVLY_GETDEVCAPS_IMAGE_Y_EXTENT    MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT
  789. #define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS       MCI_VID_GETDEVCAPS_MAX_WINDOWS
  790. #define MCI_OVLY_GETDEVCAPS_CAN_FREEZE        MCI_VID_GETDEVCAPS_CAN_FREEZE
  791. #define MCI_OVLY_GETDEVCAPS_OVERLAY_GRAPHICS  MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS
  792.  
  793.  
  794. /*******************/
  795. /* connector stuff */
  796. /*******************/
  797.  
  798. #define MCI_MIDI_STREAM_CONNECTOR   0x00000001L
  799. #define MCI_CD_STREAM_CONNECTOR     0x00000002L
  800. #define MCI_WAVE_STREAM_CONNECTOR   0x00000003L
  801. #define MCI_AMP_STREAM_CONNECTOR    0x00000004L
  802. #define MCI_XA_STREAM_CONNECTOR     0x00000005L
  803. #define MCI_HEADPHONES_CONNECTOR    0x00000006L
  804. #define MCI_SPEAKERS_CONNECTOR      0x00000007L
  805. #define MCI_MICROPHONE_CONNECTOR    0x00000008L
  806. #define MCI_LINE_IN_CONNECTOR       0x00000009L
  807. #define MCI_LINE_OUT_CONNECTOR      0x0000000aL
  808. #define MCI_VIDEO_IN_CONNECTOR      0x0000000bL
  809. #define MCI_VIDEO_OUT_CONNECTOR     0x0000000cL
  810. #define MCI_PHONE_SET_CONNECTOR     0x0000000dL
  811. #define MCI_PHONE_LINE_CONNECTOR    0x0000000eL
  812. #define MCI_AUDIO_IN_CONNECTOR      0x0000000fL
  813. #define MCI_AUDIO_OUT_CONNECTOR     0x00000010L
  814. #define MCI_UNIVERSAL_CONNECTOR     0x00000011L
  815.  
  816. #define MCI_ENABLE_CONNECTOR        0x00000100L
  817. #define MCI_DISABLE_CONNECTOR       0x00000200L
  818. #define MCI_QUERY_CONNECTOR_STATUS  0x00000400L
  819. #define MCI_CONNECTOR_TYPE          0x00000800L
  820. #define MCI_CONNECTOR_INDEX         0x00001000L
  821. #define MCI_TO_CONNECTOR_INDEX      0x00002000L
  822. #define MCI_TO_CONNECTOR_TYPE       0x00004000L
  823. #define MCI_QUERY_CONNECTION        0x00008000L
  824. #define MCI_MAKE_CONNECTION         0x00010000L
  825. #define MCI_BREAK_CONNECTION        0x00020000L
  826. #define MCI_ENUMERATE_CONNECTORS    0x00040000L
  827. #define MCI_QUERY_CONNECTOR_TYPE    0x00080000L
  828. #define MCI_QUERY_VALID_CONNECTION  0x00100000L
  829. #define MCI_CONNECTOR_ALIAS         0x00200000L
  830.  
  831.  
  832. /********/
  833. /* misc */
  834. /********/
  835.  
  836. #define MIDI_MAPPER      0x20000000L
  837. #define MCI_MIDI_MAPPER  MIDI_MAPPER
  838.  
  839. #define MM_MCINOTIFY           0x0500
  840. #define MM_MCIPASSDEVICE       0x0501
  841. #define MM_MCIPOSITIONCHANGE   0x0502
  842. #define MM_MCICUEPOINT         0x0503
  843. #define MM_MCIPLAYLISTMESSAGE  0x0504
  844. #define MM_MCIEVENT            0x0505
  845. #define MM_MCISYNCH            0x0506
  846.  
  847. #define MSV_CLOSEDCAPTION    0
  848. #define MSV_MASTERVOLUME     1
  849. #define MSV_HEADPHONES       2
  850. #define MSV_SPEAKERS         3
  851. #define MSV_WORKPATH         4
  852. #define MSV_SYSQOSVALUE      5
  853. #define MSV_SYSQOSERRORFLAG  6
  854. #define MSV_MAX              7
  855.  
  856. #define HDCT ULONG
  857. #define RECT ULONG
  858.  
  859.  
  860. /************************/
  861. /* playlist definitions */
  862. /************************/
  863.  
  864. #define DATA_OPERATION      0
  865. #define BRANCH_OPERATION    1
  866. #define LOOP_OPERATION      2
  867. #define CALL_OPERATION      3
  868. #define RETURN_OPERATION    4
  869. #define EXIT_OPERATION      5
  870. #define NOP_OPERATION       6
  871. #define MESSAGE_OPERATION   7
  872. #define CUEPOINT_OPERATION  8
  873.  
  874.  
  875. /************/
  876. /* typedefs */
  877. /************/
  878.  
  879. typedef struct _CONNECT {
  880.     USHORT usConnectType;
  881.     CHAR   szToInstallName[MAX_DEVICE_NAME];
  882.     USHORT usToConnectIndex;
  883. } CONNECT;
  884.  
  885. typedef struct _MCI_AMP_OPEN_PARMS {
  886.     HWND   hwndCallback;
  887.     USHORT usDeviceID;
  888.     USHORT usReserved0;
  889.     PSZ    pszDeviceType;
  890.     PSZ    pszElementName;
  891.     PSZ    pszAlias;
  892.     PVOID  pDevDataPtr;
  893. } MCI_AMP_OPEN_PARMS;
  894.  
  895. typedef struct _MCI_CAPTURE_PARMS {
  896.     HWND  hwndCallback;
  897.     RECTL rect;
  898. } MCI_CAPTURE_PARMS;
  899.  
  900. typedef struct _MCI_CDXA_SET_PARMS {
  901.     HWND  hwndCallback;
  902.     ULONG ulTimeFormat;
  903.     ULONG ulSpeedFormat;
  904.     ULONG ulAudio;
  905.     ULONG ulLevel;
  906.     ULONG ulOver;
  907.     ULONG ulItem;
  908.     ULONG ulValue;
  909.     ULONG ulChannel;
  910.     PVOID pPlayList;
  911.     ULONG ulPlayListSize;
  912. } MCI_CDXA_SET_PARMS;
  913.  
  914. typedef struct _MCI_CDXA_STATUS_PARMS {
  915.     HWND  hwndCallback;
  916.     ULONG ulReturn;
  917.     ULONG ulItem;
  918.     ULONG ulValue;
  919.     ULONG ulChannel;
  920. } MCI_CDXA_STATUS_PARMS;
  921.  
  922. typedef struct _MCI_CONNECTION_PARMS {
  923.     HWND   hwndCallback;
  924.     ULONG  ulConnectorType;
  925.     ULONG  ulConnectorIndex;
  926.     PSZ    pszAlias;
  927.     USHORT usToDeviceID;
  928.     USHORT usReserved0;
  929.     ULONG  ulReserved1;
  930.     ULONG  ulReserved2;
  931. } MCI_CONNECTION_PARMS;
  932.  
  933. typedef struct _MCI_CONNECTORINFO_PARMS {
  934.     HWND  hwndCallback;
  935.     ULONG ulReturn;
  936.     ULONG ulDeviceTypeID;
  937.     ULONG ulConnectorType;
  938.     ULONG ulConnectorIndex;
  939.     ULONG ulToConnectorType;
  940. } MCI_CONNECTORINFO_PARMS;
  941.  
  942. typedef struct _MCI_CONNECTOR_PARMS {
  943.     HWND  hwndCallback;
  944.     ULONG ulReturn;
  945.     ULONG ulConnectorType;
  946.     ULONG ulConnectorIndex;
  947. } MCI_CONNECTOR_PARMS;
  948.  
  949. typedef struct _MCI_CUEPOINT_PARMS {
  950.     HWND   hwndCallback;
  951.     ULONG  ulCuepoint;
  952.     USHORT usUserParm;
  953.     USHORT usReserved0;
  954. } MCI_CUEPOINT_PARMS;
  955.  
  956. typedef struct _MCI_DEFAULT_CONNECTION_PARMS {
  957.     HWND  hwndCallback;
  958.     PSZ   pszDevice;
  959.     ULONG ulConnectorType;
  960.     ULONG ulConnectorIndex;
  961.     PSZ   pszToDevice;
  962.     ULONG ulToConnectorType;
  963.     ULONG ulToConnectorIndex;
  964. } MCI_DEFAULT_CONNECTION_PARMS;
  965.  
  966. typedef struct _MCI_DEVICESETTINGS_PARMS {
  967.     HWND   hwndCallback;
  968.     HWND   hwndNotebook;
  969.     USHORT usDeviceType;
  970.     PSZ    pszDeviceName;
  971. } MCI_DEVICESETTINGS_PARMS;
  972.  
  973. typedef struct _MCI_DGV_PLAY_PARMS {
  974.     HWND  hwndCallback;
  975.     ULONG ulFrom;
  976.     ULONG ulTo;
  977.     ULONG ulSpeed;
  978. } MCI_DGV_PLAY_PARMS;
  979.  
  980. typedef struct _MCI_EDIT_PARMS {
  981.     HWND   hwndCallback;
  982.     ULONG  ulStructLen;
  983.     ULONG  ulFrom;
  984.     ULONG  ulTo;
  985.     PVOID  pBuff;
  986.     ULONG  ulBufLen;
  987.     PVOID  pHeader;
  988. } MCI_EDIT_PARMS;
  989.  
  990. typedef struct _MCI_ESCAPE_PARMS {
  991.     HWND hwndCallback;
  992.     PSZ  pszCommand;
  993. } MCI_ESCAPE_PARMS;
  994.  
  995. typedef struct _MCI_GENERIC_PARMS {
  996.     HWND hwndCallback;
  997. } MCI_GENERIC_PARMS;
  998.  
  999. typedef struct _MCI_GETDEVCAPS_PARMS {
  1000.     HWND   hwndCallback;
  1001.     ULONG  ulReturn;
  1002.     ULONG  ulItem;
  1003.     USHORT usMessage;
  1004.     USHORT usReserved0;
  1005. } MCI_GETDEVCAPS_PARMS;
  1006.  
  1007. typedef struct _MCI_GROUP_PARMS {
  1008.     HWND   hwndCallback;
  1009.     USHORT usGroupID;
  1010.     USHORT usReserved0;
  1011.     ULONG  ulStructLength;
  1012.     USHORT usMasterID;
  1013.     USHORT usReserved1;
  1014.     PSZ    pszGroupAlias;
  1015.     ULONG  ulNumDevices;
  1016.     PULONG paulDeviceID;
  1017. } MCI_GROUP_PARMS;
  1018.  
  1019. typedef struct _MCI_IMAGE_PARMS {
  1020.     HWND   hwndCallback;
  1021.     ULONG  ulPelFormat;
  1022.     USHORT usBitCount;
  1023.     USHORT usReserved0;
  1024.     ULONG  ulImageCompression;
  1025.     RECTL  rect;
  1026.     PVOID  pPelBuffer;
  1027.     ULONG  ulPelBufferHeight;
  1028.     ULONG  ulPelBufferWidth;
  1029.     ULONG  ulBufLen;
  1030. } MCI_IMAGE_PARMS;
  1031.  
  1032. typedef struct _MCI_INFO_PARMS {
  1033.     HWND  hwndCallback;
  1034.     PSZ   pszReturn;
  1035.     ULONG ulRetSize;
  1036. } MCI_INFO_PARMS;
  1037.  
  1038. typedef struct _MCI_LOAD_PARMS {
  1039.     HWND hwndCallback;
  1040.     PSZ  pszElementName;
  1041. } MCI_LOAD_PARMS;
  1042.  
  1043. typedef struct _MCI_MASTERAUDIO_PARMS {
  1044.     HWND  hwndDummyCallback;
  1045.     ULONG ulReturn;
  1046.     ULONG ulMasterVolume;
  1047. } MCI_MASTERAUDIO_PARMS;
  1048.  
  1049. typedef struct _MCI_OPEN_PARMS {
  1050.     HWND   hwndCallback;
  1051.     USHORT usDeviceID;
  1052.     USHORT usReserved0;
  1053.     PSZ    pszDeviceType;
  1054.     PSZ    pszElementName;
  1055.     PSZ    pszAlias;
  1056. } MCI_OPEN_PARMS;
  1057.  
  1058. typedef struct _MCI_PALETTE_PARMS {
  1059.     HWND   hwndCallback;
  1060.     USHORT usRegisteredMap;
  1061.     USHORT usReserved0;
  1062.     ULONG  ulPalEntries;
  1063.     PVOID  pPalette;
  1064. } MCI_PALETTE_PARMS;
  1065.  
  1066. typedef struct _MCI_PLAY_PARMS {
  1067.     HWND  hwndCallback;
  1068.     ULONG ulFrom;
  1069.     ULONG ulTo;
  1070. } MCI_PLAY_PARMS;
  1071.  
  1072. typedef struct _MCI_POSITION_PARMS {
  1073.     HWND   hwndCallback;
  1074.     ULONG  ulUnits;
  1075.     USHORT usUserParm;
  1076.     USHORT Reserved0;
  1077.     ULONG  Reserved1;
  1078. } MCI_POSITION_PARMS;
  1079.  
  1080. typedef struct _MCI_RECORD_PARMS {
  1081.     HWND  hwndCallback;
  1082.     ULONG ulFrom;
  1083.     ULONG ulTo;
  1084. } MCI_RECORD_PARMS;
  1085.  
  1086. typedef struct _MCI_RESTORE_PARMS {
  1087.     HWND  hwndCallback;
  1088.     RECTL SrcRect;
  1089.     RECTL DestRect;
  1090. } MCI_RESTORE_PARMS;
  1091.  
  1092. typedef struct _MCI_SAVE_PARMS {
  1093.     HWND hwndCallback;
  1094.     PSZ  pszFileName;
  1095. } MCI_SAVE_PARMS;
  1096.  
  1097. typedef struct _MCI_SEEK_PARMS {
  1098.     HWND  hwndCallback;
  1099.     ULONG ulTo;        /* SEEK_SET, SEEK_CUR, SEEK_END are defined in os2.h! */
  1100. } MCI_SEEK_PARMS;
  1101.  
  1102. typedef struct _MCI_SET_PARMS {
  1103.     HWND  hwndCallback;
  1104.     ULONG ulTimeFormat;
  1105.     ULONG ulSpeedFormat;
  1106.     ULONG ulAudio;
  1107.     ULONG ulLevel;
  1108.     ULONG ulOver;
  1109.     ULONG ulItem;
  1110.     ULONG ulValue;
  1111. } MCI_SET_PARMS;
  1112.  
  1113. typedef struct _MCI_SEQ_SET_PARMS {
  1114.     HWND  hwndCallback;
  1115.     ULONG ulTimeFormat;
  1116.     ULONG ulSpeedFormat;
  1117.     ULONG ulAudio;
  1118.     ULONG ulLevel;
  1119.     ULONG ulOver;
  1120.     ULONG ulItem;
  1121.     ULONG ulValue;
  1122.     ULONG ulTempo;
  1123.     ULONG ulPort;
  1124.     ULONG ulSlave;
  1125.     ULONG ulMaster;
  1126.     ULONG ulOffset;
  1127. } MCI_SEQ_SET_PARMS;
  1128.  
  1129. typedef struct _MCI_STATUS_PARMS {
  1130.     HWND  hwndCallback;
  1131.     ULONG ulReturn;
  1132.     ULONG ulItem;
  1133.     ULONG ulValue;
  1134. } MCI_STATUS_PARMS;
  1135.  
  1136. typedef struct _MCI_STEP_PARMS {
  1137.     HWND  hwndCallback;
  1138.     ULONG ulStep;
  1139. } MCI_STEP_PARMS;
  1140.  
  1141. typedef struct _MCI_SYNC_OFFSET_PARMS {
  1142.     HWND  hwndCallback;
  1143.     ULONG ulOffset;
  1144. } MCI_SYNC_OFFSET_PARMS;
  1145.  
  1146. typedef struct _MCI_SYSINFO_ALIAS {
  1147.     CHAR szInstallName[MAX_DEVICE_NAME];
  1148.     CHAR szAliasName[MAX_ALIAS_NAME];
  1149. } MCI_SYSINFO_ALIAS;
  1150.  
  1151. typedef struct _MCI_SYSINFO_CONPARAMS {
  1152.     CHAR    szInstallName[MAX_DEVICE_NAME];
  1153.     USHORT  usNumConnectors;
  1154.     CONNECT ConnectorList[MAX_CONNECTORS];
  1155. } MCI_SYSINFO_CONPARAMS;
  1156.  
  1157. typedef struct _MCI_SYSINFO_DEFAULTDEVICE {
  1158.     CHAR   szInstallName[MAX_DEVICE_NAME];
  1159.     USHORT usDeviceType;
  1160. } MCI_SYSINFO_DEFAULTDEVICE;
  1161.  
  1162. typedef struct _MCI_SYSINFO_DEVPARAMS {
  1163.     CHAR szInstallName[MAX_DEVICE_NAME];
  1164.     CHAR szDevParams[MAX_DEV_PARAMS];
  1165. } MCI_SYSINFO_DEVPARAMS;
  1166.  
  1167. typedef struct _MCI_SYSINFO_EXTENSION {
  1168.     CHAR   szInstallName[MAX_DEVICE_NAME];
  1169.     USHORT usNumExtensions;
  1170.     CHAR   szExtension[MAX_EXTENSIONS][MAX_EXTENSION_NAME];
  1171. } MCI_SYSINFO_EXTENSION;
  1172.  
  1173. typedef struct _MCI_SYSINFO_LOGDEVICE {
  1174.     CHAR   szInstallName[MAX_DEVICE_NAME];
  1175.     USHORT usDeviceType;
  1176.     ULONG  ulDeviceFlag;
  1177.     CHAR   szVersionNumber[MAX_VERSION_NUMBER];
  1178.     CHAR   szProductInfo[MAX_PRODINFO];
  1179.     CHAR   szMCDDriver[MAX_DEVICE_NAME];
  1180.     CHAR   szVSDDriver[MAX_DEVICE_NAME];
  1181.     CHAR   szPDDName[MAX_PDD_NAME];
  1182.     CHAR   szMCDTable[MAX_DEVICE_NAME];
  1183.     CHAR   szVSDTable[MAX_DEVICE_NAME];
  1184.     USHORT usShareType;
  1185.     CHAR   szResourceName[MAX_DEVICE_NAME];
  1186.     USHORT usResourceUnits;
  1187.     USHORT usResourceClasses;
  1188.     USHORT ausClassArray[MAX_CLASSES];
  1189.     USHORT ausValidClassArray[MAX_CLASSES][MAX_CLASSES];
  1190. } MCI_SYSINFO_LOGDEVICE;
  1191.  
  1192. typedef struct _MCI_SYSINFO_PARMS {
  1193.     HWND   hwndDummyCallback;
  1194.     PSZ    pszReturn;
  1195.     ULONG  ulRetSize;
  1196.     ULONG  ulNumber;
  1197.     USHORT usDeviceType;
  1198.     USHORT usReserved0;
  1199.     ULONG  ulItem;
  1200.     PVOID  pSysInfoParm;
  1201. } MCI_SYSINFO_PARMS;
  1202.  
  1203. typedef struct _MCI_SYSINFO_QUERY_NAME {
  1204.     CHAR   szInstallName[MAX_DEVICE_NAME];
  1205.     CHAR   szLogicalName[MAX_DEVICE_NAME];
  1206.     CHAR   szAliasName[MAX_ALIAS_NAME];
  1207.     USHORT usDeviceType;
  1208.     USHORT usDeviceOrd;
  1209. } MCI_SYSINFO_QUERY_NAME;
  1210.  
  1211. typedef struct _MCI_SYSINFO_TYPES {
  1212.     CHAR szInstallName[MAX_DEVICE_NAME];
  1213.     CHAR szTypes[MAX_TYPEBUFFER+1];
  1214. } MCI_SYSINFO_TYPES;
  1215.  
  1216. typedef struct _MCI_TOC_REC {
  1217.     BYTE   TrackNum;
  1218.     ULONG  ulStartAddr;
  1219.     ULONG  ulEndAddr;
  1220.     BYTE   Control;
  1221.     USHORT usCountry;
  1222.     ULONG  ulOwner;
  1223.     ULONG  ulSerialNum;
  1224. } MCI_TOC_REC;
  1225.  
  1226. typedef MCI_TOC_REC* PTOCREC;
  1227.  
  1228. typedef struct _MCI_TOC_PARMS {
  1229.     HWND    hwndCallback;
  1230.     PTOCREC pBuf;
  1231.     ULONG   ulBufSize;
  1232. } MCI_TOC_PARMS;
  1233.  
  1234.  
  1235. typedef struct _MCI_VD_PLAY_PARMS {
  1236.     HWND  hwndCallback;
  1237.     ULONG ulFrom;
  1238.     ULONG ulTo;
  1239.     ULONG ulFactor;
  1240. } MCI_VD_PLAY_PARMS;
  1241.  
  1242. typedef struct _MCI_VD_SET_PARMS {
  1243.     HWND  hwndCallback;
  1244.     ULONG ulTimeFormat;
  1245.     ULONG ulSpeedFormat;
  1246.     ULONG ulAudio;
  1247.     ULONG ulLevel;
  1248.     ULONG ulOver;
  1249.     ULONG ulItem;
  1250.     ULONG ulValue;
  1251.     ULONG ulChannel;
  1252. } MCI_VD_SET_PARMS;
  1253.  
  1254. typedef struct _MCI_VID_OPEN_PARMS{
  1255.     HWND   hwndCallback;
  1256.     USHORT usDeviceID;
  1257.     USHORT usReserved0;
  1258.     PSZ    pszDeviceType;
  1259.     PSZ    pszElementName;
  1260.     PSZ    pszAlias;
  1261.     HWND   hwndParent;
  1262. } MCI_VID_OPEN_PARMS;
  1263.  
  1264. typedef struct _MCI_VID_RECT_PARMS {
  1265.     HWND  hwndCallback;
  1266.     RECTL rc;
  1267. } MCI_VID_RECT_PARMS;
  1268.  
  1269. typedef struct _MCI_VID_WINDOW_PARMS {
  1270.     HWND   hwndCallback;
  1271.     HWND   hwndDest;
  1272.     USHORT usCmdShow;
  1273.     USHORT usReserved1;
  1274.     PSZ    pszText;
  1275.     PSZ    pszAlias;
  1276. } MCI_VID_WINDOW_PARMS;
  1277.  
  1278. typedef struct _MCI_WAVE_GETDEVCAPS_PARMS {
  1279.     HWND   hwndCallback;
  1280.     ULONG  ulReturn;
  1281.     ULONG  ulItem;
  1282.     USHORT usMessage;
  1283.     USHORT usReserved0;
  1284.     ULONG  ulLength;
  1285.     ULONG  ulBitsPerSample;
  1286.     ULONG  ulFormatTag;
  1287.     ULONG  ulSamplesPerSec;
  1288.     ULONG  ulChannels;
  1289.     ULONG  ulFormatMode;
  1290. } MCI_WAVE_GETDEVCAPS_PARMS;
  1291.  
  1292. typedef struct _MCI_WAVE_SET_PARMS {
  1293.     HWND   hwndCallback;
  1294.     ULONG  ulTimeFormat;
  1295.     ULONG  ulSpeedFormat;
  1296.     ULONG  ulAudio;
  1297.     ULONG  ulLevel;
  1298.     ULONG  ulOver;
  1299.     ULONG  ulItem;
  1300.     ULONG  ulValue;
  1301.     USHORT usInput;
  1302.     USHORT usReserved0;
  1303.     USHORT usOutput;
  1304.     USHORT usReserved1;
  1305.     USHORT usFormatTag;
  1306.     USHORT usReserved2;
  1307.     USHORT usChannels;
  1308.     USHORT usReserved3;
  1309.     ULONG  ulSamplesPerSec;
  1310.     ULONG  ulAvgBytesPerSec;
  1311.     USHORT usBlockAlign;
  1312.     USHORT usReserved4;
  1313.     USHORT usBitsPerSample;
  1314.     USHORT usReserved5;
  1315. } MCI_WAVE_SET_PARMS;
  1316.  
  1317. typedef struct _MCI_MIX_BUFFER {
  1318.     ULONG ulStructLength;
  1319.     PVOID pBuffer;
  1320.     ULONG ulBufferLength;
  1321.     ULONG ulFlags;
  1322.     ULONG ulUserParm;
  1323.     ULONG ulTime;
  1324.     ULONG ulReserved1;
  1325.     ULONG ulReserved2;
  1326. } MCI_MIX_BUFFER;
  1327.  
  1328. typedef MCI_MIX_BUFFER*               PMCI_MIX_BUFFER;
  1329.  
  1330. /*DART Callbacks*/
  1331. typedef LONG MIXERPROC(ULONG ulHandle, PMCI_MIX_BUFFER pBuffer, ULONG ulFlags);
  1332. typedef MIXERPROC *PMIXERPROC;
  1333. typedef LONG MIXEREVENT(ULONG ulStatus, PMCI_MIX_BUFFER pBuffer, ULONG ulFlags);
  1334. typedef MIXEREVENT *PMIXEREVENT;
  1335.  
  1336. /*DART structures*/
  1337. typedef struct _MCI_MIXSETUP_PARMS {
  1338.     HWND        hwndCallback;
  1339.     ULONG       ulBitsPerSample;
  1340.     ULONG       ulFormatTag;
  1341.     ULONG       ulSamplesPerSec;
  1342.     ULONG       ulChannels;
  1343.     ULONG       ulFormatMode;
  1344.     ULONG       ulDeviceType;
  1345.     ULONG       ulMixHandle;
  1346.     PMIXERPROC  pmixWrite;
  1347.     PMIXERPROC  pmixRead;
  1348.     PMIXEREVENT pmixEvent;
  1349.     PVOID       pExtendedInfo;
  1350.     ULONG       ulBufferSize;
  1351.     ULONG       ulNumBuffers;
  1352. } MCI_MIXSETUP_PARMS;    
  1353.  
  1354. typedef struct _MCI_BUFFER_PARMS {
  1355.     HWND  hwndCallback;
  1356.     ULONG ulStructLength;
  1357.     ULONG ulNumBuffers;
  1358.     ULONG ulBufferSize;
  1359.     ULONG ulMinToStart;
  1360.     ULONG ulSrcStart;
  1361.     ULONG ulTgtStart;
  1362.     PVOID pBufList;
  1363. } MCI_BUFFER_PARMS;
  1364.  
  1365. typedef CONNECT*                      PCONNECT;
  1366. typedef MCI_SET_PARMS                 MCI_AMP_SET_PARMS;
  1367. typedef MCI_VID_OPEN_PARMS            MCI_DGV_OPEN_PARMS;
  1368. typedef MCI_VID_RECT_PARMS            MCI_DGV_RECT_PARMS;
  1369. typedef MCI_SET_PARMS                 MCI_DGV_SET_PARMS;
  1370. typedef MCI_VID_WINDOW_PARMS          MCI_DGV_WINDOW_PARMS;
  1371. typedef MCI_VID_OPEN_PARMS            MCI_OVLY_OPEN_PARMS;
  1372. typedef MCI_VID_RECT_PARMS            MCI_OVLY_RECT_PARMS;
  1373. typedef MCI_SET_PARMS                 MCI_OVLY_SET_PARMS;
  1374. typedef MCI_VID_WINDOW_PARMS          MCI_OVLY_WINDOW_PARMS;
  1375. typedef MCI_AMP_OPEN_PARMS*           PMCI_AMP_OPEN_PARMS;
  1376. typedef MCI_AMP_SET_PARMS*            PMCI_AMP_SET_PARMS;
  1377. typedef MCI_CAPTURE_PARMS*            PMCI_CAPTURE_PARMS;
  1378. typedef MCI_CDXA_SET_PARMS*           PMCI_CDXA_SET_PARMS;
  1379. typedef MCI_CDXA_STATUS_PARMS*        PMCI_CDXA_STATUS_PARMS;
  1380. typedef MCI_CONNECTION_PARMS*         PMCI_CONNECTION_PARMS;
  1381. typedef MCI_CONNECTORINFO_PARMS*      PMCI_CONNECTORINFO_PARMS;
  1382. typedef MCI_CONNECTOR_PARMS*          PMCI_CONNECTOR_PARMS;
  1383. typedef MCI_CUEPOINT_PARMS*           PMCI_CUEPOINT_PARMS;
  1384. typedef MCI_DEFAULT_CONNECTION_PARMS* PMCI_DEFAULT_CONNECTION_PARMS;
  1385. typedef MCI_DEVICESETTINGS_PARMS*     PMCI_DEVICESETTINGS_PARMS;
  1386. typedef MCI_DGV_OPEN_PARMS*           PMCI_DGV_OPEN_PARMS;
  1387. typedef MCI_DGV_PLAY_PARMS*           PMCI_DGV_PLAY_PARMS;
  1388. typedef MCI_DGV_RECT_PARMS*           PMCI_DGV_RECT_PARMS;
  1389. typedef MCI_DGV_SET_PARMS*            PMCI_DGV_SET_PARMS;
  1390. typedef MCI_DGV_WINDOW_PARMS*         PMCI_DGV_WINDOW_PARMS;
  1391. typedef MCI_EDIT_PARMS*               PMCI_EDIT_PARMS;
  1392. typedef MCI_ESCAPE_PARMS*             PMCI_ESCAPE_PARMS;
  1393. typedef MCI_GENERIC_PARMS*            PMCI_GENERIC_PARMS;
  1394. typedef MCI_GETDEVCAPS_PARMS*         PMCI_GETDEVCAPS_PARMS;
  1395. typedef MCI_GROUP_PARMS*              PMCI_GROUP_PARMS;
  1396. typedef MCI_IMAGE_PARMS*              PMCI_IMAGE_PARMS;
  1397. typedef MCI_INFO_PARMS*               PMCI_INFO_PARMS;
  1398. typedef MCI_LOAD_PARMS*               PMCI_LOAD_PARMS;
  1399. typedef MCI_MASTERAUDIO_PARMS*        PMCI_MASTERAUDIO_PARMS;
  1400. typedef MCI_OPEN_PARMS*               PMCI_OPEN_PARMS;
  1401. typedef MCI_OVLY_OPEN_PARMS*          PMCI_OVLY_OPEN_PARMS;
  1402. typedef MCI_OVLY_RECT_PARMS*          PMCI_OVLY_RECT_PARMS;
  1403. typedef MCI_OVLY_SET_PARMS*           PMCI_OVLY_SET_PARMS;
  1404. typedef MCI_OVLY_WINDOW_PARMS*        PMCI_OVLY_WINDOW_PARMS;
  1405. typedef MCI_PALETTE_PARMS*            PMCI_PALETTE_PARMS;
  1406. typedef MCI_PLAY_PARMS*               PMCI_PLAY_PARMS;
  1407. typedef MCI_POSITION_PARMS*           PMCI_POSITION_PARMS;
  1408. typedef MCI_RECORD_PARMS*             PMCI_RECORD_PARMS;
  1409. typedef MCI_RESTORE_PARMS*            PMCI_RESTORE_PARMS;
  1410. typedef MCI_SAVE_PARMS*               PMCI_SAVE_PARMS;
  1411. typedef MCI_SEEK_PARMS*               PMCI_SEEK_PARMS;
  1412. typedef MCI_SET_PARMS*                PMCI_SET_PARMS;
  1413. typedef MCI_SEQ_SET_PARMS*            PMCI_SEQ_SET_PARMS;
  1414. typedef MCI_STATUS_PARMS*             PMCI_STATUS_PARMS;
  1415. typedef MCI_STEP_PARMS*               PMCI_STEP_PARMS;
  1416. typedef MCI_SYNC_OFFSET_PARMS*        PMCI_SYNC_OFFSET_PARMS;
  1417. typedef MCI_SYSINFO_ALIAS*            PMCI_SYSINFO_ALIAS;
  1418. typedef MCI_SYSINFO_CONPARAMS*        PMCI_SYSINFO_CONPARAMS;
  1419. typedef MCI_SYSINFO_DEFAULTDEVICE*    PMCI_SYSINFO_DEFAULTDEVICE;
  1420. typedef MCI_SYSINFO_DEVPARAMS*        PMCI_SYSINFO_DEVPARAMS;
  1421. typedef MCI_SYSINFO_EXTENSION*        PMCI_SYSINFO_EXTENSION;
  1422. typedef MCI_SYSINFO_LOGDEVICE*        PMCI_SYSINFO_LOGDEVICE;
  1423. typedef MCI_SYSINFO_PARMS*            PMCI_SYSINFO_PARMS;
  1424. typedef MCI_SYSINFO_QUERY_NAME*       PMCI_SYSINFO_QUERY_NAME;
  1425. typedef MCI_SYSINFO_TYPES*            PMCI_SYSINFO_TYPES;
  1426. typedef MCI_TOC_PARMS*                PMCI_TOC_PARMS;
  1427. typedef MCI_VD_PLAY_PARMS*            PMCI_VD_PLAY_PARMS;
  1428. typedef MCI_VD_SET_PARMS*             PMCI_VD_SET_PARMS;
  1429. typedef MCI_WAVE_GETDEVCAPS_PARMS*    PMCI_WAVE_GETDEVCAPS_PARMS;
  1430. typedef MCI_WAVE_SET_PARMS*           PMCI_WAVE_SET_PARMS;
  1431. /*DART pointer types*/
  1432. typedef MCI_MIXSETUP_PARMS*            PMCI_MIXSETUP_PARMS;
  1433. typedef MCI_BUFFER_PARMS*             PMCI_BUFFER_PARMS;
  1434.  
  1435. /**********************/
  1436. /* BYTE--DWORD macros */
  1437. /**********************/
  1438.  
  1439. #define ULONG_LWLB(ul)  (*(BYTE *)((ULONG *)(&ul)))
  1440. #define ULONG_LWHB(ul)  (*((BYTE *)((ULONG *)(&ul))+1))
  1441. #define ULONG_HWLB(ul)  (*((BYTE *)((ULONG *)(&ul))+2))
  1442. #define ULONG_HWHB(ul)  (*((BYTE *)((ULONG *)(&ul))+3))
  1443. #define ULONG_LOWD(ul)  (*(USHORT *)((ULONG *)(&ul)))
  1444. #define ULONG_HIWD(ul)  (*((USHORT *)((ULONG *)(&ul))+1))
  1445.  
  1446.  
  1447. /**********************************/
  1448. /* time conversion macros (yuck!) */
  1449. /**********************************/
  1450.  
  1451. #define FPS24TOMM(value)  ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  1452.                            (((value) & 0x0000FF00) / 0x0000100 * 60 * 3000) + \
  1453.                            (((value) & 0x00FF0000) / 0x0010000 * 3000) + \
  1454.                            (((value) & 0xFF000000) / 0x1000000 * 3000/24))
  1455.  
  1456. #define FPS24FROMMM(value)  ((((value)+63) >= 0x100*60*60*3000) ? 0L : \
  1457.                          (((((((value)+63) % 3000)/(3000/24)) << 24) & 0xFF000000) | \
  1458.                           ((((((value)+63) / 3000) % 60) << 16) & 0x00FF0000)      | \
  1459.                          (((((((value)+63) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  1460.                           ((((((value)+63) / 3000) / 60) / 60)  & 0x000000FF)))
  1461.  
  1462. #define FPS25TOMM(value)  ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  1463.                            (((value) & 0x0000FF00) / 0x0000100 * 60 * 3000) + \
  1464.                            (((value) & 0x00FF0000) / 0x0010000 * 3000) + \
  1465.                            (((value) & 0xFF000000) / 0x1000000 * 3000/25))
  1466.  
  1467. #define FPS25FROMMM(value)  ((((value)+60) >= 0x100*60*60*3000) ? 0L : \
  1468.                          (((((((value)+60) % 3000)/(3000/25)) << 24) & 0xFF000000) | \
  1469.                           ((((((value)+60) / 3000) % 60) << 16) & 0x00FF0000)      | \
  1470.                          (((((((value)+60) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  1471.                           ((((((value)+60) / 3000) / 60) / 60)  & 0x000000FF)))
  1472.  
  1473. #define FPS30TOMM(value)  ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  1474.                            (((value) & 0x0000FF00) / 0x0000100 * 60 * 3000) + \
  1475.                            (((value) & 0x00FF0000) / 0x0010000 * 3000) + \
  1476.                            (((value) & 0xFF000000) / 0x1000000 * 3000/30))
  1477.  
  1478. #define FPS30FROMMM(value)  ((((value)+50) >= 0x100*60*60*3000) ? 0L : \
  1479.                          (((((((value)+50) % 3000)/(3000/30)) << 24) & 0xFF000000) | \
  1480.                           ((((((value)+50) / 3000) % 60) << 16) & 0x00FF0000)      | \
  1481.                          (((((((value)+50) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  1482.                           ((((((value)+50) / 3000) / 60) / 60)  & 0x000000FF)))
  1483.  
  1484. #define HMSTOMM(value)  ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  1485.                          (((value) & 0x0000FF00) / 0x00100 * 60 * 3000) + \
  1486.                          (((value) & 0x00FF0000) / 0x10000 * 3000))
  1487.  
  1488. #define HMSFROMMM(value)  ((((value)+50) >= 0x100*60*60*3000) ? 0L : \
  1489.                        (((((((value)+50) / 3000) % 60) << 16) & 0x00FF0000)      | \
  1490.                        (((((((value)+50) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  1491.                         ((((((value)+50) / 3000) / 60) / 60)  & 0x000000FF)))
  1492.  
  1493. #define MSECTOMM(value)  (((value) > (0xFFFFFFFF /3)) ? 0L : \
  1494.                           ((value) * 3))
  1495.  
  1496. #define MSECFROMMM(value)  (((value)+1) / 3)
  1497.  
  1498. #define REDBOOKTOMM(value)  ((((value) & 0x000000FF) * 60 * 3000) + \
  1499.                              (((value) & 0x0000FF00) / 0x00100 * 3000) + \
  1500.                              (((value) & 0x00FF0000) / 0x10000 * 3000/75))
  1501.  
  1502. #define REDBOOKFROMMM(value)  ((((value)+20) >= 0x100*60*3000) ? 0L : \
  1503.                                ((((value)+20) / (60*3000)) + \
  1504.                                (((value)+20) % (60*3000) / 3000 << 8) + \
  1505.                                (((value)+20) / (3000/75) % 75 << 16)))
  1506.  
  1507. #define MSF_FRAME(time)    (*((BYTE *)(&(time))+2))
  1508. #define MSF_MINUTE(time)   (*(BYTE *)(&(time)))
  1509. #define MSF_SECOND(time)   (*((BYTE *)(&(time))+1))
  1510.  
  1511. #define TMSF_FRAME(time)   (*((BYTE *)(&(time))+3))
  1512. #define TMSF_MINUTE(time)  (*((BYTE *)(&(time))+1))
  1513. #define TMSF_SECOND(time)  (*((BYTE *)(&(time))+2))
  1514. #define TMSF_TRACK(time)   (*(BYTE *)(&(time)))
  1515.  
  1516.  
  1517. /*************/
  1518. /* MCI API's */
  1519. /*************/
  1520.  
  1521. ULONG mciSendCommand(USHORT usDeviceID, USHORT usMessage, ULONG ulParam1,
  1522.                      PVOID pParam2, USHORT usUserParm);
  1523.  
  1524. ULONG mciSendString(PSZ pszCommandBuf, PSZ pszReturnString,
  1525.                     USHORT wReturnLength, HWND hwndCallBack,
  1526.                     USHORT usUserParm);
  1527.  
  1528. ULONG mciGetErrorString(ULONG ulError, PSZ pszBuffer, USHORT usLength);
  1529.  
  1530. ULONG mciMakeGroup(PUSHORT pusDeviceGroupID, USHORT usDeviceCount,
  1531.                    PUSHORT pausDeviceList, ULONG ulFlags, ULONG ulMMTime);
  1532.  
  1533. ULONG mciDeleteGroup(USHORT usGroupID);
  1534.  
  1535. BOOL  mciSetSysValue(USHORT iSysValue, PVOID pValue);
  1536.  
  1537. BOOL  mciQuerySysValue(USHORT iSysValue, PVOID pValue);
  1538.  
  1539. ULONG mciGetDeviceID(PSZ pszName);
  1540.  
  1541. /* set default alignment */
  1542. #pragma pack()
  1543.  
  1544. /* nested header management */
  1545. #endif
  1546.