home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / amiiprog.zip / MMSYSTEM.H < prev    next >
C/C++ Source or Header  |  1992-07-30  |  101KB  |  1,852 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /* Module Name: MMSYSTEM.H                                                  */
  4. /*                                                                          */
  5. /* This is the multimedia include file that has the typedefs, defines and   */
  6. /* function prototyes for Media Control Interface of MMPM/2 (tm)            */
  7. /*                                                                          */
  8. /* Copyright (c) International Business Machines Corporation 1991, 1992     */
  9. /*                        All Rights Reserved                               */
  10. /*                                                                          */
  11. /****************************************************************************/
  12. #define MCI_TRUE                        1
  13. #define MCI_FALSE                       0
  14.  
  15. /*********************************************************************/
  16. /*                                                                   */
  17. /*             MCI command message identifiers                       */
  18. /*                                                                   */
  19. /*********************************************************************/
  20. #define MCI_OPEN                        1
  21. #define MCI_CLOSE                       2
  22. #define MCI_ESCAPE                      3
  23. #define MCI_PLAY                        4
  24. #define MCI_SEEK                        5
  25. #define MCI_STOP                        6
  26. #define MCI_PAUSE                       7
  27. #define MCI_INFO                        8
  28. #define MCI_GETDEVCAPS                  9
  29. #define MCI_STATUS                      10
  30. #define MCI_SPIN                        11
  31. #define MCI_SET                         12
  32. #define MCI_STEP                        13
  33. #define MCI_RECORD                      14
  34. #define MCI_SYSINFO                     15
  35. #define MCI_SAVE                        16
  36. #define MCI_CUE                         17
  37. #define MCI_UPDATE                      18
  38. #define MCI_SET_CUEPOINT                19
  39. #define MCI_SET_POSITION_ADVISE         20
  40. #define MCI_SET_SYNC_OFFSET             21
  41. #define MCI_LOAD                        22
  42. #define MCI_ACQUIREDEVICE               23
  43. #define MCI_RELEASEDEVICE               24
  44. #define MCI_MASTERAUDIO                 25
  45. #define MCI_GETTOC                      26
  46. #define MCI_DEVICESETTINGS              27
  47. #define MCI_CONNECTOR                   28
  48. #define MCI_RESUME                      29
  49. #define MCI_CONNECTORINFO               31
  50. #define MCI_DEFAULT_CONNECTION          32
  51. #define MCI_CONNECTION                  33
  52.  
  53.    /*************************************************/
  54.    /* MCI command message identifiers reserved for  */
  55.    /*  Digital Video and Video Overlay              */
  56.    /*************************************************/
  57.  
  58. #define MCI_CAPTURE                     40
  59. #define MCI_FREEZE                      41
  60. #define MCI_GETIMAGEBUFFER              42
  61. #define MCI_GETIMAGEPALETTE             43
  62. #define MCI_PUT                         44
  63. #define MCI_REALIZE                     45
  64. #define MCI_REWIND                      46
  65. #define MCI_RESTORE                     47
  66. #define MCI_SETIMAGEBUFFER              48
  67. #define MCI_SETIMAGEPALETTE             49
  68. #define MCI_UNFREEZE                    50
  69. #define MCI_WHERE                       51
  70. #define MCI_WINDOW                      52
  71. #define MCI_DELETE                      53
  72. #define MCI_CUT                         54
  73. #define MCI_PASTE                       55
  74. #define MCI_COPY                        56
  75.  
  76.  
  77. #define RECT                            DWORD
  78. #define HDCT                            DWORD
  79. /*********************************************************************/
  80. /* this and all subsequent message ID's are reserved for the user    */
  81. /*********************************************************************/
  82. #define MCI_USER_MESSAGES               2000
  83.  
  84. /*********************************************************************/
  85. /* Special Device ID for "all"                                       */
  86. /*********************************************************************/
  87. #define MCI_ALL_DEVICE_ID               0xFFFF
  88.  
  89. /*********************************************************************/
  90. /* MCI implementation limits                                         */
  91. /*********************************************************************/
  92. #define MAX_DEVICE_NAME                 20
  93. #define MAX_ALIAS_NAME                  20
  94. #define MAX_PRODINFO                    40
  95. #define MAX_EXTENSION_NAME              4
  96. #define MAX_DEV_PARAMS                  128
  97. #define MAX_VERSION_NUMBER              6
  98. #define MAX_PDD_NAME                    9
  99. #define MAX_DLL_NAME                    260
  100. #define MAX_CLASSES                     10
  101. #define MAX_CONNECTORS                  10
  102. #define MAX_EXTENSIONS                  25
  103. #define MAX_TYPEBUFFER                  256
  104.  
  105. #ifdef INCL_32
  106. /*********************************************************************/
  107. /* MCI Device Type Constants                                         */
  108. /*********************************************************************/
  109. #define MCI_DEVTYPE_VIDEOTAPE           1
  110. #define MCI_DEVTYPE_VIDEODISC           2
  111. #define MCI_DEVTYPE_CD_AUDIO            3
  112. #define MCI_DEVTYPE_DAT                 4
  113. #define MCI_DEVTYPE_AUDIO_TAPE          5
  114. #define MCI_DEVTYPE_OTHER               6
  115. #define MCI_DEVTYPE_WAVEFORM_AUDIO      7
  116. #define MCI_DEVTYPE_SEQUENCER           8
  117. #define MCI_DEVTYPE_AUDIO_AMPMIX        9
  118. #define MCI_DEVTYPE_OVERLAY             10
  119. #define MCI_DEVTYPE_ANIMATION           11
  120. #define MCI_DEVTYPE_DIGITAL_VIDEO       12
  121. #define MCI_DEVTYPE_SPEAKER             13
  122. #define MCI_DEVTYPE_HEADPHONE           14
  123. #define MCI_DEVTYPE_MICROPHONE          15
  124. #define MCI_DEVTYPE_MONITOR             16
  125. #define MCI_DEVTYPE_CDXA                17
  126.  
  127. /*********************************************************************/
  128. /* MCI Device Type Names                                             */
  129. /*********************************************************************/
  130. #define MCI_DEVTYPE_VIDEOTAPE_NAME          "Videotape"
  131. #define MCI_DEVTYPE_VIDEODISC_NAME          "Videodisc"
  132. #define MCI_DEVTYPE_CD_AUDIO_NAME           "CDaudio"
  133. #define MCI_DEVTYPE_DAT_NAME                "DAT"
  134. #define MCI_DEVTYPE_AUDIO_TAPE_NAME         "Audiotape"
  135. #define MCI_DEVTYPE_OTHER_NAME              "Other"
  136. #define MCI_DEVTYPE_WAVEFORM_AUDIO_NAME     "Waveaudio"
  137. #define MCI_DEVTYPE_SEQUENCER_NAME          "Sequencer"
  138. #define MCI_DEVTYPE_AUDIO_AMPMIX_NAME       "Ampmix"
  139. #define MCI_DEVTYPE_OVERLAY_NAME            "Overlay"
  140. #define MCI_DEVTYPE_ANIMATION_NAME          "Animation"
  141. #define MCI_DEVTYPE_DIGITAL_VIDEO_NAME      "Digitalvideo"
  142. #define MCI_DEVTYPE_SPEAKER_NAME            "Speaker"
  143. #define MCI_DEVTYPE_HEADPHONE_NAME          "Headphone"
  144. #define MCI_DEVTYPE_MICROPHONE_NAME         "Microphone"
  145. #define MCI_DEVTYPE_MONITOR_NAME            "Monitor"
  146. #define MCI_DEVTYPE_CDXA_NAME               "CDXA"
  147.  
  148. #define MCI_MAX_SYSTEM_DEVICE_NAMES         17
  149.  
  150. #endif                       /* INCL_32 */
  151.  
  152. /*********************************************************************/
  153. /* Getdevcaps, set, and status item base values                      */
  154. /*********************************************************************/
  155.  
  156. #define MCI_AMP_ITEM_BASE                   0x00001000L
  157. #define MCI_CD_ITEM_BASE                    0x00002000L
  158. #define MCI_CDXA_ITEM_BASE                  0x00003000L
  159. #define MCI_VD_ITEM_BASE                    0x00004000L
  160. #define MCI_SEQ_ITEM_BASE                   0x00005000L
  161. #define MCI_WAVE_ITEM_BASE                  0x00006000L
  162. #define MCI_VID_ITEM_BASE                   0x00007000L
  163. #define MCI_DGV_ITEM_BASE                   0x00008000L
  164. #define MCI_OVLY_ITEM_BASE                  0x00009000L
  165.  
  166. /*********************************************************************/
  167. /* Flags for mciDriverNotify                                         */
  168. /*********************************************************************/
  169. #define MCI_NOTIFY_SUCCESSFUL               0x0000
  170. #define MCI_NOTIFY_SUPERSEDED               0x0001
  171. #define MCI_NOTIFY_ABORTED                  0x0002
  172. #define MCI_NOTIFY_ERROR                    0x0003
  173.  
  174. /*********************************************************************/
  175. /* mciDriverNotify  Message Types                                    */
  176. /*********************************************************************/
  177. #define MM_MCINOTIFY                        0x0500
  178. #define MM_MCIPASSDEVICE                    0x0501
  179. #define MM_MCIPOSITIONCHANGE                0x0502
  180. #define MM_MCICUEPOINT                      0x0503
  181. #define MM_MCIPLAYLISTMESSAGE               0x0504
  182. #define MM_MCIEVENT                         0x0505
  183. #define MM_MCISYNCH                         0x0506
  184.  
  185. #define MCI_LOSING_USE                      0x00000001L
  186. #define MCI_GAINING_USE                     0x00000002L
  187.  
  188. /*********************************************************************/
  189. /* Common message flags                                              */
  190. /*     0x000000XX are reserved for common flags                      */
  191. /*********************************************************************/
  192. #define MCI_NOTIFY                          0x00000001L
  193. #define MCI_WAIT                            0x00000002L
  194. #define MCI_FROM                            0x00000004L
  195. #define MCI_TO                              0x00000008L
  196. #define MCI_MILLISECONDS                    0x00000010L
  197. #define MCI_TRACK                           0x00000020L
  198. #define MCI_OVER                            0x00000040L
  199. #define MCI_TEST                            0x00000080L
  200.  
  201.  
  202. /*********************************************************************/
  203. /* Time formats                                                      */
  204. /*********************************************************************/
  205. #define MCI_FORMAT_MILLISECONDS             0x00000001L
  206. #define MCI_FORMAT_MMTIME                   0x00000002L
  207. #define MCI_FORMAT_MSF                      0x00000005L
  208. #define MCI_FORMAT_TMSF                     0x00000006L
  209. #define MCI_FORMAT_CHAPTERS                 0x00000007L
  210. #define MCI_FORMAT_FRAMES                   0x00000008L
  211. #define MCI_FORMAT_HMS                      0x00000009L
  212. #define MCI_FORMAT_TRACKS                   0x0000000AL
  213. #define MCI_FORMAT_BYTES                    0x0000000BL
  214. #define MCI_FORMAT_SAMPLES                  0x0000000CL
  215. #define MCI_FORMAT_HMSF                     0x0000000DL
  216. #define MCI_FORMAT_SET_SMPTE_24             0x0000000EL
  217. #define MCI_FORMAT_SET_SMPTE_25             0x0000000FL
  218. #define MCI_FORMAT_SET_SMPTE_30             0x00000010L
  219. #define MCI_FORMAT_SET_SMPTE_30DROP         0x00000011L
  220. #define MCI_FORMAT_SET_SONGPTR              0x00000012L
  221.  
  222. /*********************************************************************/
  223. /* Speed formats                                                     */
  224. /*********************************************************************/
  225. #define MCI_FORMAT_PERCENTAGE               0x00000003L
  226. #define MCI_FORMAT_FPS                      0x00000004L
  227.  
  228.  
  229. /*********************************************************************/
  230. /*                                                                   */
  231. /*  Time format conversions macros                                   */
  232. /*                                                                   */
  233. /*********************************************************************/
  234. #define MSECTOMM(value)      (((value) > (0xFFFFFFFF /3)) ? 0L : \
  235.                               ((value) * 3))
  236.  
  237. #define MSECFROMMM(value)    (((value)+1) / 3)
  238.  
  239. #define REDBOOKTOMM(value)   ((((value) & 0x000000FF) * 60 * 3000) + \
  240.                               (((value) & 0x0000FF00) / 0x100 * 3000) + \
  241.                               (((value) & 0x00FF0000) / 0x10000 * 3000/75))
  242.  
  243. #define FPS24TOMM(value) ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  244.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  245.                           (((value) & 0x00FF0000) / 0x10000 * 3000) + \
  246.                           (((value) & 0xFF000000) / 0x1000000 * 3000/24))
  247.  
  248. #define FPS25TOMM(value) ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  249.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  250.                           (((value) & 0x00FF0000) / 0x10000 * 3000) + \
  251.                           (((value) & 0xFF000000) / 0x1000000 * 3000/25))
  252.  
  253. #define FPS30TOMM(value) ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  254.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  255.                           (((value) & 0x00FF0000) / 0x10000 * 3000) + \
  256.                           (((value) & 0xFF000000) / 0x1000000 * 3000/30))
  257.  
  258. #define HMSTOMM(value)   ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  259.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  260.                           (((value) & 0x00FF0000) / 0x10000 * 3000))
  261.  
  262.  
  263.   /* The +20 is used for rounding purposes.  It is derived by:           */
  264.   /*   1/2 * ((300 MMTIME/SEC / (75 FRAMES/SEC)) = 20 MMTIME/HALF-FRAME  */
  265. #define REDBOOKFROMMM(value) ((((value)+20) >= 0x100*60*3000) ? 0L : \
  266.                               ((((value)+20) / (60*3000)) + \
  267.                                (((value)+20) % (60*3000) / 3000 << 8) + \
  268.                                (((value)+20) / (3000/75) % 75 << 16)))
  269.  
  270. #define FPS24FROMMM(value) ((((value)+63) >= 0x100*60*60*3000) ? 0L : \
  271.                         (((((((value)+63) % 3000)/(3000/24)) << 24) & 0xFF000000) | \
  272.                          ((((((value)+63) / 3000) % 60) << 16) & 0x00FF0000)      | \
  273.                         (((((((value)+63) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  274.                          ((((((value)+63) / 3000) / 60) / 60)  & 0x000000FF)))
  275.  
  276. #define FPS25FROMMM(value) ((((value)+60) >= 0x100*60*60*3000) ? 0L : \
  277.                         (((((((value)+60) % 3000)/(3000/25)) << 24) & 0xFF000000) | \
  278.                          ((((((value)+60) / 3000) % 60) << 16) & 0x00FF0000)      | \
  279.                         (((((((value)+60) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  280.                          ((((((value)+60) / 3000) / 60) / 60)  & 0x000000FF)))
  281.  
  282. #define FPS30FROMMM(value) ((((value)+50) >= 0x100*60*60*3000) ? 0L : \
  283.                         (((((((value)+50) % 3000)/(3000/30)) << 24) & 0xFF000000) | \
  284.                          ((((((value)+50) / 3000) % 60) << 16) & 0x00FF0000)      | \
  285.                         (((((((value)+50) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  286.                          ((((((value)+50) / 3000) / 60) / 60)  & 0x000000FF)))
  287.  
  288. #define HMSFROMMM(value) ((((value)+50) >= 0x100*60*60*3000) ? 0L : \
  289.                         (((((((value)+50) / 3000) % 60) << 16) & 0x00FF0000)      | \
  290.                         (((((((value)+50) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  291.                          ((((((value)+50) / 3000) / 60) / 60)  & 0x000000FF)))
  292.  
  293. #define TMSF_TRACK(time)     (*(BYTE *)((DWORD *)(&time)))
  294. #define TMSF_MINUTE(time)    (*((BYTE *)(&(DWORD)(time))+1))
  295. #define TMSF_SECOND(time)    (*((BYTE *)(&(DWORD)(time))+2))
  296. #define TMSF_FRAME(time)     (*((BYTE *)(&(DWORD)(time))+3))
  297. #define MSF_MINUTE(time)     (*((BYTE *)(&(DWORD)(time))))
  298. #define MSF_SECOND(time)     (*((BYTE *)(&(DWORD)(time))+1))
  299. #define MSF_FRAME(time)      (*((BYTE *)(&(DWORD)(time))+2))
  300.  
  301. /*********************************************************************/
  302. /*                                                                   */
  303. /*  BYTE ACCESS WITH A DWORD MACROS                                  */
  304. /*                                                                   */
  305. /*********************************************************************/
  306. #define DWORD_LWLB(dw)    (*(BYTE *)((DWORD *)(&dw)))     /* Low  Word Low Byte  */
  307. #define DWORD_LWHB(dw)    (*((BYTE *)((DWORD *)(&dw))+1)) /* Low  Word High Byte */
  308. #define DWORD_HWLB(dw)    (*((BYTE *)((DWORD *)(&dw))+2)) /* High Word Low Byte  */
  309. #define DWORD_HWHB(dw)    (*((BYTE *)((DWORD *)(&dw))+3)) /* High Word High Byte */
  310. #define DWORD_LOWD(dw)    (*(WORD *)((DWORD *)(&dw)))     /* Low  Word           */
  311. #define DWORD_HIWD(dw)    (*((WORD *)((DWORD *)(&dw))+1)) /* High Word           */
  312.  
  313. #ifdef INCL_32
  314.  
  315. #pragma pack(1)
  316.  
  317. /*********************************************************************/
  318. /* parameters for default command messages with empty parameter lists*/
  319. /*********************************************************************/
  320. typedef struct {
  321.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  322. } MCI_GENERIC_PARMS;
  323. typedef MCI_GENERIC_PARMS   *LPMCI_GENERIC_PARMS;
  324.  
  325.  
  326. /*********************************************************************/
  327. /* flags for the MCI_ACQUIREDEVICE message                           */
  328. /*     0x00000X00 are reserved for MCI_ACQUIREDEVICE flags           */
  329. /*********************************************************************/
  330. #define MCI_EXCLUSIVE                       0x00000100L
  331.  
  332.  
  333. /*********************************************************************/
  334. /* flags for the MCI_CAPTURE message                                 */
  335. /*     0x0000XX00 are reserved for MCI_CAPTURE flags                 */
  336. /*********************************************************************/
  337. #define MCI_CAPTURE_RECT                    0x00000100L
  338. #define MCI_CONVERT                         0x00000200L
  339.  
  340. /*********************************************************************/
  341. /* parameter structure for the MCI_CAPTURE message                   */
  342. /*********************************************************************/
  343.  
  344. typedef struct {
  345.     DWORD   dwCallback;      /* PM window handle for MCI notify message     */
  346.     RECTL   rect;            /* Rectangle array specifying the area to      */
  347.                              /* area to be captured                         */
  348. } MCI_CAPTURE_PARMS;
  349. typedef MCI_CAPTURE_PARMS   *LPMCI_CAPTURE_PARMS;
  350.  
  351.  
  352. /*********************************************************************/
  353. /* flags for MCI_CONNECTOR and MCI_CONNECTION messages               */
  354. /*********************************************************************/
  355. #define MCI_ENABLE_CONNECTOR                0x00000100L
  356. #define MCI_DISABLE_CONNECTOR               0x00000200L
  357. #define MCI_QUERY_CONNECTOR_STATUS          0x00000400L
  358. #define MCI_CONNECTOR_TYPE                  0x00000800L
  359. #define MCI_CONNECTOR_INDEX                 0x00001000L
  360. #define MCI_TO_CONNECTOR_INDEX              0x00002000L
  361. #define MCI_TO_CONNECTOR_TYPE               0x00004000L
  362. #define MCI_QUERY_CONNECTION                0x00008000L
  363. #define MCI_MAKE_CONNECTION                 0x00010000L
  364. #define MCI_BREAK_CONNECTION                0x00020000L
  365. #define MCI_ENUMERATE_CONNECTORS            0x00040000L
  366. #define MCI_QUERY_CONNECTOR_TYPE            0x00080000L
  367. #define MCI_QUERY_VALID_CONNECTION          0x00100000L
  368. #define MCI_CONNECTOR_ALIAS                 0x00200000L
  369.  
  370.  
  371. /*********************************************************************/
  372. /* Connector types                                                   */
  373. /*********************************************************************/
  374. #define MCI_MIDI_STREAM_CONNECTOR           0x00000001L
  375. #define MCI_CD_STREAM_CONNECTOR             0x00000002L
  376. #define MCI_WAVE_STREAM_CONNECTOR           0x00000003L
  377. #define MCI_AMP_STREAM_CONNECTOR            0x00000004L
  378. #define MCI_XA_STREAM_CONNECTOR             0x00000005L
  379. #define MCI_HEADPHONES_CONNECTOR            0x00000006L
  380. #define MCI_SPEAKERS_CONNECTOR              0x00000007L
  381. #define MCI_MICROPHONE_CONNECTOR            0x00000008L
  382. #define MCI_LINE_IN_CONNECTOR               0x00000009L
  383. #define MCI_LINE_OUT_CONNECTOR              0x0000000aL
  384. #define MCI_VIDEO_IN_CONNECTOR              0x0000000bL
  385. #define MCI_VIDEO_OUT_CONNECTOR             0x0000000cL
  386. #define MCI_PHONE_SET_CONNECTOR             0x0000000dL
  387. #define MCI_PHONE_LINE_CONNECTOR            0x0000000eL
  388. #define MCI_AUDIO_IN_CONNECTOR              0x0000000fL
  389. #define MCI_AUDIO_OUT_CONNECTOR             0x00000010L
  390. #define MCI_UNIVERSAL_CONNECTOR             0x00000011L
  391.  
  392. /*********************************************************************/
  393. /* parameter structure for the MCI_CONNECTION message                */
  394. /*********************************************************************/
  395. typedef struct {
  396.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  397.     DWORD   dwConnectorType; /* Connector type                          */
  398.     DWORD   dwConnectorIndex;/* Connector index                         */
  399.     LPSTR   lpstrAlias;      /* Connection device alias                 */
  400.     WORD    wToDeviceID;     /* Connected to device ID                  */
  401.     WORD    wReserved0;      /* Reserved field                          */
  402.     DWORD   dwReserved1;     /* Reserved field                          */
  403.     DWORD   dwReserved2;     /* Reserved field                          */
  404. } MCI_CONNECTION_PARMS;
  405. typedef MCI_CONNECTION_PARMS   *LPMCI_CONNECTION_PARMS;
  406.  
  407. /*********************************************************************/
  408. /* parameter structure for the MCI_CONNECTOR message                 */
  409. /*********************************************************************/
  410. typedef struct {
  411.     DWORD  dwCallback;       /* PM window handle for MCI notify message    */
  412.     DWORD  dwReturn;         /* Return information                         */
  413.     DWORD  dwConnectorType;  /* If specified, dwConnectorIndex is relative */
  414.                              /* to the specified connector type            */
  415.     DWORD  dwConnectorIndex; /* Connector number                           */
  416. } MCI_CONNECTOR_PARMS;
  417. typedef MCI_CONNECTOR_PARMS   *LPMCI_CONNECTOR_PARMS;
  418.  
  419. /*********************************************************************/
  420. /* parameter structure for the MCI_CONNECTORINFO message             */
  421. /*********************************************************************/
  422. typedef struct {
  423.     DWORD  dwCallback;       /* PM window handle for MCI notify message    */
  424.     DWORD  dwReturn;         /* Return information                         */
  425.     DWORD  dwDeviceTypeID;   /* MCI device type                            */
  426.     DWORD  dwConnectorType;  /* If specified, dwConnectorIndex is relative */
  427.                              /* to the specified connector type            */
  428.     DWORD  dwConnectorIndex; /* Connector number                           */
  429.     DWORD  dwToConnectorType;   /* Connector type to test if               */
  430.                                 /* MCI_QUERY_VALID_CONNECTION is specified */
  431. } MCI_CONNECTORINFO_PARMS;
  432. typedef MCI_CONNECTORINFO_PARMS   *LPMCI_CONNECTORINFO_PARMS;
  433.  
  434. /*********************************************************************/
  435. /* flags for the MCI_CUE message                                     */
  436. /*     0x00000x00 are reserved for MCI_CUE flags                     */
  437. /*********************************************************************/
  438. #define MCI_CUE_INPUT                       0x00000100L
  439. #define MCI_CUE_OUTPUT                      0x00000200L
  440.  
  441.     /*************************************************/
  442.     /* Additional flags for Wave Audio for MCI_CUE   */
  443.     /*************************************************/
  444. #define MCI_WAVE_INPUT                      0x00001000L
  445. #define MCI_WAVE_OUTPUT                     0x00002000L
  446.  
  447.  
  448. /*********************************************************************/
  449. /* parameter structure for the MCI_DEFAULT_CONNECTION message        */
  450. /*********************************************************************/
  451. typedef struct {
  452.     DWORD dwCallback;        /* PM window handle for MCI notify message    */
  453.     PSZ   pszDevice;         /* Device name                                */
  454.     DWORD dwConnectorType;   /* If specified, dwConnectorIndex is relative */
  455.                              /* to the specified connector type            */
  456.     DWORD dwConnectorIndex;  /* Connector number                           */
  457.     PSZ   pszToDevice;       /* Return device name to which the connection */
  458.                              /* exists                                     */
  459.     DWORD dwToConnectorType; /* Connector type                             */
  460.     DWORD dwToConnectorIndex;   /* Connector number                        */
  461. } MCI_DEFAULT_CONNECTION_PARMS;
  462. typedef MCI_DEFAULT_CONNECTION_PARMS   *LPMCI_DEFAULT_CONNECTION_PARMS;
  463.  
  464. /*********************************************************************/
  465. /* parameter structure for the MCI_DEVICESETTINGS message            */
  466. /*********************************************************************/
  467. typedef struct {
  468.     DWORD   dwCallback;      /* PM window handle for MCI notify message    */
  469.     HWND    hwndNotebook;    /* Hwhd to notebook window                    */
  470.     USHORT  usDeviceType;    /* Device type                                */
  471.     PSZ     pszDeviceName;   /* Device name                                */
  472. } MCI_DEVICESETTINGS_PARMS;
  473. typedef MCI_DEVICESETTINGS_PARMS   *LPMCI_DEVICESETTINGS_PARMS;
  474.  
  475. /*********************************************************************/
  476. /* flags and parameter structure for the MCI_ESCAPE message          */
  477. /*     0x00000X00 are reserved for MCI_ESCAPE flags                  */
  478. /*********************************************************************/
  479. #define MCI_ESCAPE_STRING                   0x00000100L
  480.  
  481. typedef struct {
  482.     DWORD   dwCallback;      /* PM window handle for MCI notify message    */
  483.     LPSTR   lpstrCommand;    /* Command to send to the device              */
  484. } MCI_ESCAPE_PARMS;
  485. typedef MCI_ESCAPE_PARMS   *LPMCI_ESCAPE_PARMS;
  486.  
  487. /*********************************************************************/
  488. /* flags for the MCI_FREEZE message                                  */
  489. /*     0x0000XX00 are reserved for MCI_FREEZE flags                  */
  490. /*********************************************************************/
  491. #define MCI_OVLY_FREEZE_RECT                0x00000100L
  492. #define MCI_OVLY_FREEZE_RECT_OUTSIDE        0x00000200L
  493.  
  494. /*********************************************************************/
  495. /* flags for the MCI_GETDEVCAPS message                              */
  496. /*     0x00XXXX00 are reserved for MCI_GETDEVCAPS flags              */
  497. /*********************************************************************/
  498. #define MCI_GETDEVCAPS_MESSAGE              0x00000100L
  499. #define MCI_GETDEVCAPS_ITEM                 0x00000200L
  500.  
  501.    /*************************************************/
  502.    /* General MCI_GETDEVCAPS item values            */
  503.    /*************************************************/
  504. #define MCI_GETDEVCAPS_CAN_EJECT            0x00000001L
  505. #define MCI_GETDEVCAPS_CAN_LOCKEJECT        0x00000002L
  506. #define MCI_GETDEVCAPS_CAN_PLAY             0x00000003L
  507. #define MCI_GETDEVCAPS_CAN_PROCESS_INTERNAL 0x00000004L
  508. #define MCI_GETDEVCAPS_CAN_RECORD           0x00000005L
  509. #define MCI_GETDEVCAPS_CAN_RECORD_INSERT    0x00000006L
  510. #define MCI_GETDEVCAPS_CAN_SAVE             0x00000007L
  511. #define MCI_GETDEVCAPS_CAN_SETVOLUME        0x00000008L
  512. #define MCI_GETDEVCAPS_CAN_STREAM           0x00000009L
  513. #define MCI_GETDEVCAPS_DEVICE_TYPE          0x0000000AL
  514. #define MCI_GETDEVCAPS_HAS_AUDIO            0x0000000BL
  515. #define MCI_GETDEVCAPS_HAS_VIDEO            0x0000000CL
  516. #define MCI_GETDEVCAPS_PREROLL_TIME         0x0000000DL
  517. #define MCI_GETDEVCAPS_PREROLL_TYPE         0x0000000EL
  518. #define MCI_GETDEVCAPS_USES_FILES           0x0000000FL
  519. #define MCI_GETDEVCAPS_HAS_IMAGE            0x00000010L
  520.  
  521.     /***********************************************/
  522.     /* return ID's for videodisc MCI_GETDEVCAPS    */
  523.     /***********************************************/
  524. #define MCI_VD_MEDIA_CLV                    0x00000001L
  525. #define MCI_VD_MEDIA_CAV                    0x00000002L
  526. #define MCI_VD_MEDIA_OTHER                  0x00000003L
  527.  
  528.     /*************************************************/
  529.     /* MCI_GETDEVCAPS item values for video devices  */
  530.     /*************************************************/
  531. #define MCI_VID_GETDEVCAPS_CAN_STRETCH       MCI_VID_ITEM_BASE
  532. #define MCI_VID_GETDEVCAPS_CAN_DISTORT       (MCI_VID_ITEM_BASE+1)
  533. #define MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT    (MCI_VID_ITEM_BASE+2)
  534. #define MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT    (MCI_VID_ITEM_BASE+3)
  535. #define MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT    (MCI_VID_ITEM_BASE+4)
  536. #define MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT    (MCI_VID_ITEM_BASE+5)
  537. #define MCI_VID_GETDEVCAPS_MAX_WINDOWS       (MCI_VID_ITEM_BASE+6)
  538. #define MCI_VID_GETDEVCAPS_CAN_FREEZE        (MCI_VID_ITEM_BASE+7)
  539. #define MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS  (MCI_VID_ITEM_BASE+8)
  540.  
  541. #define MCI_VID_GETDEVCAPS_CAN_REVERSE       (MCI_VID_ITEM_BASE+9)
  542. #define MCI_VID_GETDEVCAPS_FAST_RATE         (MCI_VID_ITEM_BASE+10)
  543. #define MCI_VID_GETDEVCAPS_SLOW_RATE         (MCI_VID_ITEM_BASE+11)
  544. #define MCI_VID_GETDEVCAPS_NORMAL_RATE       (MCI_VID_ITEM_BASE+12)
  545. #define MCI_VID_GETDEVCAPS_MINIMUM_RATE      (MCI_VID_ITEM_BASE+13)
  546. #define MCI_VID_GETDEVCAPS_MAXIMUM_RATE      (MCI_VID_ITEM_BASE+14)
  547.  
  548.     /*************************************************/
  549.     /* MCI_GETDEVCAPS flag values for Videodisc      */
  550.     /*************************************************/
  551. #define MCI_VD_GETDEVCAPS_CLV               0x00000400L
  552. #define MCI_VD_GETDEVCAPS_CAV               0x00000800L
  553.  
  554.     /*************************************************/
  555.     /* MCI_GETDEVCAPS item values for Videodisc      */
  556.     /*************************************************/
  557.  
  558. #define MCI_VD_GETDEVCAPS_CAN_REVERSE       MCI_VID_GETDEVCAPS_CAN_REVERSE
  559. #define MCI_VD_GETDEVCAPS_FAST_RATE         MCI_VID_GETDEVCAPS_FAST_RATE
  560. #define MCI_VD_GETDEVCAPS_SLOW_RATE         MCI_VID_GETDEVCAPS_SLOW_RATE
  561. #define MCI_VD_GETDEVCAPS_NORMAL_RATE       MCI_VID_GETDEVCAPS_NORMAL_RATE
  562. #define MCI_VD_GETDEVCAPS_MINIMUM_RATE      MCI_VID_GETDEVCAPS_MINIMUM_RATE
  563. #define MCI_VD_GETDEVCAPS_MAXIMUM_RATE      MCI_VID_GETDEVCAPS_MAXIMUM_RATE
  564.  
  565.     /************************************************/
  566.     /* MCI_GETDEVCAPS item values for Digital Video */
  567.     /************************************************/
  568. #define MCI_DGV_GETDEVCAPS_CAN_REVERSE      MCI_VID_GETDEVCAPS_CAN_REVERSE
  569. #define MCI_DGV_GETDEVCAPS_CAN_STRETCH      MCI_VID_GETDEVCAPS_CAN_STRETCH
  570. #define MCI_DGV_GETDEVCAPS_CAN_DISTORT      MCI_VID_GETDEVCAPS_CAN_DISTORT
  571. #define MCI_DGV_GETDEVCAPS_FAST_RATE        MCI_VID_GETDEVCAPS_FAST_RATE
  572. #define MCI_DGV_GETDEVCAPS_SLOW_RATE        MCI_VID_GETDEVCAPS_SLOW_RATE
  573. #define MCI_DGV_GETDEVCAPS_NORMAL_RATE      MCI_VID_GETDEVCAPS_NORMAL_RATE
  574. #define MCI_DGV_GETDEVCAPS_MINIMUM_RATE     MCI_VID_GETDEVCAPS_MINIMUM_RATE
  575. #define MCI_DGV_GETDEVCAPS_MAXIMUM_RATE     MCI_VID_GETDEVCAPS_MAXIMUM_RATE
  576. #define MCI_DGV_GETDEVCAPS_VIDEO_X_EXTENT   MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT
  577. #define MCI_DGV_GETDEVCAPS_VIDEO_Y_EXTENT   MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT
  578. #define MCI_DGV_GETDEVCAPS_IMAGE_X_EXTENT   MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT
  579. #define MCI_DGV_GETDEVCAPS_IMAGE_Y_EXTENT   MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT
  580. #define MCI_DGV_GETDEVCAPS_MAX_WINDOWS      MCI_VID_GETDEVCAPS_MAX_WINDOWS
  581. #define MCI_DGV_GETDEVCAPS_OVERLAY_GRAPHICS MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS
  582.  
  583.    /*************************************************/
  584.    /* MCI_GETDEVCAPS item values for Video Overlay  */
  585.    /*************************************************/
  586. #define MCI_OVLY_GETDEVCAPS_CAN_STRETCH     MCI_VID_GETDEVCAPS_CAN_STRETCH
  587. #define MCI_OVLY_GETDEVCAPS_CAN_DISTORT     MCI_VID_GETDEVCAPS_CAN_DISTORT
  588. #define MCI_OVLY_GETDEVCAPS_VIDEO_X_EXTENT  MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT
  589. #define MCI_OVLY_GETDEVCAPS_VIDEO_Y_EXTENT  MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT
  590. #define MCI_OVLY_GETDEVCAPS_IMAGE_X_EXTENT  MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT
  591. #define MCI_OVLY_GETDEVCAPS_IMAGE_Y_EXTENT  MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT
  592. #define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS     MCI_VID_GETDEVCAPS_MAX_WINDOWS
  593. #define MCI_OVLY_GETDEVCAPS_CAN_FREEZE      MCI_VID_GETDEVCAPS_CAN_FREEZE
  594. #define MCI_OVLY_GETDEVCAPS_OVERLAY_GRAPHICS MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS
  595.  
  596.  
  597. #define MCI_PREROLL_NOTIFIED                0x00000001L
  598. #define MCI_PREROLL_DETERMINISTIC           0x00000002L
  599. #define MCI_PREROLL_NONE                    0x00000003L
  600.  
  601. /*********************************************************************/
  602. /* parameter structure for the MCI_GETDEVCAPS message                */
  603. /*********************************************************************/
  604. typedef struct {
  605.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  606.     DWORD   dwReturn;        /* Return field                            */
  607.     DWORD   dwItem;          /* Item field for GETDEVCAPS item to query */
  608.     WORD    wMessage;        /* Field to hold MCI message to query      */
  609.     WORD    wReserved0;      /* Reserved field                          */
  610. } MCI_GETDEVCAPS_PARMS;
  611. typedef MCI_GETDEVCAPS_PARMS   * LPMCI_GETDEVCAPS_PARMS;
  612.  
  613. /*********************************************************************/
  614. /* flag values for the MCI_GETIMAGEBUFFER and MCI_SETIMAGEBUFFER msg */
  615. /*********************************************************************/
  616.  
  617. #define MCI_USE_HW_BUFFER                   0x00000400L
  618. #define MCI_GET_HW_BUFFER_PTR               0x00000800L
  619.  
  620.    /***************************************************/
  621.    /* parm structure for MCI_GETIMAGEBUFFER and       */
  622.    /*                    MCI_SETIMAGEBUFFER messages  */
  623.    /***************************************************/
  624. typedef  struct {
  625.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  626.     DWORD   dwPelFormat;     /* Format of the image data returned       */
  627.     WORD    wBitCount;       /* Number of bitsimage data returned       */
  628.     WORD    wReserved0;      /* Reserved field                          */
  629.     DWORD   dwImageCompression; /*                                      */
  630.     RECTL   rect;            /* Image area to get/set                   */
  631.     PVOID   pPelBuffer;      /* Pel data buffer                         */
  632.     DWORD   dwPelBufferHeight; /* Number of rows in buffer              */
  633.     DWORD   dwPelBufferWidth;  /* Pels per row in buffer                */
  634.     DWORD   dwBufLen;        /* Pel data buffer length in bytes         */
  635.  
  636. } MCI_IMAGE_PARMS;
  637. typedef MCI_IMAGE_PARMS   *LPMCI_IMAGE_PARMS;
  638.  
  639. /*********************************************************************/
  640. /* flags for the MCI_GETIMAGEPALETTE message                         */
  641. /*     0x0000XX00 are reserved for MCI_GETIMAGEPALETTE flags         */
  642. /*********************************************************************/
  643. #define MCI_FIND_BEST_REGISTERED            0x00000100L
  644. #define MCI_QUERY_REGISTERED_MAP            0x00000200L
  645. #define MCI_QUERY_REGISTERED_MAP_SIZE       0x00000400L
  646.  
  647.  
  648.    /***************************************************/
  649.    /* parameter structure for MCI_GETIMAGEPALETTE and */
  650.    /*    MCI_SETIMAGEPALETTE messages                 */
  651.    /***************************************************/
  652. typedef  struct {
  653.     DWORD   dwCallback;      /* PM window handle for MCI notify message   */
  654.     WORD    wRegisteredMap;  /* Id of the palette from the registed color */
  655.                              /* map                                       */
  656.     WORD    wReserved0;      /* Reserved field                            */
  657.     DWORD   dwPalEntries;    /* size of the palette returned              */
  658.     PVOID   pPalette;        /* pointer to the palette                    */
  659. } MCI_PALETTE_PARMS;
  660. typedef MCI_PALETTE_PARMS   *LPMCI_PALETTE_PARMS;
  661.  
  662. /*********************************************************************/
  663. /* Parameter structure for the MCI_GETTOC message                    */
  664. /*********************************************************************/
  665. typedef struct {
  666.     BYTE      TrackNum;      /* Returned Track Number                          */
  667.     DWORD     dwStartAddr;   /* Starting address of the track in MMTIME format */
  668.     DWORD     dwEndAddr;     /* Ending address of the track in MMTIME format   */
  669.     BYTE      Control;       /* Track Control information                      */
  670.     WORD      wCountry;      /* Country                                        */
  671.     DWORD     dwOwner;       /* Owner                                          */
  672.     DWORD     dwSerialNum;   /* Serial Number                                  */
  673. } MCI_TOC_REC;
  674. typedef MCI_TOC_REC   *LPTOCREC;
  675.  
  676. typedef struct {
  677.     DWORD     dwCallback;    /* PM window handle for MCI notify message    */
  678.     LPTOCREC  lpBuf;         /* Pointer to array MCI_TOC_REC structures to */
  679.                              /* be filled in by the mci device             */
  680.     DWORD     dwBufSize;     /* Size of the array                          */
  681. } MCI_TOC_PARMS;
  682. typedef MCI_TOC_PARMS   * LPMCI_TOC_PARMS;
  683.  
  684. /*********************************************************************/
  685. /* parameters for the MCI_GROUP message                              */
  686. /*     0x00XXXX00 are reserved for MCI_GROUP flags                   */
  687. /*********************************************************************/
  688. #define MCI_SYNCHRONIZE                     0x00000100L
  689. #define MCI_NOPIECEMEAL                     0x00000200L
  690. #define MCI_GROUP_MAKE                      0x00000400L
  691. #define MCI_GROUP_DELETE                    0x00000800L
  692. #define MCI_GROUP_ALIAS                     0x00001000L
  693. #define MCI_GROUP_DEVICE_IDS                0x00002000L
  694. #define MCI_GROUP_DEVICE_ALIASES            0x00004000L
  695.  
  696. typedef struct {
  697.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  698.     WORD    wGroupID;        /* GroupID                                 */
  699.     WORD    wReserved0;      /* Reserved field                          */
  700.     PSZ     szGroupAlias;    /*                                         */
  701.     MMTIME  mmTime;          /*                                         */
  702.     ULONG   ulDevices[10];   /*                                         */
  703. } MCI_GROUP_PARMS;
  704. typedef MCI_GROUP_PARMS *LPMCI_GROUP_PARMS;
  705.  
  706.  
  707. /*********************************************************************/
  708. /* flags for the MCI_INFO message                                    */
  709. /*     0x00000X00 are reserved for MCI_INFO flags                    */
  710. /*********************************************************************/
  711. #define MCI_INFO_PRODUCT                    0x00000100L
  712. #define MCI_INFO_FILE                       0x00000200L
  713.  
  714.     /************************************************/
  715.     /* CD Audio                MCI_INFO             */
  716.     /************************************************/
  717. #define MCI_CD_INFO_ID                      0x00010000L
  718. #define MCI_CD_INFO_UPC                     0x00020000L
  719.  
  720.     /************************************************/
  721.     /* Videodisc               MCI_INFO             */
  722.     /************************************************/
  723. #define MCI_VD_INFO_LABEL                   0x00001000L
  724.  
  725.     /************************************************/
  726.     /* Digital Video           MCI_INFO             */
  727.     /************************************************/
  728. #define MCI_DGV_INFO_VIDEO_FILE             0x00001000L
  729. #define MCI_DGV_INFO_IMAGE_FILE             0x00002000L
  730. #define MCI_DGV_INFO_TEXT                   0x00010000L
  731.  
  732.     /************************************************/
  733.     /* Video Overlay           MCI_INFO             */
  734.     /************************************************/
  735. #define MCI_OVLY_INFO_TEXT                  0x00010000L
  736.  
  737.  
  738. typedef struct {
  739.     DWORD     dwCallback;    /* PM window handle for MCI notify message */
  740.     LPSTR     lpstrReturn;   /* Pointer to return buffer                */
  741.     DWORD     dwRetSize;     /* Return buffer size                      */
  742. } MCI_INFO_PARMS;
  743. typedef MCI_INFO_PARMS   *LPMCI_INFO_PARMS;
  744.  
  745. /*********************************************************************/
  746. /* parameters and flags for the MCI_LOAD message                     */
  747. /*     0x00000X00 are reserved for MCI_LOAD flags                    */
  748. /*********************************************************************/
  749. typedef struct {
  750.     DWORD  dwCallback;       /* PM window handle for MCI notify message */
  751.     LPSTR  lpstrElementName; /* File name to loads                      */
  752. } MCI_LOAD_PARMS;
  753. typedef MCI_LOAD_PARMS   *LPMCI_LOAD_PARMS;
  754.  
  755. /*********************************************************************/
  756. /* parameters and flags for the MCI_MASTERAUDIO                      */
  757. /*     0x000XXX00 are reserved for MCI_MASTERAUDIO  flags            */
  758. /*********************************************************************/
  759. #define MCI_ON                              0x00000100L
  760. #define MCI_OFF                             0x00000200L
  761. #define MCI_HEADPHONES                      0x00000400L
  762. #define MCI_SPEAKERS                        0x00000800L
  763. #define MCI_MASTERVOL                       0x00001000L
  764. #define MCI_SAVESETTING                     0x00002000L
  765. #define MCI_QUERYSAVEDSETTING               0x00004000L
  766. #define MCI_QUERYCURRENTSETTING             0x00008000L
  767.  
  768.  
  769. typedef struct {
  770.     DWORD   dwDummyCallback; /* PM window handle for MCI notify message */
  771.     DWORD   dwReturn;        /* Return field for query information      */
  772.     DWORD   dwMasterVolume;  /* Master volume field                     */
  773. } MCI_MASTERAUDIO_PARMS;
  774. typedef MCI_MASTERAUDIO_PARMS   *LPMCI_MASTERAUDIO_PARMS;
  775.  
  776. /*********************************************************************/
  777. /* parameters and flags for the MCI_OPEN message                     */
  778. /*     0x0000XX00 are reserved for MCI_OPEN flags                    */
  779. /*********************************************************************/
  780. #define MCI_OPEN_ELEMENT                    0x00000100L
  781. #define MCI_OPEN_ALIAS                      0x00000200L
  782. #define MCI_OPEN_ELEMENT_ID                 0x00000400L
  783. #define MCI_OPEN_PLAYLIST                   0x00000800L
  784. #define MCI_OPEN_TYPE_ID                    0x00001000L
  785. #define MCI_OPEN_SHAREABLE                  0x00002000L
  786. #define MCI_OPEN_MMIO                       0x00004000L
  787. #define MCI_READONLY                        0x00008000L
  788.  
  789.     /***************************************************/
  790.     /* parameters and flags for the MCI_OPEN message   */
  791.     /* Digital Video, Video Overlay specific           */
  792.     /***************************************************/
  793. #define MCI_VID_OPEN_PARENT                 0x01000000L
  794. #define MCI_DGV_OPEN_PARENT                 MCI_VID_OPEN_PARENT
  795. #define MCI_OVLY_OPEN_PARENT                MCI_VID_OPEN_PARENT
  796.  
  797. typedef struct {
  798.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  799.     WORD    wDeviceID;       /* Device ID returned to user              */
  800.     WORD    wReserved0;      /* Reserved                                */
  801.     LPSTR   lpstrDeviceType; /* Device name from SYSTEM.INI             */
  802.     LPSTR   lpstrElementName;/* Typically a file name or NULL           */
  803.     LPSTR   lpstrAlias;      /* Optional device alias                   */
  804. } MCI_OPEN_PARMS;
  805. typedef MCI_OPEN_PARMS   *LPMCI_OPEN_PARMS;
  806.  
  807.     /**********************************************************/
  808.     /* parameters for the AMP MCI_OPEN message                */
  809.     /**********************************************************/
  810. typedef struct {
  811.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  812.     WORD    wDeviceID;       /* Device ID returned to user              */
  813.     WORD    wReserved0;      /* Reserved field                          */
  814.     LPSTR   lpstrDeviceType; /* Device name from SYSTEM.INI             */
  815.     LPSTR   lpstrElementName;/* Typically a file name or NULL           */
  816.     LPSTR   lpstrAlias;      /* Optional device alias                   */
  817.     ULONG   ulDevDataPtr;    /* Pointer to device data                  */
  818. } MCI_AMP_OPEN_PARMS;
  819. typedef MCI_AMP_OPEN_PARMS   *LPMCI_AMP_OPEN_PARMS;
  820.  
  821.     /**********************************************************/
  822.     /* parameters for MCI_OPEN message for video devices      */
  823.     /**********************************************************/
  824.  
  825. typedef  struct {
  826.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  827.     WORD    wDeviceID;       /* Device ID returned to user              */
  828.     WORD    wReserved0;      /* Reserved field                          */
  829.     LPSTR   lpstrDeviceType; /* Device name from SYSTEM.INI             */
  830.     LPSTR   lpstrElementName;/* Typically a file name or NULL           */
  831.     LPSTR   lpstrAlias;      /* Optional device alias                   */
  832.     HWND    hwndParent;      /* Parent window handle                    */
  833. } MCI_VID_OPEN_PARMS;
  834.  
  835. typedef MCI_VID_OPEN_PARMS   MCI_DGV_OPEN_PARMS;
  836. typedef MCI_DGV_OPEN_PARMS   *LPMCI_DGV_OPEN_PARMS;
  837.  
  838. typedef MCI_VID_OPEN_PARMS    MCI_OVLY_OPEN_PARMS;
  839. typedef MCI_OVLY_OPEN_PARMS   *LPMCI_OVLY_OPEN_PARMS;
  840.  
  841.     /***************************************************/
  842.     /* MCI_PLAY flag values for videodisc              */
  843.     /***************************************************/
  844. #define MCI_VD_PLAY_REVERSE                 0x00001000L
  845. #define MCI_VD_PLAY_FAST                    0x00002000L
  846. #define MCI_VD_PLAY_SPEED                   0x00004000L
  847. #define MCI_VD_PLAY_SCAN                    0x00008000L
  848. #define MCI_VD_PLAY_SLOW                    0x00010000L
  849.  
  850.     /***************************************************/
  851.     /* MCI_PLAY flag values for digital video          */
  852.     /***************************************************/
  853. #define MCI_DGV_PLAY_REVERSE                0x00001000L
  854. #define MCI_DGV_PLAY_FAST                   0x00002000L
  855. #define MCI_DGV_PLAY_SPEED                  0x00004000L
  856. #define MCI_DGV_PLAY_SCAN                   0x00008000L
  857. #define MCI_DGV_PLAY_SLOW                   0x00010000L
  858. #define MCI_DGV_PLAY_REPEAT                 0x00020000L
  859.  
  860. typedef struct {
  861.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  862.     DWORD   dwFrom;          /* Play from this position                 */
  863.     DWORD   dwTo;            /* Play to this position                   */
  864. } MCI_PLAY_PARMS;
  865. typedef MCI_PLAY_PARMS   *LPMCI_PLAY_PARMS;
  866.  
  867. typedef struct {
  868.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  869.     DWORD   dwFrom;          /* Play from this position                 */
  870.     DWORD   dwTo;            /* Play to this position                   */
  871.     DWORD   dwFactor;        /* Play at this speed factor               */
  872. } MCI_VD_PLAY_PARMS;
  873. typedef MCI_VD_PLAY_PARMS   *LPMCI_VD_PLAY_PARMS;
  874.  
  875. typedef  struct {
  876.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  877.     DWORD   dwFrom;          /* Play from this position                 */
  878.     DWORD   dwTo;            /* Play to this position                   */
  879.     DWORD   dwSpeed;         /* Specifies the play rate in frames per second */
  880. } MCI_DGV_PLAY_PARMS;
  881. typedef MCI_DGV_PLAY_PARMS   *LPMCI_DGV_PLAY_PARMS;
  882.  
  883. /*********************************************************************/
  884. /* parameters for the MCI_PUT  message                               */
  885. /*     0x00000X00 are reserved for MCI_PUT  flags                    */
  886. /*********************************************************************/
  887. #define MCI_VID_PUT_RECT                    0x00000100L
  888. #define MCI_VID_PUT_DESTINATION             0x00000200L
  889. #define MCI_VID_PUT_SOURCE                  0x00000400L
  890.  
  891. #define MCI_DGV_PUT_RECT                    MCI_VID_PUT_RECT
  892. #define MCI_DGV_PUT_DESTINATION             MCI_VID_PUT_DESTINATION
  893. #define MCI_DGV_PUT_SOURCE                  MCI_VID_PUT_SOURCE
  894.  
  895. #define MCI_OVLY_PUT_RECT                   MCI_VID_PUT_RECT
  896. #define MCI_OVLY_PUT_DESTINATION            MCI_VID_PUT_DESTINATION
  897. #define MCI_OVLY_PUT_SOURCE                 MCI_VID_PUT_SOURCE
  898.  
  899.     /***************************************************/
  900.     /* Rectangle parameters for MCI_PUT, MCI_WHERE,    */
  901.     /* MCI_FREEZE, and MCI_UNFREEZE                    */
  902.     /***************************************************/
  903.  
  904. typedef  struct {
  905.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  906.     RECTL   rc;              /* rectangle array specifying the offset   */
  907.                              /* and size of a rectangle                 */
  908. } MCI_VID_RECT_PARMS;
  909.  
  910. typedef MCI_VID_RECT_PARMS   MCI_DGV_RECT_PARMS;
  911. typedef MCI_DGV_RECT_PARMS   *LPMCI_DGV_RECT_PARMS;
  912.  
  913. typedef MCI_VID_RECT_PARMS   MCI_OVLY_RECT_PARMS;
  914. typedef MCI_OVLY_RECT_PARMS  *LPMCI_OVLY_RECT_PARMS;
  915.  
  916. /*********************************************************************/
  917. /* parameters for the MCI_RECORD message                             */
  918. /*     0x00000X00 are reserved for MCI_RECORD flags                  */
  919. /*********************************************************************/
  920. #define MCI_RECORD_INSERT                   0x00000100L
  921. #define MCI_RECORD_OVERWRITE                0x00000200L
  922.  
  923. #define MCI_DGV_RECORD_RECT                 0x00000400L
  924.  
  925. typedef struct {
  926.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  927.     DWORD   dwFrom;          /* Record from position                    */
  928.     DWORD   dwTo;            /* Record to position                      */
  929. } MCI_RECORD_PARMS;
  930. typedef MCI_RECORD_PARMS   *LPMCI_RECORD_PARMS;
  931.  
  932. /*********************************************************************/
  933. /* parameters for the MCI_RESTORE message                            */
  934. /*     0x00000X00 are reserved for MCI_RESTORE flags                 */
  935. /*********************************************************************/
  936. #define MCI_RESTORE_SRC_RECT                0x00000100L
  937. #define MCI_RESTORE_DEST_RECT               0x00000200L
  938.  
  939. typedef struct {
  940.     DWORD   dwCallback;      /* PM window handle for MCI notify message     */
  941.     RECTL   SrcRect;         /* Rectangle array specifying the source       */
  942.                              /* area to be restored                                 */
  943.     RECTL   DestRect;        /* Rectangle array specifying the destination  */
  944.                              /* area to be restored                         */
  945. } MCI_RESTORE_PARMS;
  946. typedef MCI_RESTORE_PARMS   *LPMCI_RESTORE_PARMS;
  947.  
  948. /*********************************************************************/
  949. /* parameters for the MCI_SAVE  message                              */
  950. /*     0x00000X00 are reserved for MCI_SAVE  flags                   */
  951. /*********************************************************************/
  952. #define MCI_SAVE_FILE                       0x00000100L
  953.  
  954.     /*************************************************/
  955.     /* Digital Video               MCI_SAVE          */
  956.     /*************************************************/
  957.  
  958. #define MCI_DGV_SAVE_VIDEO_FILE             0x00001000L
  959. #define MCI_DGV_SAVE_IMAGE_FILE             0x00002000L
  960.  
  961. typedef struct {
  962.     DWORD   dwCallback;      /* PM window handle for MCI notify message     */
  963.     DWORD   lpFileName;      /* Filename to save data to                    */
  964. } MCI_SAVE_PARMS;
  965. typedef MCI_SAVE_PARMS   *LPMCI_SAVE_PARMS;
  966.  
  967. /*********************************************************************/
  968. /* parameters for the MCI_SEEK message                               */
  969. /*     0x00000X00 are reserved for MCI_SEEK flags                    */
  970. /*********************************************************************/
  971. #define MCI_TO_START                        0x00000100L
  972. #define MCI_TO_END                          0x00000200L
  973.  
  974.     /*************************************************/
  975.     /* Videodisc                   MCI_SEEK          */
  976.     /*************************************************/
  977. #define MCI_VD_SEEK_REVERSE                 0x00001000L
  978.  
  979. typedef struct {
  980.     DWORD   dwCallback;      /* PM window handle for MCI notify message     */
  981.     DWORD   dwTo;            /* Seek to this position                       */
  982. } MCI_SEEK_PARMS;
  983. typedef MCI_SEEK_PARMS   *LPMCI_SEEK_PARMS;
  984.  
  985. /*********************************************************************/
  986. /* Flags for the MCI_SET message                                     */
  987. /*     0x00XXXX00 are reserved for MCI_SET  flags                    */
  988. /*********************************************************************/
  989. #define MCI_SET_ITEM                        0x00000100L
  990. #define MCI_SET_ON                          0x00000200L
  991. #define MCI_SET_OFF                         0x00000400L
  992. #define MCI_SET_VIDEO                       0x00000800L
  993. #define MCI_SET_AUDIO                       0x00001000L
  994. #define MCI_SET_DOOR_OPEN                   0x00002000L
  995. #define MCI_SET_DOOR_CLOSED                 0x00004000L
  996. #define MCI_SET_SPEED_FORMAT                0x00008000L
  997. #define MCI_SET_TIME_FORMAT                 0x00010000L
  998. #define MCI_SET_DOOR_LOCK                   0x00020000L
  999. #define MCI_SET_DOOR_UNLOCK                 0x00040000L
  1000. #define MCI_SET_VOLUME                      0x00080000L
  1001.  
  1002. /*******************************************************/
  1003. /* Values for the dwAudio field                        */
  1004. /*******************************************************/
  1005. #define MCI_SET_AUDIO_ALL                   0x00000000L
  1006. #define MCI_SET_AUDIO_LEFT                  0x00000001L
  1007. #define MCI_SET_AUDIO_RIGHT                 0x00000002L
  1008.  
  1009. /*******************************************************/
  1010. /* MCI_SET flags for amp/mixer                         */
  1011. /*******************************************************/
  1012. #define MCI_AMP_SET_BALANCE                 0x00100000L
  1013. #define MCI_AMP_SET_PITCH                   0x00200000L
  1014. #define MCI_AMP_SET_TREBLE                  0x00400000L
  1015. #define MCI_AMP_SET_BASS                    0x00800000L
  1016. #define MCI_AMP_SET_GAIN                    0x01000000L
  1017.  
  1018. /*******************************************************/
  1019. /* General MCI_SET item values                         */
  1020. /*******************************************************/
  1021. #define MCI_SET_MONITOR                     0x00000001L
  1022. #define MCI_SET_MONITOR_AUDIO               0x00000002L
  1023. #define MCI_SET_MONITOR_VIDEO               0x00000003L
  1024. #define MCI_SET_RECORD                      0x00000004L
  1025.  
  1026. /*******************************************************/
  1027. /* MCI_SET item values for amp/mixer                   */
  1028. /*******************************************************/
  1029. #define MCI_AMP_SET_MONITOR                 MCI_SET_MONITOR_AUDIO
  1030.  
  1031. /*******************************************************/
  1032. /* MCI_SET flags for CDXA                              */
  1033. /*******************************************************/
  1034. #define MCI_CDXA_SET_CHANNEL                0x01000000L
  1035. #define MCI_CDXA_AUDIO_DEVICE               0x10000000L
  1036. #define MCI_CDXA_AUDIO_BUFFER               0x02000000L
  1037. #define MCI_CDXA_VIDEO_BUFFER               0x04000000L
  1038. #define MCI_CDXA_DATA_BUFFER                0x08000000L
  1039.  
  1040. /*******************************************************/
  1041. /* MCI_SET flags for videodisc                         */
  1042. /*******************************************************/
  1043. #define MCI_VD_SET_ON                       MCI_SET_ON
  1044. #define MCI_VD_SET_OFF                      MCI_SET_OFF
  1045. #define MCI_VD_SET_VIDEO                    MCI_SET_VIDEO
  1046. #define MCI_VD_SET_CHANNEL                  0x00100000L
  1047. #define MCI_VD_SET_DISPLAY                  0x00200000L
  1048.  
  1049. /*******************************************************/
  1050. /* Generic MCI_SET item values for video devices       */
  1051. /*******************************************************/
  1052. #define MCI_VID_SET_VIDEO_COMPRESSION           MCI_VID_ITEM_BASE
  1053. #define MCI_VID_SET_IMAGE_COMPRESSION           (MCI_VID_ITEM_BASE+1)
  1054. #define MCI_VID_SET_IMAGE_BITSPERPEL            (MCI_VID_ITEM_BASE+2)
  1055. #define MCI_VID_SET_IMAGE_PELFORMAT             (MCI_VID_ITEM_BASE+3)
  1056. #define MCI_VID_SET_BRIGHTNESS                  (MCI_VID_ITEM_BASE+4)
  1057. #define MCI_VID_SET_CONTRAST                    (MCI_VID_ITEM_BASE+5)
  1058. #define MCI_VID_SET_HUE                         (MCI_VID_ITEM_BASE+6)
  1059. #define MCI_VID_SET_SATURATION                  (MCI_VID_ITEM_BASE+7)
  1060. #define MCI_VID_SET_SHARPNESS                   (MCI_VID_ITEM_BASE+8)
  1061. #define MCI_VID_SET_GREYSCALE                   (MCI_VID_ITEM_BASE+9)
  1062. #define MCI_VID_SET_IMAGE_QUALITY               (MCI_VID_ITEM_BASE+10)
  1063. #define MCI_VID_SET_VIDEO_QUALITY               (MCI_VID_ITEM_BASE+11)
  1064. #define MCI_VID_SET_IMAGE_COMPRESSION_METHOD    (MCI_VID_ITEM_BASE+12)
  1065. #define MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE  (MCI_VID_ITEM_BASE+13)
  1066. #define MCI_VID_SET_IMAGE_FILE_FORMAT           (MCI_VID_ITEM_BASE+14)
  1067. /*******************************************************/
  1068. /* MCI_SET item values for video overlay               */
  1069. /*******************************************************/
  1070. #define MCI_OVLY_SET_IMAGE_COMPRESSION          MCI_VID_SET_IMAGE_COMPRESSION
  1071. #define MCI_OVLY_SET_IMAGE_BITSPERPEL           MCI_VID_SET_IMAGE_BITSPERPEL
  1072. #define MCI_OVLY_SET_IMAGE_PELFORMAT            MCI_VID_SET_IMAGE_PELFORMAT
  1073. #define MCI_OVLY_SET_BRIGHTNESS                 MCI_VID_SET_BRIGHTNESS
  1074. #define MCI_OVLY_SET_CONTRAST                   MCI_VID_SET_CONTRAST
  1075. #define MCI_OVLY_SET_HUE                        MCI_VID_SET_HUE
  1076. #define MCI_OVLY_SET_SATURATION                 MCI_VID_SET_SATURATION
  1077. #define MCI_OVLY_SET_SHARPNESS                  MCI_VID_SET_SHARPNESS
  1078. #define MCI_OVLY_SET_GREYSCALE                  MCI_VID_SET_GREYSCALE
  1079. #define MCI_OVLY_SET_IMAGE_QUALITY              MCI_VID_SET_IMAGE_QUALITY
  1080. #define MCI_OVLY_SET_IMAGE_COMPRESSION_METHOD   MCI_VID_SET_IMAGE_COMPRESSION_METHOD
  1081. #define MCI_OVLY_SET_MINIMUM_VIDEO_REFRESH_RATE MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE
  1082. #define MCI_OVLY_SET_IMAGE_FILE_FORMAT          MCI_VID_SET_IMAGE_FILE_FORMAT
  1083.  
  1084. /*******************************************************/
  1085. /* MCI_SET item values for digital video               */
  1086. /*******************************************************/
  1087. #define MCI_DGV_SET_VIDEO_COMPRESSION           MCI_VID_SET_VIDEO_COMPRESSION
  1088. #define MCI_DGV_SET_IMAGE_COMPRESSION           MCI_VID_SET_IMAGE_COMPRESSION
  1089. #define MCI_DGV_SET_IMAGE_BITSPERPEL            MCI_VID_SET_IMAGE_BITSPERPEL
  1090. #define MCI_DGV_SET_IMAGE_PELFORMAT             MCI_VID_SET_IMAGE_PELFORMAT
  1091. #define MCI_DGV_SET_BRIGHTNESS                  MCI_VID_SET_BRIGHTNESS
  1092. #define MCI_DGV_SET_CONTRAST                    MCI_VID_SET_CONTRAST
  1093. #define MCI_DGV_SET_HUE                         MCI_VID_SET_HUE
  1094. #define MCI_DGV_SET_SATURATION                  MCI_VID_SET_SATURATION
  1095. #define MCI_DGV_SET_SHARPNESS                   MCI_VID_SET_SHARPNESS
  1096. #define MCI_DGV_SET_GREYSCALE                   MCI_VID_SET_GREYSCALE
  1097. #define MCI_DGV_SET_IMAGE_QUALITY               MCI_VID_SET_IMAGE_QUALITY
  1098. #define MCI_DGV_SET_VIDEO_QUALITY               MCI_VID_SET_VIDEO_QUALITY
  1099. #define MCI_DGV_SET_IMAGE_COMPRESSION_METHOD    MCI_VID_SET_IMAGE_COMPRESSION_METHOD
  1100. #define MCI_DGV_SET_MONITOR                     MCI_SET_MONITOR
  1101. #define MCI_DGV_SET_MINIMUM_VIDEO_REFRESH_RATE  MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE
  1102. #define MCI_DGV_SET_IMAGE_FILE_FORMAT           MCI_VID_SET_IMAGE_FILE_FORMAT
  1103.  
  1104. #define MCI_DGV_SET_AUDIO_COMPRESSION           MCI_DGV_ITEM_BASE
  1105. #define MCI_DGV_SET_AUDIO_QUALITY               (MCI_DGV_ITEM_BASE+1)
  1106.  
  1107. /*******************************************************/
  1108. /* Audio/video/image compression types                 */
  1109. /*******************************************************/
  1110. #define MCI_AUD_COMP_ADPCM4          0x00000001L
  1111. #define MCI_AUD_COMP_PCM8            0x00000002L
  1112.  
  1113. #define MCI_VID_COMP_RTV_2_0         0x00000101L
  1114. #define MCI_VID_COMP_RTV_2_1         0x00000102L
  1115.  
  1116. #define MCI_IMG_COMP_NONE            0x00000201L
  1117. #define MCI_IMG_COMP_PIC9_1_0        0x00000202L
  1118. #define MCI_IMG_COMP_PIC16_1_0       0x00000203L
  1119. #define MCI_IMG_COMP_JPEG9           0x00000204L
  1120. #define MCI_IMG_COMP_BMP_RLE4        0x00000205L
  1121. #define MCI_IMG_COMP_BMP_RLE8        0x00000206L
  1122. #define MCI_IMG_COMP_JPEGN           0x00000207L
  1123.  
  1124. /*******************************************************/
  1125. /* Audio/video/image quality levels                    */
  1126. /*******************************************************/
  1127. #define MCI_AUD_QUALITY_HIGH         0x00000001L
  1128. #define MCI_AUD_QUALITY_MED          0x00000002L
  1129. #define MCI_AUD_QUALITY_LOW          0x00000003L
  1130.  
  1131. #define MCI_VID_QUALITY_HIGH         0x00000101L
  1132. #define MCI_VID_QUALITY_MED          0x00000102L
  1133. #define MCI_VID_QUALITY_LOW          0x00000103L
  1134. #define MCI_VID_QUALITY_BEST         MCI_VID_QUALITY_HIGH
  1135. #define MCI_VID_QUALITY_CDROM        MCI_VID_QUALITY_MED
  1136. #define MCI_VID_QUALITY_COMPACT      MCI_VID_QUALITY_LOW
  1137. #define MCI_VID_QUALITY_BETTER       MCI_VID_QUALITY_MED
  1138. #define MCI_VID_QUALITY_GOOD         MCI_VID_QUALITY_LOW
  1139.  
  1140. #define MCI_IMG_QUALITY_HIGH         0x00000201L
  1141. #define MCI_IMG_QUALITY_MED          0x00000202L
  1142. #define MCI_IMG_QUALITY_LOW          0x00000203L
  1143.  
  1144. /*******************************************************/
  1145. /* MCI_SET flags for wave audio                        */
  1146. /*******************************************************/
  1147. #define MCI_WAVE_SET_SAMPLESPERSEC          0x01000000L
  1148. #define MCI_WAVE_SET_AVGBYTESPERSEC         0x02000000L
  1149. #define MCI_WAVE_SET_BLOCKALIGN             0x04000000L
  1150. #define MCI_WAVE_SET_FORMATTAG              0x08000000L
  1151. #define MCI_WAVE_SET_CHANNELS               0x10000000L
  1152. #define MCI_WAVE_SET_BITSPERSAMPLE          0x80000000L
  1153.  
  1154. /*******************************************************/
  1155. /* Wave format tag defines                             */
  1156. /*******************************************************/
  1157. #define MCI_WAVE_FORMAT_PCM                 DATATYPE_WAVEFORM
  1158. #define MCI_WAVE_FORMAT_AVC_ADPCM           DATATYPE_ADPCM_AVC
  1159.  
  1160. /*******************************************************/
  1161. /* MCI_SET flags for sequencer                         */
  1162. /*******************************************************/
  1163. #define MCI_SEQ_SET_TEMPO                   0x00100000L
  1164. #define MCI_SEQ_SET_PORT                    0x00200000L
  1165. #define MCI_SEQ_ENABLE_PORT_MAPPER          0x00400000L
  1166. #define MCI_SEQ_DISABLE_PORT_MAPPER         0x00800000L
  1167. #define MCI_SEQ_SET_OFFSET                  0x01000000L
  1168. #define MCI_SEQ_SET_MASTER                  0x02000000L
  1169. #define MCI_SEQ_SET_SLAVE                   0x04000000L
  1170.  
  1171.    /**********************************************/
  1172.    /* SEQ time formats                           */
  1173.    /**********************************************/
  1174.    #define MCI_SEQ_SET_SMPTE_24             0x00000100L
  1175.    #define MCI_SEQ_SET_SMPTE_25             0x00000200L
  1176.    #define MCI_SEQ_SET_SMPTE_30             0x00000300L
  1177.    #define MCI_SEQ_SET_SMPTE_30DROP         0x00000400L
  1178.    #define MCI_SEQ_SET_SONGPTR              0x00000500L
  1179.  
  1180.    /**********************************************/
  1181.    /* SEQ synchronization types                  */
  1182.    /**********************************************/
  1183.    #define MCI_SEQ_MIDI                     0x00000001L
  1184.    #define MCI_SEQ_SMPTE                    0x00000002L
  1185.    #define MCI_SEQ_FILE                     0x00000003L
  1186.    #define MCI_SEQ_NONE                     0x00000004L
  1187.  
  1188.    /**********************************************/
  1189.    /* SEQ PORT TYPES                             */
  1190.    /**********************************************/
  1191.    #define MCI_SET_NONE                     0x10000000L
  1192.    #define MIDI_MAPPER                      0x20000000L
  1193.    #define MCI_MIDI_MAPPER                  MIDI_MAPPER
  1194.  
  1195. typedef struct {
  1196.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1197.     DWORD   dwTimeFormat;    /* Time format to be used by the device           */
  1198.     DWORD   dwSpeedFormat;   /* Speed format used by this device               */
  1199.     DWORD   dwAudio;         /* Channel number for this operation              */
  1200.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1201.                              /*  MCI_SET_AUDIO_ALL)                            */
  1202.     DWORD   dwLevel;         /* Volume, treble or bass level as % of max.      */
  1203.     DWORD   dwOver;          /* Delay time for vectored change in milliseconds */
  1204.     DWORD   dwItem;          /* Item field for set item flags                  */
  1205.     DWORD   dwValue;         /* Value associated with item flag                */
  1206. } MCI_SET_PARMS;
  1207. typedef MCI_SET_PARMS       *LPMCI_SET_PARMS;
  1208.  
  1209. typedef MCI_SET_PARMS       MCI_AMP_SET_PARMS;
  1210. typedef MCI_AMP_SET_PARMS   *LPMCI_AMP_SET_PARMS;
  1211.  
  1212. typedef MCI_SET_PARMS       MCI_DGV_SET_PARMS;
  1213. typedef MCI_DGV_SET_PARMS   *LPMCI_DGV_SET_PARMS;
  1214.  
  1215. typedef MCI_SET_PARMS       MCI_OVLY_SET_PARMS;
  1216. typedef MCI_OVLY_SET_PARMS  *LPMCI_OVLY_SET_PARMS;
  1217.  
  1218. typedef struct {
  1219.     DWORD   dwCallback;
  1220.     DWORD   dwTimeFormat;    /* Time format to be used by the device           */
  1221.     DWORD   dwSpeedFormat;   /* Speed format used by this device               */
  1222.     DWORD   dwAudio;         /* Channel number for this operation              */
  1223.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1224.                              /*  MCI_SET_AUDIO_ALL)                            */
  1225.     DWORD   dwLevel;         /* Volume, treble or bass level as % of max.      */
  1226.     DWORD   dwOver;          /* Delay time for vectored change in milliseconds */
  1227.     DWORD   dwItem;          /* Item field for set item flags                  */
  1228.     DWORD   dwValue;         /* Value associated with item flag                */
  1229.     DWORD   dwChannel;       /* Channel number                                 */
  1230.     PVOID   pPlayList;       /* Pointer to play list                           */
  1231.     DWORD   dwPlayListSize;  /* Play list size                                 */
  1232. } MCI_CDXA_SET_PARMS;
  1233. typedef MCI_CDXA_SET_PARMS   *LPMCI_CDXA_SET_PARMS;
  1234.  
  1235. typedef struct {
  1236.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1237.     DWORD   dwTimeFormat;    /* Time format to be used by the device           */
  1238.     DWORD   dwSpeedFormat;   /* Speed format used by this device               */
  1239.     DWORD   dwAudio;         /* Channel number for this operation              */
  1240.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1241.                              /*  MCI_SET_AUDIO_ALL)                            */
  1242.     DWORD   dwLevel;         /* Volume, treble or bass level as % of max.      */
  1243.     DWORD   dwOver;          /* Delay time for vectored change in milliseconds */
  1244.     DWORD   dwItem;          /* Item field for set item flags                  */
  1245.     DWORD   dwValue;         /* Value associated with item flag                */
  1246.     DWORD   dwChannel;       /* Videodisc channel                              */
  1247. } MCI_VD_SET_PARMS;
  1248. typedef MCI_VD_SET_PARMS   *LPMCI_VD_SET_PARMS;
  1249.  
  1250. typedef struct {
  1251.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1252.     DWORD   dwTimeFormat;    /* Time format to be used by the device           */
  1253.     DWORD   dwSpeedFormat;   /* Speed format used by this device               */
  1254.     DWORD   dwAudio;         /* Channel number for this operation              */
  1255.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1256.                              /*  MCI_SET_AUDIO_ALL)                            */
  1257.     DWORD   dwLevel;         /* Volume, trebble or bass level as % of max.     */
  1258.     DWORD   dwOver;          /* Delay time for vectored change in milliseconds */
  1259.     DWORD   dwItem;          /* Item field for set item flags                  */
  1260.     DWORD   dwValue;         /* Value associated with item flag                */
  1261.     WORD    wInput;          /* Channel for input                              */
  1262.     WORD    wReserved0;      /* Reserved field                                 */
  1263.     WORD    wOutput;         /* Channel for output                             */
  1264.     WORD    wReserved1;      /* Reserved field                                 */
  1265.     WORD    wFormatTag;      /* Format tag                                     */
  1266.     WORD    wReserved2;      /* Reserved field                                 */
  1267.     WORD    nChannels;       /* mono(1) or stereo(2)                           */
  1268.     WORD    wReserved3;      /* Reserved field                                 */
  1269.     DWORD   nSamplesPerSec;  /* Samples per seconds                            */
  1270.     DWORD   nAvgBytesPerSec; /* Bytes per seconds                              */
  1271.     WORD    nBlockAlign;     /* Block alignment of data                        */
  1272.     WORD    wReserved4;      /* Reserved field                                 */
  1273.     WORD    wBitsPerSample;  /* Bits per seconds                               */
  1274.     WORD    wReserved5;      /* Reserved field                                 */
  1275. } MCI_WAVE_SET_PARMS;
  1276. typedef MCI_WAVE_SET_PARMS   *LPMCI_WAVE_SET_PARMS;
  1277.  
  1278. typedef struct {
  1279.     DWORD   dwCallback;
  1280.     DWORD   dwTimeFormat;    /* Time format to be used by the device           */
  1281.     DWORD   dwSpeedFormat;   /* Speed format used by this device               */
  1282.     DWORD   dwAudio;         /* Channel number for this operation              */
  1283.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1284.                              /*  MCI_SET_AUDIO_ALL)                            */
  1285.     DWORD   dwLevel;         /* Volume, trebble or bass level as % of max.     */
  1286.     DWORD   dwOver;          /* Delay time for vectored change in milliseconds */
  1287.     DWORD   dwItem;          /* Item field for set item flags                  */
  1288.     DWORD   dwValue;         /* Value associated with item flag                */
  1289.     DWORD   dwTempo;         /* Specified the tempo                            */
  1290.     DWORD   dwPort;          /* Output port                                    */
  1291.     DWORD   dwSlave;         /* Unused field                                   */
  1292.     DWORD   dwMaster;        /* Unused field                                   */
  1293.     DWORD   dwOffset;        /* Specified the data offset                      */
  1294. } MCI_SEQ_SET_PARMS;
  1295. typedef MCI_SEQ_SET_PARMS   *LPMCI_SEQ_SET_PARMS;
  1296.  
  1297.  
  1298. /*********************************************************************/
  1299. /* parameters for the MCI_SET_CUEPOINT message                       */
  1300. /*     0x00000x00 are reserved for MCI_SET_CUEPOINT flags            */
  1301. /*********************************************************************/
  1302. #define MCI_SET_CUEPOINT_ON                 0x00000100L
  1303. #define MCI_SET_CUEPOINT_OFF                0x00000200L
  1304.  
  1305. typedef struct {
  1306.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1307.     DWORD   dwCuepoint;      /* Specifies the cuepoint location                */
  1308.     WORD    wUserParm;       /* User parmameter returned on cuepoint           */
  1309.                              /* notify message                                 */
  1310.     WORD    wReserved0;      /* Reserved field                                 */
  1311. } MCI_CUEPOINT_PARMS;
  1312. typedef MCI_CUEPOINT_PARMS   *LPMCI_CUEPOINT_PARMS;
  1313.  
  1314. /*********************************************************************/
  1315. /* parameters for the MCI_SETIMAGEPALETTE message                    */
  1316. /*     0x000XXX00 are reserved for MCI_SETIMAGEPALETTE flags         */
  1317. /*********************************************************************/
  1318. #define MCI_SET_REGISTERED                  0x00000100L
  1319.  
  1320. /*********************************************************************/
  1321. /* flags and parameter structure for the MCI_SET_POSITION_ADVISE msg */
  1322. /*     0x00000X00 are reserved for MCI_SET_POSITION_ADVISE flags     */
  1323. /*********************************************************************/
  1324. #define MCI_SET_POSITION_ADVISE_ON          0x00000100L
  1325. #define MCI_SET_POSITION_ADVISE_OFF         0x00000200L
  1326.  
  1327. typedef struct {
  1328.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1329.     DWORD   dwUnits;         /* Specifies position change notifiication        */
  1330.                              /* granularity                                    */
  1331.     WORD    wUserParm;       /* User parameter returned on position change     */
  1332.                              /* notification message.                          */
  1333.     WORD    Reserved0;       /* Reserved field                                 */
  1334.     DWORD   Reserved1;       /* Reserved field                                 */
  1335.     } MCI_POSITION_PARMS;
  1336. typedef MCI_POSITION_PARMS   *LPMCI_POSITION_PARMS;
  1337.  
  1338. /*********************************************************************/
  1339. /* parameter structure for the MCI_SET_SYNC_OFFSET message           */
  1340. /*********************************************************************/
  1341. typedef struct {
  1342.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1343.     DWORD   dwOffset;        /* Specifies the device media position offset     */
  1344.                              /* in the currently specified device units.       */
  1345. } MCI_SYNC_OFFSET_PARMS;
  1346. typedef MCI_SYNC_OFFSET_PARMS   *LPMCI_SYNC_OFFSET_PARMS;
  1347.  
  1348. /*********************************************************************/
  1349. /* flags for the MCI_SPIN message                                    */
  1350. /*     0x00000X00 are reserved for MCI_SPIN flags                    */
  1351. /*********************************************************************/
  1352. #define MCI_SPIN_UP                         0x00000100L
  1353. #define MCI_SPIN_DOWN                       0x00000200L
  1354.  
  1355. /*********************************************************************/
  1356. /* MCI_STATUS message flags                                          */
  1357. /*     0x000XXX00 are reserved for MCI_STATUS flags                  */
  1358. /*     MCI_VOLUME and MCI_VOLUME_DELAY are 0x00000100 and 0x00000200 */
  1359. /*********************************************************************/
  1360. #define MCI_STATUS_ITEM                     0x00000100L
  1361. #define MCI_STATUS_START                    0x00000200L
  1362.  
  1363. /*************************************************/
  1364. /* General MCI_STATUS item values                */
  1365. /*************************************************/
  1366. #define MCI_STATUS_CURRENT_TRACK            0x00000001L
  1367. #define MCI_STATUS_LENGTH                   0x00000002L
  1368. #define MCI_STATUS_MODE                     0x00000003L
  1369. #define MCI_STATUS_NUMBER_OF_TRACKS         0x00000004L
  1370. #define MCI_STATUS_POSITION                 0x00000005L
  1371. #define MCI_STATUS_POSITION_IN_TRACK        0x00000006L
  1372. #define MCI_STATUS_MEDIA_PRESENT            0x00000007L
  1373. #define MCI_STATUS_VOLUME                   0x00000008L
  1374. #define MCI_STATUS_READY                    0x00000009L
  1375. #define MCI_STATUS_TIME_FORMAT              0x0000000AL
  1376. #define MCI_STATUS_SPEED_FORMAT             0x0000000BL
  1377. #define MCI_STATUS_MONITOR                  0x0000000CL
  1378.  
  1379. /*************************************************/
  1380. /* MCI_STATUS item values for amp/mixer          */
  1381. /*************************************************/
  1382. #define MCI_AMP_STATUS_PITCH                MCI_AMP_ITEM_BASE
  1383. #define MCI_AMP_STATUS_TREBLE               (MCI_AMP_ITEM_BASE+1)
  1384. #define MCI_AMP_STATUS_BASS                 (MCI_AMP_ITEM_BASE+2)
  1385. #define MCI_AMP_STATUS_BALANCE              (MCI_AMP_ITEM_BASE+3)
  1386. #define MCI_AMP_STATUS_GAIN                 (MCI_AMP_ITEM_BASE+4)
  1387. #define MCI_AMP_STATUS_MONITOR              (MCI_AMP_ITEM_BASE+5)
  1388.  
  1389. /*************************************************/
  1390. /* MCI_STATUS item values for cd audio           */
  1391. /*************************************************/
  1392. #define MCI_CD_STATUS_TRACK_TYPE            MCI_CD_ITEM_BASE
  1393. #define MCI_CD_STATUS_TRACK_COPYPERMITTED   (MCI_CD_ITEM_BASE+1)
  1394. #define MCI_CD_STATUS_TRACK_CHANNELS        (MCI_CD_ITEM_BASE+2)
  1395. #define MCI_CD_STATUS_TRACK_PREEMPHASIS     (MCI_CD_ITEM_BASE+3)
  1396.  
  1397.     /************************************************/
  1398.     /* return values for CD MCI_STATUS message with */
  1399.     /*   MCI_CD_STATUS_TRACK_TYPE set               */
  1400.     /************************************************/
  1401. #define MCI_CD_TRACK_AUDIO                  0x00000001L
  1402. #define MCI_CD_TRACK_DATA                   0x00000002L
  1403. #define MCI_CD_TRACK_OTHER                  0x00000003L
  1404.  
  1405. /*************************************************/
  1406. /* MCI_STATUS item values for CDXA               */
  1407. /*************************************************/
  1408. #define MCI_CDXA_STATUS_CHANNEL             MCI_CDXA_ITEM_BASE
  1409.  
  1410.     /************************************************/
  1411.     /*returned from call for MCI_CDXA_STATUS_CHANNEL*/
  1412.     /************************************************/
  1413. #define MCI_CDXA_NONE                       0x00000000L
  1414.  
  1415.  
  1416. /*************************************************/
  1417. /* MCI_STATUS item values for sequencer          */
  1418. /*************************************************/
  1419. #define MCI_SEQ_STATUS_TEMPO                MCI_SEQ_ITEM_BASE
  1420. #define MCI_SEQ_STATUS_OFFSET               (MCI_SEQ_ITEM_BASE+1)
  1421. #define MCI_SEQ_STATUS_DIVTYPE              (MCI_SEQ_ITEM_BASE+2)
  1422. #define MCI_SEQ_STATUS_MASTER               (MCI_SEQ_ITEM_BASE+3)
  1423. #define MCI_SEQ_STATUS_PORT                 (MCI_SEQ_ITEM_BASE+4)
  1424. #define MCI_SEQ_STATUS_SLAVE                (MCI_SEQ_ITEM_BASE+5)
  1425.  
  1426.    /**********************************************/
  1427.    /* Return value for current division type     */
  1428.    /**********************************************/
  1429. #define MCI_SEQ_DIV_PPQN                    0x00000001L
  1430. #define MCI_SEQ_DIV_SMPTE_24                0x00000002L
  1431. #define MCI_SEQ_DIV_SMPTE_25                0x00000003L
  1432. #define MCI_SEQ_DIV_SMPTE_30DROP            0x00000004L
  1433. #define MCI_SEQ_DIV_SMPTE_30                0x00000005L
  1434.  
  1435.    /*************************************************/
  1436.    /* MCI_STATUS items for videodisc                */
  1437.    /*************************************************/
  1438. #define MCI_VD_STATUS_SPEED                 MCI_VD_ITEM_BASE
  1439. #define MCI_VD_STATUS_FORWARD               (MCI_VD_ITEM_BASE+1)
  1440. #define MCI_VD_MEDIA_TYPE                   (MCI_VD_ITEM_BASE+2)
  1441. #define MCI_VD_STATUS_SIDE                  (MCI_VD_ITEM_BASE+3)
  1442. #define MCI_VD_STATUS_DISC_SIZE             (MCI_VD_ITEM_BASE+4)
  1443.  
  1444.     /***********************************************/
  1445.     /* return values for videodisc status command  */
  1446.     /***********************************************/
  1447. #define MCI_VD_SPEED_NORMAL                 0x00000000L
  1448. #define MCI_VD_SPEED_FAST                   0x00000001L
  1449. #define MCI_VD_SPEED_SLOW                   0x00000002L
  1450.  
  1451. /*************************************************/
  1452. /* MCI_STATUS items for wave audio               */
  1453. /*************************************************/
  1454. #define MCI_WAVE_STATUS_LEVEL               MCI_WAVE_ITEM_BASE
  1455. #define MCI_WAVE_STATUS_SAMPLESPERSEC       (MCI_WAVE_ITEM_BASE+1)
  1456. #define MCI_WAVE_STATUS_AVGBYTESPERSEC      (MCI_WAVE_ITEM_BASE+2)
  1457. #define MCI_WAVE_STATUS_BLOCKALIGN          (MCI_WAVE_ITEM_BASE+3)
  1458. #define MCI_WAVE_STATUS_FORMATTAG           (MCI_WAVE_ITEM_BASE+4)
  1459. #define MCI_WAVE_STATUS_CHANNELS            (MCI_WAVE_ITEM_BASE+5)
  1460. #define MCI_WAVE_STATUS_BITSPERSAMPLE       (MCI_WAVE_ITEM_BASE+6)
  1461.  
  1462. /*************************************************/
  1463. /* Common video MCI_STATUS items                 */
  1464. /*************************************************/
  1465. #define MCI_VID_STATUS_HWND                 MCI_VID_ITEM_BASE
  1466. #define MCI_VID_STATUS_AUDIO_COMPRESSION    (MCI_VID_ITEM_BASE+1)
  1467. #define MCI_VID_STATUS_VIDEO_COMPRESSION    (MCI_VID_ITEM_BASE+2)
  1468. #define MCI_VID_STATUS_IMAGE_COMPRESSION    (MCI_VID_ITEM_BASE+3)
  1469. #define MCI_VID_STATUS_AUDIO_QUALITY        (MCI_VID_ITEM_BASE+4)
  1470. #define MCI_VID_STATUS_VIDEO_QUALITY        (MCI_VID_ITEM_BASE+5)
  1471. #define MCI_VID_STATUS_IMAGE_QUALITY        (MCI_VID_ITEM_BASE+6)
  1472. #define MCI_VID_STATUS_IMAGE_BITSPERPEL     (MCI_VID_ITEM_BASE+7)
  1473. #define MCI_VID_STATUS_IMAGE_PELFORMAT      (MCI_VID_ITEM_BASE+8)
  1474. #define MCI_VID_STATUS_FORWARD              (MCI_VID_ITEM_BASE+9)
  1475. #define MCI_VID_STATUS_NORMAL_RATE          (MCI_VID_ITEM_BASE+10)
  1476. #define MCI_VID_STATUS_VIDEO_X_EXTENT       (MCI_VID_ITEM_BASE+11)
  1477. #define MCI_VID_STATUS_VIDEO_Y_EXTENT       (MCI_VID_ITEM_BASE+12)
  1478. #define MCI_VID_STATUS_IMAGE_X_EXTENT       (MCI_VID_ITEM_BASE+13)
  1479. #define MCI_VID_STATUS_IMAGE_Y_EXTENT       (MCI_VID_ITEM_BASE+14)
  1480. #define MCI_VID_STATUS_BRIGHTNESS           (MCI_VID_ITEM_BASE+15)
  1481. #define MCI_VID_STATUS_CONTRAST             (MCI_VID_ITEM_BASE+16)
  1482. #define MCI_VID_STATUS_HUE                  (MCI_VID_ITEM_BASE+17)
  1483. #define MCI_VID_STATUS_SATURATION           (MCI_VID_ITEM_BASE+18)
  1484. #define MCI_VID_STATUS_GREYSCALE            (MCI_VID_ITEM_BASE+19)
  1485. #define MCI_VID_STATUS_SHARPNESS            (MCI_VID_ITEM_BASE+20)
  1486. #define MCI_VID_STATUS_SPEED                (MCI_VID_ITEM_BASE+21)
  1487. #define MCI_VID_STATUS_IMAGE_FILE_FORMAT    (MCI_VID_ITEM_BASE+22)
  1488.  
  1489. /*************************************************/
  1490. /* MCI_STATUS items for digital video            */
  1491. /*************************************************/
  1492. #define MCI_DGV_STATUS_HWND                 MCI_VID_STATUS_HWND
  1493. #define MCI_DGV_STATUS_AUDIO_COMPRESSION    MCI_VID_STATUS_AUDIO_COMPRESSION
  1494. #define MCI_DGV_STATUS_VIDEO_COMPRESSION    MCI_VID_STATUS_VIDEO_COMPRESSION
  1495. #define MCI_DGV_STATUS_IMAGE_COMPRESSION    MCI_VID_STATUS_IMAGE_COMPRESSION
  1496. #define MCI_DGV_STATUS_AUDIO_QUALITY        MCI_VID_STATUS_AUDIO_QUALITY
  1497. #define MCI_DGV_STATUS_VIDEO_QUALITY        MCI_VID_STATUS_VIDEO_QUALITY
  1498. #define MCI_DGV_STATUS_IMAGE_QUALITY        MCI_VID_STATUS_IMAGE_QUALITY
  1499. #define MCI_DGV_STATUS_IMAGE_BITSPERPEL     MCI_VID_STATUS_IMAGE_BITSPERPEL
  1500. #define MCI_DGV_STATUS_IMAGE_PELFORMAT      MCI_VID_STATUS_IMAGE_PELFORMAT
  1501. #define MCI_DGV_STATUS_FORWARD              MCI_VID_STATUS_FORWARD
  1502. #define MCI_DGV_STATUS_NORMAL_RATE          MCI_VID_STATUS_NORMAL_RATE
  1503. #define MCI_DGV_STATUS_VIDEO_X_EXTENT       MCI_VID_STATUS_VIDEO_X_EXTENT
  1504. #define MCI_DGV_STATUS_VIDEO_Y_EXTENT       MCI_VID_STATUS_VIDEO_Y_EXTENT
  1505. #define MCI_DGV_STATUS_IMAGE_X_EXTENT       MCI_VID_STATUS_IMAGE_X_EXTENT
  1506. #define MCI_DGV_STATUS_IMAGE_Y_EXTENT       MCI_VID_STATUS_IMAGE_Y_EXTENT
  1507. #define MCI_DGV_STATUS_BRIGHTNESS           MCI_VID_STATUS_BRIGHTNESS
  1508. #define MCI_DGV_STATUS_CONTRAST             MCI_VID_STATUS_CONTRAST
  1509. #define MCI_DGV_STATUS_HUE                  MCI_VID_STATUS_HUE
  1510. #define MCI_DGV_STATUS_SATURATION           MCI_VID_STATUS_SATURATION
  1511. #define MCI_DGV_STATUS_SPEED                MCI_VID_STATUS_SPEED
  1512.  
  1513. /*************************************************/
  1514. /* MCI_STATUS item values for video overlay      */
  1515. /*************************************************/
  1516. #define MCI_OVLY_STATUS_HWND                MCI_VID_STATUS_HWND
  1517. #define MCI_OVLY_STATUS_IMAGE_COMPRESSION   MCI_VID_STATUS_IMAGE_COMPRESSION
  1518. #define MCI_OVLY_STATUS_IMAGE_BITSPERPEL    MCI_VID_STATUS_IMAGE_BITSPERPEL
  1519. #define MCI_OVLY_STATUS_IMAGE_PELFORMAT     MCI_VID_STATUS_IMAGE_PELFORMAT
  1520. #define MCI_OVLY_STATUS_IMAGE_X_EXTENT      MCI_VID_STATUS_IMAGE_X_EXTENT
  1521. #define MCI_OVLY_STATUS_IMAGE_Y_EXTENT      MCI_VID_STATUS_IMAGE_Y_EXTENT
  1522. #define MCI_OVLY_STATUS_BRIGHTNESS          MCI_VID_STATUS_BRIGHTNESS
  1523. #define MCI_OVLY_STATUS_CONTRAST            MCI_VID_STATUS_CONTRAST
  1524. #define MCI_OVLY_STATUS_HUE                 MCI_VID_STATUS_HUE
  1525. #define MCI_OVLY_STATUS_SATURATION          MCI_VID_STATUS_SATURATION
  1526. #define MCI_OVLY_STATUS_GREYSCALE           MCI_VID_STATUS_GREYSCALE
  1527. #define MCI_OVLY_STATUS_IMAGE_QUALITY       MCI_VID_STATUS_IMAGE_QUALITY
  1528. #define MCI_OVLY_STATUS_SHARPNESS           MCI_VID_STATUS_SHARPNESS
  1529. #define MCI_OVLY_STATUS_IMAGE_FILE_FORMAT   MCI_VID_STATUS_IMAGE_FILE_FORMAT
  1530.  
  1531.    /*************************************************/
  1532.    /* Status Mode return values                     */
  1533.    /*************************************************/
  1534. #define MCI_MODE_NOT_READY                  0x00000001L
  1535. #define MCI_MODE_PAUSE                      0x00000002L
  1536. #define MCI_MODE_PLAY                       0x00000003L
  1537. #define MCI_MODE_STOP                       0x00000004L
  1538. #define MCI_MODE_RECORD                     0x00000005L
  1539. #define MCI_MODE_SEEK                       0x00000006L
  1540.  
  1541. typedef struct {
  1542.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  1543.     DWORD   dwReturn;        /* Return field                            */
  1544.     DWORD   dwItem;          /* Item field for STATUS item to query     */
  1545.     DWORD   dwTrack;         /* Status track field                      */
  1546. } MCI_STATUS_PARMS;
  1547. typedef MCI_STATUS_PARMS   *LPMCI_STATUS_PARMS;
  1548.  
  1549.  
  1550. typedef struct {
  1551.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  1552.     DWORD   dwReturn;        /* Return field                            */
  1553.     DWORD   dwItem;          /* Item field for STATUS item to query     */
  1554.     DWORD   dwTrack;         /* Status track field                      */
  1555.     DWORD   dwChannel;       /* Channel                                 */
  1556. } MCI_CDXA_STATUS_PARMS;
  1557. typedef MCI_CDXA_STATUS_PARMS   *LPMCI_CDXA_STATUS_PARMS;
  1558.  
  1559. /*********************************************************************/
  1560. /* flags and parameter structure for the MCI_STEP message            */
  1561. /*     0x00000X00 are reserved for MCI_STEP flags                    */
  1562. /*********************************************************************/
  1563. #define MCI_STEP_FRAMES                     0x00000100L
  1564. #define MCI_STEP_REVERSE                    0x00000200L
  1565.  
  1566. typedef struct {
  1567.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  1568.     DWORD   dwStep;          /* amount to step in current time format   */
  1569. } MCI_STEP_PARMS;
  1570. typedef MCI_STEP_PARMS   *LPMCI_STEP_PARMS;
  1571.  
  1572. /*********************************************************************/
  1573. /* flags for the MCI_SYSINFO message                                 */
  1574. /*     0xXXXXXX00 are reserved for MCI_SYSINFO flags                 */
  1575. /*********************************************************************/
  1576. #define MCI_SYSINFO_QUANTITY                0x00000100L
  1577. #define MCI_SYSINFO_OPEN                    0x00000200L
  1578. #define MCI_SYSINFO_NAME                    0x00000400L
  1579. #define MCI_SYSINFO_INSTALLNAME             0x00000800L
  1580. #define MCI_SYSINFO_ITEM                    0x00001000L
  1581.  
  1582.     /********************************************************/
  1583.     /* Extended SYSINFO functions                            /
  1584.     /********************************************************/
  1585.     #define MCI_SYSINFO_INSTALL_DRIVER      0x00000001L
  1586.     #define MCI_SYSINFO_QUERY_DRIVER        0x00000002L
  1587.     #define MCI_SYSINFO_DELETE_DRIVER       0x00000004L
  1588.     #define MCI_SYSINFO_SET_PARAMS          0x00000008L
  1589.     #define MCI_SYSINFO_QUERY_PARAMS        0x00000010L
  1590.     #define MCI_SYSINFO_SET_CONNECTORS      0x00000020L
  1591.     #define MCI_SYSINFO_QUERY_CONNECTORS    0x00000040L
  1592.     #define MCI_SYSINFO_SET_EXTENSIONS      0x00000080L
  1593.     #define MCI_SYSINFO_QUERY_EXTENSIONS    0x00000100L
  1594.     #define MCI_SYSINFO_SET_ALIAS           0x00000200L
  1595.     #define MCI_SYSINFO_QUERY_NAMES         0x00000400L
  1596.     #define MCI_SYSINFO_SET_DEFAULT         0x00000800L
  1597.     #define MCI_SYSINFO_QUERY_DEFAULT       0x00001000L
  1598.     #define MCI_SYSINFO_SET_TYPES           0x00002000L
  1599.     #define MCI_SYSINFO_QUERY_TYPES         0x00004000L
  1600.  
  1601.     /********************************************************/
  1602.     /* Device Flags                                          /
  1603.     /********************************************************/
  1604.     #define MCI_SYSINFO_DEV_CONTROLLABLE    0x00000001L
  1605.     #define MCI_SYSINFO_DEV_NONCONTROLLABLE 0x00000002L
  1606.     #define MCI_SYSINFO_DEVICESETTINGS      0x00000004L
  1607.  
  1608. /*********************************************************************/
  1609. /* parameter structures for the MCI_SYSINFO message                  */
  1610. /*********************************************************************/
  1611. typedef struct {
  1612.     DWORD   dwDummyCallback; /* NOTIFY not allowed for SYSINFO          */
  1613.     LPSTR   lpstrReturn;     /* Pointer to return buffer                */
  1614.     DWORD   dwRetSize;       /* Return buffer size                      */
  1615.     DWORD   dwNumber;        /* Ordinal Number                          */
  1616.     WORD    wDeviceType;     /* MCI device type number                  */
  1617.     WORD    wReserved0;      /* Reserved field                          */
  1618.     DWORD   dwItem;          /* Used to indicate the MCI_SYSINFO        */
  1619.                              /* extended function to perform            */
  1620.     PVOID   pSysInfoParm;
  1621. } MCI_SYSINFO_PARMS;
  1622. typedef MCI_SYSINFO_PARMS   *LPMCI_SYSINFO_PARMS;
  1623.  
  1624. typedef struct {
  1625.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  1626.     USHORT  usDeviceType;                         /* Device type number             */
  1627.     ULONG   ulDeviceFlag;                         /* Flag indicating whether device */
  1628.                                                   /*  device is controllable or not */
  1629.     CHAR    szVersionNumber[MAX_VERSION_NUMBER];  /* INI file version number        */
  1630.     CHAR    szProductInfo[MAX_PRODINFO];          /* Textual product description    */
  1631.     CHAR    szMCDDriver[MAX_DEVICE_NAME];         /* MCI Driver dll name            */
  1632.     CHAR    szVSDDriver[MAX_DEVICE_NAME];         /* VSD dll name                   */
  1633.     CHAR    szPDDName[MAX_PDD_NAME];              /* Device PDD name                */
  1634.     CHAR    szMCDTable[MAX_DEVICE_NAME];          /* Device type command table      */
  1635.     CHAR    szVSDTable[MAX_DEVICE_NAME];          /* Device specific command table  */
  1636.     USHORT  usShareType;                          /* Device sharing mode            */
  1637.     CHAR    szResourceName[MAX_DEVICE_NAME];      /* Resource name                  */
  1638.     USHORT  usResourceUnits;                      /* Total resource units available */
  1639.                                                   /*  for this device               */
  1640.     USHORT  usResourceClasses;                    /* Number of resource classes for */
  1641.                                                   /*  this device                   */
  1642.     USHORT  ausClassArray[MAX_CLASSES];           /* Maximum number of resource     */
  1643.                                                   /*  units for each class          */
  1644.     USHORT  ausValidClassArray[MAX_CLASSES][MAX_CLASSES]; /* Vlaid class combinations */
  1645. } MCI_SYSINFO_LOGDEVICE;
  1646. typedef MCI_SYSINFO_LOGDEVICE  *LPMCI_SYSINFO_LOGDEVICE;
  1647.  
  1648.  
  1649. typedef struct {
  1650.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  1651.     CHAR    szDevParams[MAX_DEV_PARAMS];          /* Device specific parameters     */
  1652. } MCI_SYSINFO_DEVPARAMS;
  1653. typedef MCI_SYSINFO_DEVPARAMS *LPMCI_SYSINFO_DEVPARAMS;
  1654.  
  1655. typedef struct {
  1656.     WORD   wConnectType;                          /* Connector type                 */
  1657.     CHAR   szToInstallName[MAX_DEVICE_NAME];      /* Install name this connector    */
  1658.                                                   /*  is connected to               */
  1659.     WORD   wToConnectIndex;                       /* Connector index this connector */
  1660.                                                   /*  is connected to               */
  1661. } CONNECT;
  1662. typedef CONNECT *PCONNECT;
  1663.  
  1664.  
  1665. typedef struct {
  1666.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  1667.     USHORT  usNumConnectors;                      /* Number of device connectors    */
  1668.     CONNECT ConnectorList[MAX_CONNECTORS];        /* Connector list array           */
  1669. } MCI_SYSINFO_CONPARAMS;
  1670. typedef MCI_SYSINFO_CONPARAMS *LPMCI_SYSINFO_CONPARAMS;
  1671.  
  1672. typedef struct {
  1673.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  1674.     USHORT  usNumExtensions;                      /* Number of extensions           */
  1675.     CHAR    szExtension[MAX_EXTENSIONS][MAX_EXTENSION_NAME];
  1676.                                                   /* Extension name array           */
  1677. } MCI_SYSINFO_EXTENSION;
  1678. typedef MCI_SYSINFO_EXTENSION *LPMCI_SYSINFO_EXTENSION;
  1679.  
  1680. typedef struct {
  1681.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  1682.     CHAR    szAliasName[MAX_ALIAS_NAME];          /* Alias name           */
  1683. } MCI_SYSINFO_ALIAS;
  1684. typedef MCI_SYSINFO_ALIAS *LPMCI_SYSINFO_ALIAS;
  1685.  
  1686. typedef struct {
  1687.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  1688.     USHORT  usDeviceType;                         /* Device type number   */
  1689. } MCI_SYSINFO_DEFAULTDEVICE;
  1690. typedef MCI_SYSINFO_DEFAULTDEVICE *LPMCI_SYSINFO_DEFAULTDEVICE;
  1691.  
  1692. typedef struct {
  1693.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  1694.     CHAR    szLogicalName[MAX_DEVICE_NAME];       /* Logical device name  */
  1695.     CHAR    szAliasName[MAX_ALIAS_NAME];          /* Alias name           */
  1696.     USHORT  usDeviceType;                         /* Device type number   */
  1697.     USHORT  usDeviceOrd;                          /* Device type ordinal  */
  1698. } MCI_SYSINFO_QUERY_NAME;
  1699. typedef MCI_SYSINFO_QUERY_NAME *LPMCI_SYSINFO_QUERY_NAME;
  1700.  
  1701. typedef struct {
  1702.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  1703.     CHAR    szTypes[MAX_TYPEBUFFER+1];            /* EA types             */
  1704. } MCI_SYSINFO_TYPES;
  1705. typedef MCI_SYSINFO_TYPES *LPMCI_SYSINFO_TYPES;
  1706.  
  1707.  
  1708. /*********************************************************************/
  1709. /* flags for the MCI_UNFREEZE message                                */
  1710. /*     0x00000X00 are reserved for MCI_UNFREEZE flags                */
  1711. /*********************************************************************/
  1712. #define MCI_OVLY_UNFREEZE_RECT              0x00000100L
  1713. #define MCI_OVLY_UNFREEZE_RECT_OUTSIDE      0x00000200L
  1714.  
  1715. /*********************************************************************/
  1716. /* flags for the MCI_WHERE message                                   */
  1717. /*     0x0000XX00 are reserved for MCI_WHERE flags                   */
  1718. /*********************************************************************/
  1719. #define MCI_VID_WHERE_DESTINATION           0x00000100L
  1720. #define MCI_VID_WHERE_SOURCE                0x00000200L
  1721.  
  1722. #define MCI_DGV_WHERE_DESTINATION           MCI_VID_WHERE_DESTINATION
  1723. #define MCI_DGV_WHERE_SOURCE                MCI_VID_WHERE_SOURCE
  1724.  
  1725. #define MCI_OVLY_WHERE_DESTINATION          MCI_VID_WHERE_DESTINATION
  1726. #define MCI_OVLY_WHERE_SOURCE               MCI_VID_WHERE_SOURCE
  1727.  
  1728. /*********************************************************************/
  1729. /* flags and parameter structure for the MCI_WINDOW message          */
  1730. /*     0x0000XX00   are reserved for MCI_WINDOW flags                */
  1731. /*********************************************************************/
  1732. #define MCI_VID_WINDOW_HWND                 0x00000100L
  1733. #define MCI_VID_WINDOW_STATE                0x00000200L
  1734. #define MCI_VID_WINDOW_TEXT                 0x00000400L
  1735. #define MCI_VID_WINDOW_DEFAULT              0x00000800L
  1736.  
  1737. #define MCI_DGV_WINDOW_HWND                 MCI_VID_WINDOW_HWND
  1738. #define MCI_DGV_WINDOW_STATE                MCI_VID_WINDOW_STATE
  1739. #define MCI_DGV_WINDOW_TEXT                 MCI_VID_WINDOW_TEXT
  1740. #define MCI_DGV_WINDOW_DEFAULT              MCI_VID_WINDOW_DEFAULT
  1741.  
  1742. #define MCI_OVLY_WINDOW_HWND                MCI_VID_WINDOW_HWND
  1743. #define MCI_OVLY_WINDOW_STATE               MCI_VID_WINDOW_STATE
  1744. #define MCI_OVLY_WINDOW_TEXT                MCI_VID_WINDOW_TEXT
  1745. #define MCI_OVLY_WINDOW_DEFAULT             MCI_VID_WINDOW_DEFAULT
  1746.  
  1747. typedef  struct {
  1748.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  1749.     HWND    hwndDest;        /* Handle to the client window used for    */
  1750.                              /* the destination of the video image      */
  1751.     WORD    wCmdShow;        /* Specifies how the window is displayed   */
  1752.     WORD    wReserved1;      /* Reserved                                */
  1753.     LPSTR   lpstrText;       /* The text to use as the window caption   */
  1754.     LPSTR   lpstrAlias;      /* The window alias for the display window */
  1755. } MCI_VID_WINDOW_PARMS;
  1756.  
  1757. typedef MCI_VID_WINDOW_PARMS   MCI_DGV_WINDOW_PARMS;
  1758. typedef MCI_DGV_WINDOW_PARMS   *LPMCI_DGV_WINDOW_PARMS;
  1759.  
  1760. typedef MCI_VID_WINDOW_PARMS   MCI_OVLY_WINDOW_PARMS;
  1761. typedef MCI_OVLY_WINDOW_PARMS  *LPMCI_OVLY_WINDOW_PARMS;
  1762.  
  1763.  
  1764. #pragma pack()
  1765. /*********************************************************************/
  1766. /*                                                                   */
  1767. /*  MCI system value defines                                         */
  1768. /*                                                                   */
  1769. /*********************************************************************/
  1770. #define MSV_CLOSEDCAPTION                   0x0
  1771. #define MSV_MASTERVOLUME                    0x1
  1772. #define MSV_HEADPHONES                      0x2
  1773. #define MSV_SPEAKERS                        0x3
  1774. #define MSV_WORKPATH                        0x4
  1775.  
  1776. #define MSV_MAX                             0x5
  1777.  
  1778. #endif                       /* INCL_32 */
  1779.  
  1780. /*********************************************************************/
  1781. /* Playlist defines                                                  */
  1782. /*********************************************************************/
  1783. #define DATA_OPERATION                      0
  1784. #define BRANCH_OPERATION                    1
  1785. #define LOOP_OPERATION                      2
  1786. #define CALL_OPERATION                      3
  1787. #define RETURN_OPERATION                    4
  1788. #define EXIT_OPERATION                      5
  1789. #define NOP_OPERATION                       6
  1790. #define MESSAGE_OPERATION                   7
  1791. #define CUEPOINT_OPERATION                  8
  1792.  
  1793. /*********************************************************************/
  1794. /*                                                                   */
  1795. /*  MCI Function prototypes                                          */
  1796. /*                                                                   */
  1797. /*********************************************************************/
  1798.  
  1799. #ifdef INCL_32
  1800.  
  1801. DWORD APIENTRY mciSendCommand   (WORD   wDeviceID,
  1802.                                  WORD   wMessage,
  1803.                                  DWORD  dwParam1,
  1804.                                  DWORD  dwParam2,
  1805.                                  WORD   wUserParm);
  1806.  
  1807. DWORD APIENTRY  mciSendString   (LPSTR lpstrCommandBuf,
  1808.                                  LPSTR lpstrReturnString,
  1809.                                  WORD  wReturnLength,
  1810.                                  HWND  hCallBack,
  1811.                                  WORD  wUserParm );
  1812.  
  1813. DWORD APIENTRY mciGetErrorString(DWORD   dwError,
  1814.                                  LPSTR   lpstrBuffer,
  1815.                                  WORD    wLength);
  1816.  
  1817.  
  1818. DWORD APIENTRY mciMakeGroup     (PW      pwDeviceGroupID,
  1819.                                  WORD    wDeviceCount,
  1820.                                  PAW     pawDeviceList,
  1821.                                  DWORD   dwFlags,
  1822.                                  DWORD   dwMMTime);
  1823.  
  1824.  
  1825. DWORD APIENTRY mciDeleteGroup   (WORD   wGroupID);
  1826.  
  1827.  
  1828.  
  1829. BOOL APIENTRY mciSetSysValue (USHORT iSysValue, PVOID pValue);
  1830.  
  1831. BOOL  APIENTRY mciQuerySysValue (USHORT iSysValue, PVOID pValue);
  1832.  
  1833. DWORD  APIENTRY mciGetDeviceID  (LPSTR  lpstrName);
  1834.  
  1835. #else                        /* INCL_32 */
  1836.  
  1837. #define mciSendString mci16SendString
  1838. #define mciGetErrorString mci16GetErrorString
  1839.  
  1840. ULONG APIENTRY  mciSendString   (LPSTR   lpstrCommandBuf,
  1841.                                  LPSTR   lpstrReturnString,
  1842.                                  WORD    wReturnLength,
  1843.                                  HWND    hCallBack,
  1844.                                  WORD    wUserParm );
  1845.  
  1846. ULONG APIENTRY mciGetErrorString    (DWORD  dwError,
  1847.                                      LPSTR  lpstrBuffer,
  1848.                                      WORD   wLength);
  1849.  
  1850.  
  1851. #endif                       /* INCL_32 */
  1852.