home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / warptlk3.zip / TOOLKIT / BETA / H / MCIOS2.H < prev    next >
C/C++ Source or Header  |  1995-08-24  |  132KB  |  2,392 lines

  1. #ifndef MCIOS2
  2. #define MCIOS2
  3.  
  4. /****************************************************************************/
  5. /*                                                                          */
  6. /* Module Name: MCIOS2.h                                                    */
  7. /*                                                                          */
  8. /* This is the multimedia include file that has the typedefs, defines and   */
  9. /* function prototyes for Media Control Interface of MMPM/2 (tm) using      */
  10. /* the OS2 notation.                                                        */
  11. /*                                                                          */
  12. /*         Copyright (c) International Business Machines Corporation        */
  13. /*                          1991, 1992, 1993                                */
  14. /*                        All Rights Reserved                               */
  15. /*                                                                          */
  16. /****************************************************************************/
  17. #define MCI_TRUE                        1
  18. #define MCI_FALSE                       0
  19.  
  20. /*********************************************************************/
  21. /*                                                                   */
  22. /*             MCI command message identifiers                       */
  23. /*                                                                   */
  24. /*********************************************************************/
  25. #define MCI_OPEN                        1
  26. #define MCI_CLOSE                       2
  27. #define MCI_ESCAPE                      3
  28. #define MCI_PLAY                        4
  29. #define MCI_SEEK                        5
  30. #define MCI_STOP                        6
  31. #define MCI_PAUSE                       7
  32. #define MCI_INFO                        8
  33. #define MCI_GETDEVCAPS                  9
  34. #define MCI_STATUS                      10
  35. #define MCI_SPIN                        11
  36. #define MCI_SET                         12
  37. #define MCI_STEP                        13
  38. #define MCI_RECORD                      14
  39. #define MCI_SYSINFO                     15
  40. #define MCI_SAVE                        16
  41. #define MCI_CUE                         17
  42. #define MCI_UPDATE                      18
  43. #define MCI_SET_CUEPOINT                19
  44. #define MCI_SET_POSITION_ADVISE         20
  45. #define MCI_SET_SYNC_OFFSET             21
  46. #define MCI_LOAD                        22
  47. #define MCI_ACQUIREDEVICE               23
  48. #define MCI_RELEASEDEVICE               24
  49. #define MCI_MASTERAUDIO                 25
  50. #define MCI_GETTOC                      26
  51. #define MCI_DEVICESETTINGS              27
  52. #define MCI_CONNECTOR                   28
  53. #define MCI_RESUME                      29
  54.  
  55. #define MCI_CONNECTORINFO               31
  56. #define MCI_DEFAULT_CONNECTION          32
  57. #define MCI_CONNECTION                  33
  58. #define MCI_GROUP                       34
  59. #define MCI_NETWORK_DEFAULT_CONNECTION  35
  60.  
  61.    /*************************************************/
  62.    /* MCI command message identifiers reserved for  */
  63.    /*  Digital Video and Video Overlay              */
  64.    /*************************************************/
  65.  
  66. #define MCI_CAPTURE                     40
  67. #define MCI_FREEZE                      41
  68. #define MCI_GETIMAGEBUFFER              42
  69. #define MCI_GETIMAGEPALETTE             43
  70. #define MCI_PUT                         44
  71. #define MCI_REALIZE                     45
  72. #define MCI_REWIND                      46
  73. #define MCI_RESTORE                     47
  74. #define MCI_SETIMAGEBUFFER              48
  75. #define MCI_SETIMAGEPALETTE             49
  76. #define MCI_UNFREEZE                    50
  77. #define MCI_WHERE                       51
  78. #define MCI_WINDOW                      52
  79.  
  80. #define MCI_DELETE                      53
  81. #define MCI_CUT                         54
  82. #define MCI_PASTE                       55
  83. #define MCI_COPY                        56
  84. #define MCI_REDO                        57
  85. #define MCI_UNDO                        58
  86. #define MCI_MIXNOTIFY                   59
  87. #define MCI_SETTUNER                    60
  88. #define MCI_FILTER                      61
  89. #define MCI_BUFFER                      62
  90. #define MCI_MIXSETUP                    63
  91.  
  92. #define MCI_MAX_COMMAND                 63
  93.  
  94. #define RECT                            ULONG
  95. #define HDCT                            ULONG
  96. /*********************************************************************/
  97. /* this and all subsequent message ID's are reserved for the user    */
  98. /*********************************************************************/
  99. #define MCI_USER_MESSAGES               2000
  100.  
  101. /*********************************************************************/
  102. /* Special Device ID for "all"                                       */
  103. /*********************************************************************/
  104. #define MCI_ALL_DEVICE_ID               0xFFFF
  105.  
  106. /*********************************************************************/
  107. /* MCI implementation limits                                         */
  108. /*********************************************************************/
  109. #define MAX_DEVICE_NAME                 20
  110. #define MAX_ALIAS_NAME                  20
  111. #define MAX_PRODINFO                    40
  112. #define MAX_EXTENSION_NAME              4
  113. #define MAX_DEV_PARAMS                  128
  114. #define MAX_VERSION_NUMBER              6
  115. #define MAX_PDD_NAME                    9
  116. #define MAX_DLL_NAME                    260
  117. #define MAX_CLASSES                     10
  118. #define MAX_CONNECTORS                  10
  119. #define MAX_EXTENSIONS                  25
  120. #define MAX_TYPEBUFFER                  256
  121.  
  122. #ifdef INCL_32
  123. /*********************************************************************/
  124. /* MCI Device Type Constants                                         */
  125. /*********************************************************************/
  126. #define MCI_DEVTYPE_VIDEOTAPE           1
  127. #define MCI_DEVTYPE_VIDEODISC           2
  128. #define MCI_DEVTYPE_CD_AUDIO            3
  129. #define MCI_DEVTYPE_DAT                 4
  130. #define MCI_DEVTYPE_AUDIO_TAPE          5
  131. #define MCI_DEVTYPE_OTHER               6
  132. #define MCI_DEVTYPE_WAVEFORM_AUDIO      7
  133. #define MCI_DEVTYPE_SEQUENCER           8
  134. #define MCI_DEVTYPE_AUDIO_AMPMIX        9
  135. #define MCI_DEVTYPE_OVERLAY             10
  136. #define MCI_DEVTYPE_ANIMATION           11
  137. #define MCI_DEVTYPE_DIGITAL_VIDEO       12
  138. #define MCI_DEVTYPE_SPEAKER             13
  139. #define MCI_DEVTYPE_HEADPHONE           14
  140. #define MCI_DEVTYPE_MICROPHONE          15
  141. #define MCI_DEVTYPE_MONITOR             16
  142. #define MCI_DEVTYPE_CDXA                17
  143. #define MCI_DEVTYPE_FILTER              18
  144.  
  145. /*********************************************************************/
  146. /* MCI Device Type Names                                             */
  147. /*********************************************************************/
  148. #define MCI_DEVTYPE_VIDEOTAPE_NAME          "Videotape"
  149. #define MCI_DEVTYPE_VIDEODISC_NAME          "Videodisc"
  150. #define MCI_DEVTYPE_CD_AUDIO_NAME           "CDaudio"
  151. #define MCI_DEVTYPE_DAT_NAME                "DAT"
  152. #define MCI_DEVTYPE_AUDIO_TAPE_NAME         "Audiotape"
  153. #define MCI_DEVTYPE_OTHER_NAME              "Other"
  154. #define MCI_DEVTYPE_WAVEFORM_AUDIO_NAME     "Waveaudio"
  155. #define MCI_DEVTYPE_SEQUENCER_NAME          "Sequencer"
  156. #define MCI_DEVTYPE_AUDIO_AMPMIX_NAME       "Ampmix"
  157. #define MCI_DEVTYPE_OVERLAY_NAME            "Overlay"
  158. #define MCI_DEVTYPE_ANIMATION_NAME          "Animation"
  159. #define MCI_DEVTYPE_DIGITAL_VIDEO_NAME      "Digitalvideo"
  160. #define MCI_DEVTYPE_SPEAKER_NAME            "Speaker"
  161. #define MCI_DEVTYPE_HEADPHONE_NAME          "Headphone"
  162. #define MCI_DEVTYPE_MICROPHONE_NAME         "Microphone"
  163. #define MCI_DEVTYPE_MONITOR_NAME            "Monitor"
  164. #define MCI_DEVTYPE_CDXA_NAME               "CDXA"
  165. #define MCI_DEVTYPE_FILTER_NAME             "Filter"
  166.  
  167. #define MCI_MAX_SYSTEM_DEVICE_NAMES         18
  168.  
  169. #endif                       /* INCL_32 */
  170.  
  171. /*********************************************************************/
  172. /* Getdevcaps, set, and status item base values                      */
  173. /*********************************************************************/
  174.  
  175. #define MCI_AMP_ITEM_BASE                   0x00001000L
  176. #define MCI_CD_ITEM_BASE                    0x00002000L
  177. #define MCI_CDXA_ITEM_BASE                  0x00003000L
  178. #define MCI_VD_ITEM_BASE                    0x00004000L
  179. #define MCI_SEQ_ITEM_BASE                   0x00005000L
  180. #define MCI_WAVE_ITEM_BASE                  0x00006000L
  181. #define MCI_VID_ITEM_BASE                   0x00007000L
  182. #define MCI_DGV_ITEM_BASE                   0x00008000L
  183. #define MCI_OVLY_ITEM_BASE                  0x00009000L
  184.  
  185. /*********************************************************************/
  186. /* Flags for mciDriverNotify                                         */
  187. /*********************************************************************/
  188. #define MCI_NOTIFY_SUCCESSFUL               0x0000
  189. #define MCI_NOTIFY_SUPERSEDED               0x0001
  190. #define MCI_NOTIFY_ABORTED                  0x0002
  191. #define MCI_NOTIFY_ERROR                    0x0003
  192.  
  193. /*********************************************************************/
  194. /* mciDriverNotify  Message Types                                    */
  195. /*********************************************************************/
  196. #define MM_MCINOTIFY                        0x0500
  197. #define MM_MCIPASSDEVICE                    0x0501
  198. #define MM_MCIPOSITIONCHANGE                0x0502
  199. #define MM_MCICUEPOINT                      0x0503
  200. #define MM_MCIPLAYLISTMESSAGE               0x0504
  201. #define MM_MCIEVENT                         0x0505
  202. #define MM_MCISYNCH                         0x0506
  203.  
  204. #define MCI_LOSING_USE                      0x00000001L
  205. #define MCI_GAINING_USE                     0x00000002L
  206.  
  207. /*********************************************************************/
  208. /* Common message flags                                              */
  209. /*     0x000000XX are reserved for common flags                      */
  210. /*********************************************************************/
  211. #define MCI_NOTIFY                          0x00000001L
  212. #define MCI_WAIT                            0x00000002L
  213. #define MCI_FROM                            0x00000004L
  214. #define MCI_TO                              0x00000008L
  215. #define MCI_DOS_QUEUE                       0x00000008L
  216. #define MCI_MILLISECONDS                    0x00000010L
  217. #define MCI_TRACK                           0x00000020L
  218. #define MCI_OVER                            0x00000040L
  219. #define MCI_TEST                            0x00000080L
  220. #define MCI_TO_BUFFER                       0x00000100L
  221. #define MCI_FROM_BUFFER                     0x00000200L
  222. #define MCI_CONVERT_FORMAT                  0x00000400L
  223.  
  224.  
  225. /*********************************************************************/
  226. /* Time formats                                                      */
  227. /*********************************************************************/
  228. #define MCI_FORMAT_MILLISECONDS             0x00000001L
  229. #define MCI_FORMAT_MMTIME                   0x00000002L
  230. #define MCI_FORMAT_MSF                      0x00000005L
  231. #define MCI_FORMAT_TMSF                     0x00000006L
  232. #define MCI_FORMAT_CHAPTERS                 0x00000007L
  233. #define MCI_FORMAT_FRAMES                   0x00000008L
  234. #define MCI_FORMAT_HMS                      0x00000009L
  235. #define MCI_FORMAT_TRACKS                   0x0000000AL
  236. #define MCI_FORMAT_BYTES                    0x0000000BL
  237. #define MCI_FORMAT_SAMPLES                  0x0000000CL
  238. #define MCI_FORMAT_HMSF                     0x0000000DL
  239. #define MCI_FORMAT_SET_SMPTE_24             0x0000000EL
  240. #define MCI_FORMAT_SET_SMPTE_25             0x0000000FL
  241. #define MCI_FORMAT_SET_SMPTE_30             0x00000010L
  242. #define MCI_FORMAT_SET_SMPTE_30DROP         0x00000011L
  243. #define MCI_FORMAT_SET_SONGPTR              0x00000012L
  244. #define MCI_FORMAT_USEC                     0x00000013L
  245.  
  246. /*********************************************************************/
  247. /* Speed formats                                                     */
  248. /*********************************************************************/
  249. #define MCI_FORMAT_PERCENTAGE               0x00000003L
  250. #define MCI_FORMAT_FPS                      0x00000004L
  251.  
  252.  
  253. /*********************************************************************/
  254. /*                                                                   */
  255. /*  Time format conversions macros                                   */
  256. /*                                                                   */
  257. /*********************************************************************/
  258. #define MSECTOMM(value)      (((value) > (0xFFFFFFFF /3)) ? 0L : \
  259.                               ((value) * 3))
  260.  
  261. #define MSECFROMMM(value)    (((value)+1) / 3)
  262.  
  263. #define REDBOOKTOMM(value)   ((((value) & 0x000000FF) * 60 * 3000) + \
  264.                               (((value) & 0x0000FF00) / 0x100 * 3000) + \
  265.                               (((value) & 0x00FF0000) / 0x10000 * 3000/75))
  266.  
  267. #define FPS24TOMM(value) ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  268.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  269.                           (((value) & 0x00FF0000) / 0x10000 * 3000) + \
  270.                           (((value) & 0xFF000000) / 0x1000000 * 3000/24))
  271.  
  272. #define FPS25TOMM(value) ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  273.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  274.                           (((value) & 0x00FF0000) / 0x10000 * 3000) + \
  275.                           (((value) & 0xFF000000) / 0x1000000 * 3000/25))
  276.  
  277. #define FPS30TOMM(value) ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  278.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  279.                           (((value) & 0x00FF0000) / 0x10000 * 3000) + \
  280.                           (((value) & 0xFF000000) / 0x1000000 * 3000/30))
  281.  
  282. #define HMSTOMM(value)   ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  283.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  284.                           (((value) & 0x00FF0000) / 0x10000 * 3000))
  285.  
  286.  
  287.   /* The +20 is used for rounding purposes.  It is derived by:           */
  288.   /*   1/2 * ((300 MMTIME/SEC / (75 FRAMES/SEC)) = 20 MMTIME/HALF-FRAME  */
  289. #define REDBOOKFROMMM(value) ((((value)+20) >= 0x100*60*3000) ? 0L : \
  290.                               ((((value)+20) / (60*3000)) + \
  291.                                (((value)+20) % (60*3000) / 3000 << 8) + \
  292.                                (((value)+20) / (3000/75) % 75 << 16)))
  293.  
  294. #define FPS24FROMMM(value) ((((value)+63) >= 0x100*60*60*3000) ? 0L : \
  295.                         (((((((value)+63) % 3000)/(3000/24)) << 24) & 0xFF000000) | \
  296.                          ((((((value)+63) / 3000) % 60) << 16) & 0x00FF0000)      | \
  297.                         (((((((value)+63) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  298.                          ((((((value)+63) / 3000) / 60) / 60)  & 0x000000FF)))
  299.  
  300. #define FPS25FROMMM(value) ((((value)+60) >= 0x100*60*60*3000) ? 0L : \
  301.                         (((((((value)+60) % 3000)/(3000/25)) << 24) & 0xFF000000) | \
  302.                          ((((((value)+60) / 3000) % 60) << 16) & 0x00FF0000)      | \
  303.                         (((((((value)+60) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  304.                          ((((((value)+60) / 3000) / 60) / 60)  & 0x000000FF)))
  305.  
  306. #define FPS30FROMMM(value) ((((value)+50) >= 0x100*60*60*3000) ? 0L : \
  307.                         (((((((value)+50) % 3000)/(3000/30)) << 24) & 0xFF000000) | \
  308.                          ((((((value)+50) / 3000) % 60) << 16) & 0x00FF0000)      | \
  309.                         (((((((value)+50) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  310.                          ((((((value)+50) / 3000) / 60) / 60)  & 0x000000FF)))
  311.  
  312. #define HMSFROMMM(value) ((((value)+50) >= 0x100*60*60*3000) ? 0L : \
  313.                         (((((((value)+50) / 3000) % 60) << 16) & 0x00FF0000)      | \
  314.                         (((((((value)+50) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  315.                          ((((((value)+50) / 3000) / 60) / 60)  & 0x000000FF)))
  316.  
  317. #define TMSF_TRACK(time)     (*(BYTE *)(&(time)))
  318. #define TMSF_MINUTE(time)    (*((BYTE *)(&(time))+1))
  319. #define TMSF_SECOND(time)    (*((BYTE *)(&(time))+2))
  320. #define TMSF_FRAME(time)     (*((BYTE *)(&(time))+3))
  321. #define MSF_MINUTE(time)     (*(BYTE *)(&(time)))
  322. #define MSF_SECOND(time)     (*((BYTE *)(&(time))+1))
  323. #define MSF_FRAME(time)      (*((BYTE *)(&(time))+2))
  324.  
  325. /*********************************************************************/
  326. /*                                                                   */
  327. /*  BYTE ACCESS WITH A DWORD MACROS                                  */
  328. /*                                                                   */
  329. /*********************************************************************/
  330. #define ULONG_LWLB(ul)  (*(BYTE *)((ULONG *)(&ul)))       /* Low  Word Low Byte  */
  331. #define ULONG_LWHB(ul)  (*((BYTE *)((ULONG *)(&ul))+1))   /* Low  Word High Byte */
  332. #define ULONG_HWLB(ul)  (*((BYTE *)((ULONG *)(&ul))+2))   /* High Word Low Byte  */
  333. #define ULONG_HWHB(ul)  (*((BYTE *)((ULONG *)(&ul))+3))   /* High Word High Byte */
  334. #define ULONG_LOWD(ul)  (*(USHORT *)((ULONG *)(&ul)))     /* Low  Word           */
  335. #define ULONG_HIWD(ul)  (*((USHORT *)((ULONG *)(&ul))+1)) /* High Word           */
  336.  
  337. #ifdef INCL_32
  338.  
  339. #pragma pack(1)
  340.  
  341. /*********************************************************************/
  342. /* parameters for default command messages with empty parameter lists*/
  343. /*********************************************************************/
  344. typedef struct _MCI_GENERIC_PARMS {
  345.     HWND   hwndCallback;     /* PM window handle for MCI notify message */
  346. } MCI_GENERIC_PARMS;
  347. typedef MCI_GENERIC_PARMS   *PMCI_GENERIC_PARMS;
  348.  
  349.  
  350. /*********************************************************************/
  351. /* flags for the MCI_ACQUIREDEVICE message                           */
  352. /*     0x00000X00 are reserved for MCI_ACQUIREDEVICE flags           */
  353. /*********************************************************************/
  354. #define MCI_EXCLUSIVE                       0x00000100L
  355. #define MCI_EXCLUSIVE_INSTANCE              0x00000200L
  356. #define MCI_ACQUIRE_QUEUE                   0x00000400L
  357.  
  358.  
  359. /*********************************************************************/
  360. /* flags for the MCI_CAPTURE message                                 */
  361. /*     0x0000XX00 are reserved for MCI_CAPTURE flags                 */
  362. /*     MCI_CONVERT is used by MCI_GETIMAGEBUFFER, MCI_SETIMAGEBUFFER */
  363. /*                            MCI_CAPTURE, and MCI_RESTORE           */
  364. /*********************************************************************/
  365. #define MCI_CAPTURE_RECT                    0x00000100L
  366. #define MCI_CONVERT                         0x00001000L
  367.  
  368. /*********************************************************************/
  369. /* parameter structure for the MCI_CAPTURE message                   */
  370. /*********************************************************************/
  371. typedef struct _MCI_CAPTURE_PARMS {
  372.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  373.     RECTL   rect;            /* Rectangle array specifying the area to  */
  374.                              /* be captured                             */
  375. } MCI_CAPTURE_PARMS;
  376. typedef MCI_CAPTURE_PARMS   *PMCI_CAPTURE_PARMS;
  377.  
  378.  
  379. /*********************************************************************/
  380. /* flags for MCI_CONNECTOR and MCI_CONNECTION messages               */
  381. /*********************************************************************/
  382. #define MCI_ENABLE_CONNECTOR                0x00000100L
  383. #define MCI_DISABLE_CONNECTOR               0x00000200L
  384. #define MCI_QUERY_CONNECTOR_STATUS          0x00000400L
  385. #define MCI_CONNECTOR_TYPE                  0x00000800L
  386. #define MCI_CONNECTOR_INDEX                 0x00001000L
  387. #define MCI_TO_CONNECTOR_INDEX              0x00002000L
  388. #define MCI_TO_CONNECTOR_TYPE               0x00004000L
  389. #define MCI_QUERY_CONNECTION                0x00008000L
  390. #define MCI_MAKE_CONNECTION                 0x00010000L
  391. #define MCI_SET_CONNECTION                  MCI_MAKE_CONNECTION
  392. #define MCI_BREAK_CONNECTION                0x00020000L
  393. #define MCI_ENUMERATE_CONNECTORS            0x00040000L
  394. #define MCI_QUERY_CONNECTOR_TYPE            0x00080000L
  395. #define MCI_QUERY_VALID_CONNECTION          0x00100000L
  396. #define MCI_CONNECTOR_ALIAS                 0x00200000L
  397.  
  398.  
  399. /*********************************************************************/
  400. /* Connector types                                                   */
  401. /*********************************************************************/
  402. #define MCI_MIDI_STREAM_CONNECTOR           0x00000001L
  403. #define MCI_CD_STREAM_CONNECTOR             0x00000002L
  404. #define MCI_WAVE_STREAM_CONNECTOR           0x00000003L
  405. #define MCI_AMP_STREAM_CONNECTOR            0x00000004L
  406. #define MCI_XA_STREAM_CONNECTOR             0x00000005L
  407. #define MCI_HEADPHONES_CONNECTOR            0x00000006L
  408. #define MCI_SPEAKERS_CONNECTOR              0x00000007L
  409. #define MCI_MICROPHONE_CONNECTOR            0x00000008L
  410. #define MCI_LINE_IN_CONNECTOR               0x00000009L
  411. #define MCI_LINE_OUT_CONNECTOR              0x0000000aL
  412. #define MCI_VIDEO_IN_CONNECTOR              0x0000000bL
  413. #define MCI_VIDEO_OUT_CONNECTOR             0x0000000cL
  414. #define MCI_PHONE_SET_CONNECTOR             0x0000000dL
  415. #define MCI_PHONE_LINE_CONNECTOR            0x0000000eL
  416. #define MCI_AUDIO_IN_CONNECTOR              0x0000000fL
  417. #define MCI_AUDIO_OUT_CONNECTOR             0x00000010L
  418. #define MCI_UNIVERSAL_CONNECTOR             0x00000011L
  419. #define MCI_INTERNAL_AUDIO_CONNECTOR        0x00000012L
  420. #define MCI_MIDI_IN_CONNECTOR               0x00000013L
  421. #define MCI_MIDI_OUT_CONNECTOR              0x00000014L
  422. #define MCI_NULL_CONNECTOR                  0x00000015L
  423.  
  424.  
  425. /*********************************************************************/
  426. /* parameter structure for the MCI_CONNECTION message                */
  427. /*********************************************************************/
  428. typedef struct _MCI_CONNECTION_PARMS {
  429.     HWND    hwndCallback;       /* PM window handle for MCI notify message */
  430.     ULONG   ulConnectorType;    /* Connector type                          */
  431.     ULONG   ulConnectorIndex;   /* Connector index                         */
  432.     PSZ     pszAlias;           /* Connection device alias                 */
  433.     USHORT  usToDeviceID;       /* Connected to device ID                  */
  434.     USHORT  usReserved0;        /* Reserved field                          */
  435.     ULONG   ulToConnectorType;  /* Connection to Connector type            */
  436.     ULONG   ulToConnectorIndex; /* Connection to Connector index           */
  437. } MCI_CONNECTION_PARMS;
  438. typedef MCI_CONNECTION_PARMS   *PMCI_CONNECTION_PARMS;
  439.  
  440. /*********************************************************************/
  441. /* parameter structure for the MCI_CONNECTOR message                 */
  442. /*********************************************************************/
  443. typedef struct _MCI_CONNECTOR_PARMS {
  444.     HWND   hwndCallback;     /* PM window handle for MCI notify message    */
  445.     ULONG  ulReturn;         /* Return information                         */
  446.     ULONG  ulConnectorType;  /* If specified, ulConnectorIndex is relative */
  447.                              /* to the specified connector type            */
  448.     ULONG  ulConnectorIndex; /* Connector number                           */
  449. } MCI_CONNECTOR_PARMS;
  450. typedef MCI_CONNECTOR_PARMS   *PMCI_CONNECTOR_PARMS;
  451.  
  452.  
  453. /*********************************************************************/
  454. /* Flags for use with ulParam1                                       */
  455. /*********************************************************************/
  456.  
  457.  
  458. #define MCI_MIXSETUP_INIT            0x00010000L
  459. #define MCI_MIXSETUP_DEINIT          0x00020000L
  460.  
  461.  
  462. /*********************************************************************/
  463. /* parameter structure for the MCI_BUFFER    message                 */
  464. /*********************************************************************/
  465. typedef struct _MCI_MIX_BUFFER {
  466.     ULONG      ulStructLength;   /* Length of the structure          */
  467.     PVOID      pBuffer;          /* Pointer to a buffer              */
  468.     ULONG      ulBufferLength;   /* Length of the buffer             */
  469.     ULONG      ulFlags;          /* Flags                            */
  470.     ULONG      ulUserParm;       /* Caller parameter                 */
  471.     ULONG      ulTime;           /* OUT--Current time in MS          */
  472.     ULONG      ulReserved1;      /* Unused.                          */
  473.     ULONG      ulReserved2;      /* Unused.                          */
  474. } MCI_MIX_BUFFER;
  475.  
  476. typedef MCI_MIX_BUFFER *PMCI_MIX_BUFFER;
  477.  
  478.  
  479. /*********************************************************************/
  480. /* valid options for the ulFlags field of MCI_MIX_BUFFER             */
  481. /*********************************************************************/
  482.  
  483.  
  484. #define MIX_BUFFER_EOS                0x00000001L
  485.  
  486.  
  487.  
  488. typedef LONG (APIENTRY MIXERPROC)
  489.                                 ( ULONG            ulHandle,
  490.                                   PMCI_MIX_BUFFER  pBuffer,
  491.                                   ULONG            ulFlags        );
  492.  
  493. typedef MIXERPROC *PMIXERPROC;
  494. typedef LONG (APIENTRY MIXEREVENT)
  495.                                 ( ULONG            ulStatus,
  496.                                   PMCI_MIX_BUFFER  pBuffer,
  497.                                   ULONG            ulFlags        );
  498.  
  499. typedef MIXEREVENT  *PMIXEREVENT;
  500.  
  501. /*********************************************************************/
  502. /* valid returns for the ulFlags param of the MIXEREVENT entry       */
  503. /*********************************************************************/
  504.  
  505.  
  506. #define MIX_STREAM_ERROR             0x00000080L
  507. #define MIX_READ_COMPLETE            0x00000001L
  508. #define MIX_WRITE_COMPLETE           0x00000002L
  509.  
  510.  
  511.  
  512. /*********************************************************************/
  513. /* parameter structure for the MCI_MIXSETUP_PARMS message            */
  514. /*********************************************************************/
  515. typedef struct _MCI_MIXSETUP_PARMS {
  516.     HWND         hwndCallback;     /* PM window handle for MCI notify message      */
  517.     ULONG        ulBitsPerSample;  /* IN Number of Bits per Sample                 */
  518.     ULONG        ulFormatTag;      /* IN Format Tag                                */
  519.     ULONG        ulSamplesPerSec;  /* IN Sampling Rate                             */
  520.     ULONG        ulChannels;       /* IN Number of channels                        */
  521.     ULONG        ulFormatMode;     /* IN Either MCI_RECORD or MCI_PLAY             */
  522.     ULONG        ulDeviceType;     /* IN MCI_DEVTYPE (i.e. DEVTYPE_WAVEFORM etc.)  */
  523.     ULONG        ulMixHandle;      /* OUT--mixer returns handle for write/read     */
  524.     PMIXERPROC   pmixWrite;        /* OUT-Mixer Write Routine entry point          */
  525.     PMIXERPROC   pmixRead;         /* OUT-Mixer Read Routine entry point           */
  526.     PMIXEREVENT  pmixEvent;        /* IN--Mixer Read Routine entry point           */
  527.     PVOID        pExtendedInfo;    /* Ptr to extended wave information             */
  528.     ULONG        ulBufferSize;     /* OUT--suggested buffer size for current mode  */
  529.     ULONG        ulNumBuffers;     /* OUT--suggested # of buffers for current mode */
  530. } MCI_MIXSETUP_PARMS;
  531.  
  532. typedef MCI_MIXSETUP_PARMS   *PMCI_MIXSETUP_PARMS;
  533.  
  534. /*********************************************************************/
  535. /* Flags for use with ulParam1                                       */
  536. /*********************************************************************/
  537.  
  538.  
  539.  
  540. #define  MCI_BUFFER_QUERY         0x00010000L
  541. #define  MCI_BUFFER_SET           0x00020000L
  542. #define  MCI_ALLOCATE_MEMORY      0x00040000L
  543. #define  MCI_DEALLOCATE_MEMORY    0x00080000L
  544.  
  545.  
  546. /*********************************************************************/
  547. /* parameter structure for the MCI_BUFFER    message                 */
  548. /*********************************************************************/
  549. typedef struct _MCI_BUFFER_PARMS {
  550.     HWND       hwndCallback;     /* PM window handle for MCI notify message    */
  551.     ULONG      ulStructLength;   /* Length of the MCI Buffer command           */
  552.     ULONG      ulNumBuffers;     /* Number of buffers MCI driver should use    */
  553.     ULONG      ulBufferSize;     /* Size of buffers MCI driver should use      */
  554.     ULONG      ulMinToStart;     /* Min number of buffers to create a stream.  */
  555.     ULONG      ulSrcStart;       /* # of EMPTY buffers required to start Source*/
  556.     ULONG      ulTgtStart;       /* # of FULL buffers required to start Target */
  557.  
  558.     PVOID      pBufList;         /* Pointer to a list of buffers               */
  559.  
  560. } MCI_BUFFER_PARMS;
  561. typedef MCI_BUFFER_PARMS   *PMCI_BUFFER_PARMS;
  562.  
  563.  
  564. /*********************************************************************/
  565. /* parameter structure for the MCI_CONNECTORINFO message             */
  566. /*********************************************************************/
  567. typedef struct _MCI_CONNECTORINFO_PARMS {
  568.     HWND   hwndCallback;      /* PM window handle for MCI notify message    */
  569.     ULONG  ulReturn;          /* Return information                         */
  570.     ULONG  ulDeviceTypeID;    /* MCI device type                            */
  571.     ULONG  ulConnectorType;   /* If specified, ulConnectorIndex is relative */
  572.                               /* to the specified connector type            */
  573.     ULONG  ulConnectorIndex;  /* Connector number                           */
  574.     ULONG  ulToConnectorType; /* Connector type to test if                  */
  575.                               /* MCI_QUERY_VALID_CONNECTION is specified    */
  576. } MCI_CONNECTORINFO_PARMS;
  577. typedef MCI_CONNECTORINFO_PARMS   *PMCI_CONNECTORINFO_PARMS;
  578.  
  579. /*********************************************************************/
  580. /* flags for the MCI_CUE message                                     */
  581. /*     0x00000x00 are reserved for MCI_CUE flags                     */
  582. /*********************************************************************/
  583. #define MCI_CUE_INPUT                       0x00000100L
  584. #define MCI_CUE_OUTPUT                      0x00000200L
  585. #define MCI_SHOW                            0x00000400L
  586. #define MCI_NOSHOW                          0x00000800L
  587.  
  588.     /*************************************************/
  589.     /* Additional flags for Wave Audio for MCI_CUE   */
  590.     /*************************************************/
  591. #define MCI_WAVE_INPUT                      0x00001000L
  592. #define MCI_WAVE_OUTPUT                     0x00002000L
  593.  
  594.  
  595. /*****************************************************************************/
  596. /* the MCI_CONNLIST structure used in the NETWORK_DEFAULT_CONNECTION message */
  597. /*****************************************************************************/
  598. typedef struct _MCI_CONNLIST {
  599.     ULONG ulFromDevice;  /* Ordinal position of device within pDevices array */
  600.     ULONG ulSrcConnType; /* Type of source connector                         */
  601.     ULONG ulSrcConnNum;  /* Source Connector Number                          */
  602.     ULONG ulToDevice;    /* Ordinal position of device within pDevices array */
  603.     ULONG ulTgtConnType; /* Type of target connector                         */
  604.     ULONG ulTgtConnNum;  /* Target Connector Number                          */
  605. } MCI_CONNLIST;
  606. typedef MCI_CONNLIST *PMCI_CONNLIST;
  607.  
  608.  
  609. /*****************************************************************************/
  610. /* parameter structure for the MCI_NETWORK_DEFAULT_CONNECTION message        */
  611. /*****************************************************************************/
  612. typedef struct _MCI_NETWORK_DEFAULT_CONNECTION_PARMS {
  613.     HWND            hwndCallback;                   /* PM window handle for MCI notify message    */
  614.     CHAR            szInstallName[MAX_DEVICE_NAME]; /* Name of section containing default conn.   */
  615.     ULONG           ulNumDevices;                   /* Number of additional devices in connection */
  616.     ULONG           ulNumPlayConnections;           /* Number of Play connections                 */
  617.     ULONG           ulNumRecordConnections;         /* Number of Record connections               */
  618.     CHAR           (*pDevices)[MAX_DEVICE_NAME];    /* Pointer to array of device names to open   */
  619.     PMCI_CONNLIST   pPlayConnections;               /* Pointer to array of connections to "make"  */
  620.     PMCI_CONNLIST   pRecordConnections;             /* Pointer to array of connections to "make"  */
  621. } MCI_NETWORK_DEFAULT_CONNECTION_PARMS;
  622. typedef MCI_NETWORK_DEFAULT_CONNECTION_PARMS *PMCI_NETWORK_DEFAULT_CONNECTION_PARMS;
  623.  
  624.  
  625. /*******************************************************/
  626. /* Additional flags for MCI_NETWORK_DEFAULT_CONNECTION */
  627. /*******************************************************/
  628. #define MCI_RECORD_DEFAULTS             0x00000004L
  629. #define MCI_PLAY_DEFAULTS               0x00000008L
  630.  
  631.  
  632. /*********************************************************************/
  633. /* parameter structure for the MCI_DEFAULT_CONNECTION message        */
  634. /*********************************************************************/
  635. typedef struct _MCI_DEFAULT_CONNECTION_PARMS {
  636.     HWND  hwndCallback;       /* PM window handle for MCI notify message    */
  637.     PSZ   pszDevice;          /* Device name                                */
  638.     ULONG ulConnectorType;    /* If specified, ulConnectorIndex is relative */
  639.                               /* to the specified connector type            */
  640.     ULONG ulConnectorIndex;   /* Connector number                           */
  641.     PSZ   pszToDevice;        /* Return device name to which the connection */
  642.                               /* exists                                     */
  643.     ULONG ulToConnectorType;  /* Connector type                             */
  644.     ULONG ulToConnectorIndex; /* Connector number                           */
  645. } MCI_DEFAULT_CONNECTION_PARMS;
  646. typedef MCI_DEFAULT_CONNECTION_PARMS    *PMCI_DEFAULT_CONNECTION_PARMS;
  647.  
  648. /*********************************************************************/
  649. /* parameter structure for the MCI_DEVICESETTINGS message            */
  650. /*********************************************************************/
  651. typedef struct _MCI_DEVICESETTINGS_PARMS {
  652.     HWND    hwndCallback;    /* PM window handle for MCI notify message    */
  653.     HWND    hwndNotebook;    /* Hwhd to notebook window                    */
  654.     USHORT  usDeviceType;    /* Device type                                */
  655.     PSZ     pszDeviceName;   /* Device name                                */
  656. } MCI_DEVICESETTINGS_PARMS;
  657. typedef MCI_DEVICESETTINGS_PARMS   *PMCI_DEVICESETTINGS_PARMS;
  658.  
  659. /**********************************************************************/
  660. /* parameter structure for the MCI_CUT / COPY / DELETE / UNDO / etc...*/
  661. /**********************************************************************/
  662. typedef struct _MCI_EDIT_PARMS {
  663.     HWND    hwndCallback;    /* PM window handle for MCI notify message     */
  664.     ULONG   ulStructLen;     /* Length of the Structure                     */
  665.     ULONG   ulFrom;          /* Beginning Point of Range                    */
  666.     ULONG   ulTo;            /* ending point of range                       */
  667.     PVOID   pBuff;           /* user buffer                                 */
  668.     ULONG   ulBufLen;        /* length of user buffer                       */
  669.     PVOID   pHeader;         /* header which describes the buffer           */
  670. } MCI_EDIT_PARMS;
  671. typedef MCI_EDIT_PARMS   *PMCI_EDIT_PARMS;
  672.  
  673. /*********************************************************************/
  674. /* flags and parameter structure for the MCI_ESCAPE message          */
  675. /*     0x00000X00 are reserved for MCI_ESCAPE flags                  */
  676. /*********************************************************************/
  677. #define MCI_ESCAPE_STRING                   0x00000100L
  678.  
  679. typedef struct _MCI_ESCAPE_PARMS {
  680.     HWND    hwndCallback;    /* PM window handle for MCI notify message    */
  681.     PSZ     pszCommand;      /* Command to send to the device              */
  682. } MCI_ESCAPE_PARMS;
  683. typedef MCI_ESCAPE_PARMS   *PMCI_ESCAPE_PARMS;
  684.  
  685. /*********************************************************************/
  686. /* flags for the MCI_FREEZE message                                  */
  687. /*     0x0000XX00 are reserved for MCI_FREEZE flags                  */
  688. /*********************************************************************/
  689. #define MCI_OVLY_FREEZE_RECT                0x00000100L
  690. #define MCI_OVLY_FREEZE_RECT_OUTSIDE        0x00000200L
  691.  
  692. /*********************************************************************/
  693. /* flags for the MCI_GETDEVCAPS message                              */
  694. /*     0x00XXXX00 are reserved for MCI_GETDEVCAPS flags              */
  695. /*********************************************************************/
  696. #define MCI_GETDEVCAPS_MESSAGE              0x00000100L
  697. #define MCI_GETDEVCAPS_ITEM                 0x00000200L
  698. #define MCI_GETDEVCAPS_EXTENDED             0x00000400L
  699.  
  700.    /*************************************************/
  701.    /* General MCI_GETDEVCAPS item values            */
  702.    /*************************************************/
  703. #define MCI_GETDEVCAPS_CAN_EJECT            0x00000001L
  704. #define MCI_GETDEVCAPS_CAN_LOCKEJECT        0x00000002L
  705. #define MCI_GETDEVCAPS_CAN_PLAY             0x00000003L
  706. #define MCI_GETDEVCAPS_CAN_PROCESS_INTERNAL 0x00000004L
  707. #define MCI_GETDEVCAPS_CAN_RECORD           0x00000005L
  708. #define MCI_GETDEVCAPS_CAN_RECORD_INSERT    0x00000006L
  709. #define MCI_GETDEVCAPS_CAN_SAVE             0x00000007L
  710. #define MCI_GETDEVCAPS_CAN_SETVOLUME        0x00000008L
  711. #define MCI_GETDEVCAPS_CAN_STREAM           0x00000009L
  712. #define MCI_GETDEVCAPS_DEVICE_TYPE          0x0000000AL
  713. #define MCI_GETDEVCAPS_HAS_AUDIO            0x0000000BL
  714. #define MCI_GETDEVCAPS_HAS_VIDEO            0x0000000CL
  715. #define MCI_GETDEVCAPS_PREROLL_TIME         0x0000000DL
  716. #define MCI_GETDEVCAPS_PREROLL_TYPE         0x0000000EL
  717. #define MCI_GETDEVCAPS_USES_FILES           0x0000000FL
  718. #define MCI_GETDEVCAPS_HAS_IMAGE            0x00000010L
  719. #define MCI_GETDEVCAPS_WAVE_FORMAT          0x00000011L
  720. #define MCI_GETDEVCAPS_CAN_CLOSE_DOOR       0x00000012L
  721.  
  722.     /***********************************************/
  723.     /* return ID's for videodisc MCI_GETDEVCAPS    */
  724.     /***********************************************/
  725. #define MCI_VD_MEDIA_CLV                    0x00000001L
  726. #define MCI_VD_MEDIA_CAV                    0x00000002L
  727. #define MCI_VD_MEDIA_OTHER                  0x00000003L
  728.  
  729.     /*************************************************/
  730.     /* MCI_GETDEVCAPS item values for video devices  */
  731.     /*************************************************/
  732. #define MCI_VID_GETDEVCAPS_CAN_STRETCH       MCI_VID_ITEM_BASE
  733. #define MCI_VID_GETDEVCAPS_CAN_DISTORT       (MCI_VID_ITEM_BASE+1)
  734. #define MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT    (MCI_VID_ITEM_BASE+2)
  735. #define MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT    (MCI_VID_ITEM_BASE+3)
  736. #define MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT    (MCI_VID_ITEM_BASE+4)
  737. #define MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT    (MCI_VID_ITEM_BASE+5)
  738. #define MCI_VID_GETDEVCAPS_MAX_WINDOWS       (MCI_VID_ITEM_BASE+6)
  739. #define MCI_VID_GETDEVCAPS_CAN_FREEZE        (MCI_VID_ITEM_BASE+7)
  740. #define MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS  (MCI_VID_ITEM_BASE+8)
  741.  
  742. #define MCI_VID_GETDEVCAPS_CAN_REVERSE       (MCI_VID_ITEM_BASE+9)
  743. #define MCI_VID_GETDEVCAPS_FAST_RATE         (MCI_VID_ITEM_BASE+10)
  744. #define MCI_VID_GETDEVCAPS_SLOW_RATE         (MCI_VID_ITEM_BASE+11)
  745. #define MCI_VID_GETDEVCAPS_NORMAL_RATE       (MCI_VID_ITEM_BASE+12)
  746. #define MCI_VID_GETDEVCAPS_MINIMUM_RATE      (MCI_VID_ITEM_BASE+13)
  747. #define MCI_VID_GETDEVCAPS_MAXIMUM_RATE      (MCI_VID_ITEM_BASE+14)
  748.  
  749.     /*************************************************/
  750.     /* MCI_GETDEVCAPS flag values for Videodisc      */
  751.     /*************************************************/
  752. #define MCI_VD_GETDEVCAPS_CLV               0x00000400L
  753. #define MCI_VD_GETDEVCAPS_CAV               0x00000800L
  754.  
  755.     /*************************************************/
  756.     /* MCI_GETDEVCAPS item values for Videodisc      */
  757.     /*************************************************/
  758.  
  759. #define MCI_VD_GETDEVCAPS_CAN_REVERSE       MCI_VID_GETDEVCAPS_CAN_REVERSE
  760. #define MCI_VD_GETDEVCAPS_FAST_RATE         MCI_VID_GETDEVCAPS_FAST_RATE
  761. #define MCI_VD_GETDEVCAPS_SLOW_RATE         MCI_VID_GETDEVCAPS_SLOW_RATE
  762. #define MCI_VD_GETDEVCAPS_NORMAL_RATE       MCI_VID_GETDEVCAPS_NORMAL_RATE
  763. #define MCI_VD_GETDEVCAPS_MINIMUM_RATE      MCI_VID_GETDEVCAPS_MINIMUM_RATE
  764. #define MCI_VD_GETDEVCAPS_MAXIMUM_RATE      MCI_VID_GETDEVCAPS_MAXIMUM_RATE
  765.  
  766.     /************************************************/
  767.     /* MCI_GETDEVCAPS item values for Digital Video */
  768.     /************************************************/
  769. #define MCI_DGV_GETDEVCAPS_CAN_REVERSE      MCI_VID_GETDEVCAPS_CAN_REVERSE
  770. #define MCI_DGV_GETDEVCAPS_CAN_STRETCH      MCI_VID_GETDEVCAPS_CAN_STRETCH
  771. #define MCI_DGV_GETDEVCAPS_CAN_DISTORT      MCI_VID_GETDEVCAPS_CAN_DISTORT
  772. #define MCI_DGV_GETDEVCAPS_FAST_RATE        MCI_VID_GETDEVCAPS_FAST_RATE
  773. #define MCI_DGV_GETDEVCAPS_SLOW_RATE        MCI_VID_GETDEVCAPS_SLOW_RATE
  774. #define MCI_DGV_GETDEVCAPS_NORMAL_RATE      MCI_VID_GETDEVCAPS_NORMAL_RATE
  775. #define MCI_DGV_GETDEVCAPS_MINIMUM_RATE     MCI_VID_GETDEVCAPS_MINIMUM_RATE
  776. #define MCI_DGV_GETDEVCAPS_MAXIMUM_RATE     MCI_VID_GETDEVCAPS_MAXIMUM_RATE
  777. #define MCI_DGV_GETDEVCAPS_VIDEO_X_EXTENT   MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT
  778. #define MCI_DGV_GETDEVCAPS_VIDEO_Y_EXTENT   MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT
  779. #define MCI_DGV_GETDEVCAPS_IMAGE_X_EXTENT   MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT
  780. #define MCI_DGV_GETDEVCAPS_IMAGE_Y_EXTENT   MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT
  781. #define MCI_DGV_GETDEVCAPS_MAX_WINDOWS      MCI_VID_GETDEVCAPS_MAX_WINDOWS
  782. #define MCI_DGV_GETDEVCAPS_OVERLAY_GRAPHICS MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS
  783. #define MCI_DGV_GETDEVCAPS_HAS_TUNER        (MCI_DGV_ITEM_BASE)
  784. #define MCI_DGV_GETDEVCAPS_HAS_TELETEX      (MCI_DGV_ITEM_BASE+1)
  785. #define MCI_DGV_GETDEVCAPS_HAS_AFC          (MCI_DGV_ITEM_BASE+2)
  786.  
  787.    /*************************************************/
  788.    /* MCI_GETDEVCAPS item values for Video Overlay  */
  789.    /*************************************************/
  790. #define MCI_OVLY_GETDEVCAPS_CAN_STRETCH     MCI_VID_GETDEVCAPS_CAN_STRETCH
  791. #define MCI_OVLY_GETDEVCAPS_CAN_DISTORT     MCI_VID_GETDEVCAPS_CAN_DISTORT
  792. #define MCI_OVLY_GETDEVCAPS_VIDEO_X_EXTENT  MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT
  793. #define MCI_OVLY_GETDEVCAPS_VIDEO_Y_EXTENT  MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT
  794. #define MCI_OVLY_GETDEVCAPS_IMAGE_X_EXTENT  MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT
  795. #define MCI_OVLY_GETDEVCAPS_IMAGE_Y_EXTENT  MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT
  796. #define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS     MCI_VID_GETDEVCAPS_MAX_WINDOWS
  797. #define MCI_OVLY_GETDEVCAPS_CAN_FREEZE      MCI_VID_GETDEVCAPS_CAN_FREEZE
  798. #define MCI_OVLY_GETDEVCAPS_OVERLAY_GRAPHICS MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS
  799.  
  800.  
  801. #define MCI_PREROLL_NOTIFIED                0x00000001L
  802. #define MCI_PREROLL_DETERMINISTIC           0x00000002L
  803. #define MCI_PREROLL_NONE                    0x00000003L
  804.  
  805. /*********************************************************************/
  806. /* parameter structure for the MCI_GETDEVCAPS message                */
  807. /*********************************************************************/
  808. typedef struct _MCI_GETDEVCAPS_PARMS {
  809.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  810.     ULONG   ulReturn;        /* Return field                            */
  811.     ULONG   ulItem;          /* Item field for GETDEVCAPS item to query */
  812.     USHORT  usMessage;       /* Field to hold MCI message to query      */
  813.     USHORT  usReserved0;     /* Reserved field                          */
  814. } MCI_GETDEVCAPS_PARMS;
  815. typedef MCI_GETDEVCAPS_PARMS   * PMCI_GETDEVCAPS_PARMS;
  816.  
  817. /*********************************************************************/
  818. /* parameter structure for the MCI_WAVE_GETDEVCAPS                   */
  819. /*********************************************************************/
  820. typedef struct _MCI_WAVE_GETDEVCAPS_PARMS {
  821.     HWND    hwndCallback;     /* PM window handle for MCI notify message */
  822.     ULONG   ulReturn;         /* Return field                            */
  823.     ULONG   ulItem;           /* Item field for GETDEVCAPS item to query */
  824.     USHORT  usMessage;        /* Field to hold MCI message to query      */
  825.     USHORT  usReserved0;      /* Reserved field                          */
  826.     ULONG   ulLength;         /* Length of structure in ULONGS           */
  827.     ULONG   ulBitsPerSample;  /* Number of Bits per Sample               */
  828.     ULONG   ulFormatTag;      /* Format Tag                              */
  829.     ULONG   ulSamplesPerSec;  /* Sampling Rate                           */
  830.     ULONG   ulChannels;       /* Number of channels                      */
  831.     ULONG   ulFormatMode;     /* Either MCI_RECORD or MCI_PLAY           */
  832. } MCI_WAVE_GETDEVCAPS_PARMS;
  833. typedef MCI_WAVE_GETDEVCAPS_PARMS   * PMCI_WAVE_GETDEVCAPS_PARMS;
  834.  
  835. /*********************************************************************/
  836. /* potential values for the ulValue field of MCI_AMP_GETDEVCAPS  */
  837. /*********************************************************************/
  838. #define  MCI_AMP_CAN_SET_MONITOR           MCI_AMP_SET_MONITOR
  839. #define  MCI_AMP_CAN_SET_BALANCE           MCI_AMP_SET_BALANCE
  840. #define  MCI_AMP_CAN_SET_ALC               MCI_AMP_SET_ALC
  841. #define  MCI_AMP_CAN_SET_MONITOR           MCI_AMP_SET_MONITOR
  842. #define  MCI_AMP_CAN_SET_CROSSOVER         MCI_AMP_SET_CROSSOVER
  843. #define  MCI_AMP_CAN_SET_LOUDNESS          MCI_AMP_SET_LOUDNESS
  844. #define  MCI_AMP_CAN_SET_MUTE              MCI_AMP_SET_MUTE
  845. #define  MCI_AMP_CAN_SET_REVERB            MCI_AMP_SET_REVERB
  846. #define  MCI_AMP_CAN_SET_STEREOENHANCE     MCI_AMP_SET_STEREOENHANCE
  847. #define  MCI_AMP_CAN_SET_CUSTOM1           MCI_AMP_SET_CUSTOM1
  848. #define  MCI_AMP_CAN_SET_CUSTOM2           MCI_AMP_SET_CUSTOM2
  849. #define  MCI_AMP_CAN_SET_CUSTOM3           MCI_AMP_SET_CUSTOM3
  850. #define  MCI_AMP_CAN_SET_LRVOLUME          MCI_AMP_SET_LRVOLUME
  851. #define  MCI_AMP_CAN_SET_BASS              MCI_AMP_SET_BASS
  852. #define  MCI_AMP_CAN_SET_MID               MCI_AMP_SET_MID
  853. #define  MCI_AMP_CAN_SET_TREBLE            MCI_AMP_SET_TREBLE
  854. #define  MCI_AMP_CAN_SET_PITCH             MCI_AMP_SET_PITCH
  855. #define  MCI_AMP_CAN_SET_GAIN              MCI_AMP_SET_GAIN
  856. #define  MCI_AMP_CAN_SET_CHORUS            MCI_AMP_SET_CHORUS
  857. #define  MCI_AMP_CAN_SET_VOLUME            MCI_AMP_SET_VOLUME
  858.  
  859.  
  860. /*************************************************************************/
  861. /* potential values for the ulExtended field of MCI_AMP_GETDEVCAPS_PARMS */
  862. /*************************************************************************/
  863. #define MCI_MIXER_LINE    0x00000001L
  864.  
  865.  
  866. /*********************************************************************/
  867. /* parameter structure for the MCI_AMP_GETDEVCAPS                    */
  868. /*********************************************************************/
  869. typedef struct _MCI_AMP_GETDEVCAPS_PARMS {
  870.     ULONG   hwndCallback;     /* PM window handle for MCI notify message */
  871.     ULONG   ulReturn;         /* Return field                            */
  872.     ULONG   ulItem;           /* Item field for GETDEVCAPS item to query */
  873.     USHORT  usMessage;        /* Field to hold MCI message to query      */
  874.     USHORT  usReserved0;      /* Reserved field                          */
  875.     ULONG   ulLength;         /* Length of structure in ULONGS           */
  876.     ULONG   ulValue;          /* Value to determine caps                 */
  877.     ULONG   ulAttribute;      /* Flags to modified the extended parms    */
  878.     ULONG   ulExtended;       /* Extended flags field                    */
  879. } MCI_AMP_GETDEVCAPS_PARMS;
  880. typedef MCI_AMP_GETDEVCAPS_PARMS   * PMCI_AMP_GETDEVCAPS_PARMS;
  881.  
  882.  
  883. /*********************************************************************/
  884. /* values for the ulFlags field of MCI_MIXEVENT_PARMS                */
  885. /*********************************************************************/
  886. #define MCI_MIX_ATTRIBUTE       0x00000001L
  887. #define MCI_MIX_CONNECTOR       0x00000002L
  888.  
  889. /*********************************************************************/
  890. /* values for the lParam field for mix_notify                        */
  891. /*********************************************************************/
  892.  
  893. #define MCI_MIXNOTIFY_ON        0x00000004L
  894. #define MCI_MIXNOTIFY_OFF       0x00000008L
  895.  
  896. /*********************************************************************/
  897. /* value to indicate type of MM_MCIEVENT                             */
  898. /*********************************************************************/
  899.  
  900. #define MCI_MIXEVENT            0x00000001L
  901.  
  902.  
  903. /*********************************************************************/
  904. /* parameter structure for the MCI_MIXEVENT_PARMS                    */
  905. /*********************************************************************/
  906. typedef struct _MCI_MIXEVENT_PARMS
  907.    {
  908.    ULONG  ulLength;        /* Length of struct                          */
  909.    HWND   hwndMixer;       /* window to inform of mixer changes         */
  910.    ULONG  ulFlags;         /* Either MCI_MIX_ATTRIBUTE                  */
  911.                            /*      or MCI_MIX_CONNECTOR                 */
  912.    USHORT usDeviceID;      /* device id to notify of the change         */
  913.    ULONG  ulDeviceType;    /* Device Type which generated the change    */
  914.    ULONG  ulDeviceOrdinal; /* Ordinal of device Type                    */
  915.    ULONG  ulAttribute;     /* Attribute that changed(volume, bass etc.) */
  916.    ULONG  ulValue;         /* new value of the attribute which changed  */
  917.    ULONG  ulConnectorType; /* Connector Type                            */
  918.    ULONG  ulConnectorIndex;/* Connector Index                           */
  919.    ULONG  ulConnStatus;    /* Is connector enabled/disabled.            */
  920.  
  921.    } MCI_MIXEVENT_PARMS;
  922.  
  923. typedef MCI_MIXEVENT_PARMS *PMCI_MIXEVENT_PARMS;
  924.  
  925.  
  926. /*********************************************************************/
  927. /* flag values for the MCI_GETIMAGEBUFFER and MCI_SETIMAGEBUFFER msg */
  928. /*     0x0000XX00 are reserved for MCI_GETIMAGEBUFFER and            */
  929. /*       MCI_SETIMAGEBUFFER Flags                                    */
  930. /*     MCI_CONVERT is defined by MCI_CAPTURE message as 0x00001000L  */
  931. /*********************************************************************/
  932. #define MCI_USE_HW_BUFFER                   0x00000400L
  933. #define MCI_GET_HW_BUFFER_PTR               0x00000800L
  934.  
  935.    /***************************************************/
  936.    /* parm structure for MCI_GETIMAGEBUFFER and       */
  937.    /*                    MCI_SETIMAGEBUFFER messages  */
  938.    /***************************************************/
  939. typedef  struct _MCI_IMAGE_PARMS {
  940.     HWND    hwndCallback;       /* PM window handle for MCI notify message */
  941.     ULONG   ulPelFormat;        /* Format of the image data returned       */
  942.     USHORT  usBitCount;         /* Number of bitsimage data returned       */
  943.     USHORT  usReserved0;        /* Reserved field                          */
  944.     ULONG   ulImageCompression; /*                                         */
  945.     RECTL   rect;               /* Image area to get/set                   */
  946.     PVOID   pPelBuffer;         /* Pel data buffer                         */
  947.     ULONG   ulPelBufferHeight;  /* Number of rows in buffer                */
  948.     ULONG   ulPelBufferWidth;   /* Pels per row in buffer                  */
  949.     ULONG   ulBufLen;           /* Pel data buffer length in bytes         */
  950.  
  951. } MCI_IMAGE_PARMS;
  952. typedef MCI_IMAGE_PARMS   *PMCI_IMAGE_PARMS;
  953.  
  954. /*********************************************************************/
  955. /* flags for the MCI_GETIMAGEPALETTE message                         */
  956. /*     0x0000XX00 are reserved for MCI_GETIMAGEPALETTE flags         */
  957. /*********************************************************************/
  958. #define MCI_FIND_BEST_REGISTERED            0x00000100L
  959. #define MCI_QUERY_REGISTERED_MAP            0x00000200L
  960. #define MCI_QUERY_REGISTERED_MAP_SIZE       0x00000400L
  961.  
  962.  
  963.    /***************************************************/
  964.    /* parameter structure for MCI_GETIMAGEPALETTE and */
  965.    /*    MCI_SETIMAGEPALETTE messages                 */
  966.    /***************************************************/
  967. typedef  struct _MCI_PALETTE_PARMS {
  968.     HWND    hwndCallback;    /* PM window handle for MCI notify message   */
  969.     USHORT  usRegisteredMap; /* Id of the palette from the registed color */
  970.                              /* map                                       */
  971.     USHORT  usReserved0;     /* Reserved field                            */
  972.     ULONG   ulPalEntries;    /* size of the palette returned              */
  973.     PVOID   pPalette;        /* pointer to the palette                    */
  974. } MCI_PALETTE_PARMS;
  975. typedef MCI_PALETTE_PARMS   *PMCI_PALETTE_PARMS;
  976.  
  977.  
  978. /*********************************************************************/
  979. /* Parameter structure for the MCI_GETTOC message                    */
  980. /*********************************************************************/
  981. typedef struct _MCI_TOC_REC {
  982.     BYTE      TrackNum;      /* Returned Track Number                          */
  983.     ULONG     ulStartAddr;   /* Starting address of the track in MMTIME format */
  984.     ULONG     ulEndAddr;     /* Ending address of the track in MMTIME format   */
  985.     BYTE      Control;       /* Track Control information                      */
  986.     USHORT    usCountry;     /* Country                                        */
  987.     ULONG     ulOwner;       /* Owner                                          */
  988.     ULONG     ulSerialNum;   /* Serial Number                                  */
  989. } MCI_TOC_REC;
  990. typedef MCI_TOC_REC   *PTOCREC;
  991.  
  992. typedef struct _MCI_TOC_PARMS {
  993.     HWND      hwndCallback;  /* PM window handle for MCI notify message    */
  994.     PTOCREC   pBuf;          /* Pointer to array MCI_TOC_REC structures to */
  995.                              /* be filled in by the mci device             */
  996.     ULONG     ulBufSize;     /* Size of the array                          */
  997. } MCI_TOC_PARMS;
  998. typedef MCI_TOC_PARMS   * PMCI_TOC_PARMS;
  999.  
  1000. /*********************************************************************/
  1001. /* parameters for the MCI_GROUP message                              */
  1002. /*     0x00XXXX00 are reserved for MCI_GROUP flags                   */
  1003. /*********************************************************************/
  1004. #define MCI_SYNCHRONIZE                     0x00000100L
  1005. #define MCI_NOPIECEMEAL                     0x00000200L
  1006. #define MCI_GROUP_MAKE                      0x00000400L
  1007. #define MCI_GROUP_DELETE                    0x00000800L
  1008. #define MCI_GROUP_ALIAS                     0x00001000L
  1009. #define MCI_GROUP_MASTER                    0x00002000L
  1010.  
  1011. typedef struct _MCI_GROUP_PARMS {
  1012.     HWND    hwndCallback;    /* PM window handle for MCI notify message.    */
  1013.     USHORT  usGroupID;       /* GroupID                                     */
  1014.     USHORT  usReserved0;     /* RESERVED                                    */
  1015.     ULONG   ulStructLength;  /* Length of Structure in ULONGS.              */
  1016.     USHORT  usMasterID;      /* ID of Master device in Synchrounous groups. */
  1017.     USHORT  usReserved1;     /* RESERVED                                    */
  1018.     PSZ     pszGroupAlias;   /* Pointer to Alias Name.                      */
  1019.     ULONG   ulNumDevices;    /* Number of Devices in group.                 */
  1020.     PULONG  paulDeviceID;    /* Array of Device ids in the group.           */
  1021. } MCI_GROUP_PARMS;
  1022. typedef MCI_GROUP_PARMS *PMCI_GROUP_PARMS;
  1023.  
  1024.  
  1025. /*********************************************************************/
  1026. /* flags for the MCI_INFO message                                    */
  1027. /*     0x00000X00 are reserved for MCI_INFO flags                    */
  1028. /*********************************************************************/
  1029. #define MCI_INFO_PRODUCT                    0x00000100L
  1030. #define MCI_INFO_FILE                       0x00000200L
  1031.  
  1032.     /************************************************/
  1033.     /* CD Audio                MCI_INFO             */
  1034.     /************************************************/
  1035. #define MCI_CD_INFO_ID                      0x00010000L
  1036. #define MCI_CD_INFO_UPC                     0x00020000L
  1037.  
  1038.     /************************************************/
  1039.     /* Videodisc               MCI_INFO             */
  1040.     /************************************************/
  1041. #define MCI_VD_INFO_LABEL                   0x00001000L
  1042.  
  1043.     /************************************************/
  1044.     /* Digital Video           MCI_INFO             */
  1045.     /************************************************/
  1046. #define MCI_DGV_INFO_VIDEO_FILE             0x00001000L
  1047. #define MCI_DGV_INFO_IMAGE_FILE             0x00002000L
  1048. #define MCI_DGV_INFO_REGION                 0x00004000L
  1049. #define MCI_DGV_INFO_REGION_TEXT            0x00008000L
  1050. #define MCI_DGV_INFO_TEXT                   0x00010000L
  1051.  
  1052.     /************************************************/
  1053.     /* Video Overlay           MCI_INFO             */
  1054.     /************************************************/
  1055. #define MCI_OVLY_INFO_TEXT                  0x00010000L
  1056.  
  1057.  
  1058. typedef struct _MCI_INFO_PARMS {
  1059.     HWND      hwndCallback;  /* PM window handle for MCI notify message */
  1060.     PSZ       pszReturn;     /* Pointer to return buffer                */
  1061.     ULONG     ulRetSize;     /* Return buffer size                      */
  1062. } MCI_INFO_PARMS;
  1063. typedef MCI_INFO_PARMS   *PMCI_INFO_PARMS;
  1064.  
  1065. /*********************************************************************/
  1066. /* parameters and flags for the MCI_LOAD message                     */
  1067. /*     0x00000X00 are reserved for MCI_LOAD flags                    */
  1068. /*********************************************************************/
  1069. typedef struct _MCI_LOAD_PARMS {
  1070.     HWND   hwndCallback;     /* PM window handle for MCI notify message */
  1071.     PSZ    pszElementName;   /* File name to loads                      */
  1072. } MCI_LOAD_PARMS;
  1073. typedef MCI_LOAD_PARMS   *PMCI_LOAD_PARMS;
  1074.  
  1075. /*********************************************************************/
  1076. /* parameters and flags for the MCI_MASTERAUDIO                      */
  1077. /*     0x000XXX00 are reserved for MCI_MASTERAUDIO  flags            */
  1078. /*********************************************************************/
  1079. #define MCI_ON                              0x00000100L
  1080. #define MCI_OFF                             0x00000200L
  1081. #define MCI_HEADPHONES                      0x00000400L
  1082. #define MCI_SPEAKERS                        0x00000800L
  1083. #define MCI_MASTERVOL                       0x00001000L
  1084. #define MCI_SAVESETTING                     0x00002000L
  1085. #define MCI_QUERYSAVEDSETTING               0x00004000L
  1086. #define MCI_QUERYCURRENTSETTING             0x00008000L
  1087.  
  1088.  
  1089. typedef struct _MCI_MASTERAUDIO_PARMS {
  1090.     HWND    hwndDummyCallback; /* Notify not allowed for this message     */
  1091.     ULONG   ulReturn;          /* Return field for query information      */
  1092.     ULONG   ulMasterVolume;    /* Master volume field                     */
  1093. } MCI_MASTERAUDIO_PARMS;
  1094. typedef MCI_MASTERAUDIO_PARMS   *PMCI_MASTERAUDIO_PARMS;
  1095.  
  1096. /*********************************************************************/
  1097. /* parameters and flags for the MCI_OPEN message                     */
  1098. /*     0x0000XX00 are reserved for MCI_OPEN flags                    */
  1099. /*********************************************************************/
  1100. #define MCI_OPEN_ELEMENT                    0x00000100L
  1101. #define MCI_OPEN_ALIAS                      0x00000200L
  1102. #define MCI_OPEN_ELEMENT_ID                 0x00000400L
  1103. #define MCI_OPEN_PLAYLIST                   0x00000800L
  1104. #define MCI_OPEN_TYPE_ID                    0x00001000L
  1105. #define MCI_OPEN_SHAREABLE                  0x00002000L
  1106. #define MCI_OPEN_MMIO                       0x00004000L
  1107. #define MCI_READONLY                        0x00008000L
  1108.  
  1109.     /***************************************************/
  1110.     /* parameters and flags for the MCI_OPEN message   */
  1111.     /* Digital Video, Video Overlay specific           */
  1112.     /***************************************************/
  1113. #define MCI_VID_OPEN_PARENT                 0x01000000L
  1114. #define MCI_DGV_OPEN_PARENT                 MCI_VID_OPEN_PARENT
  1115. #define MCI_OVLY_OPEN_PARENT                MCI_VID_OPEN_PARENT
  1116.  
  1117. typedef struct _MCI_OPEN_PARMS {
  1118.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  1119.     USHORT  usDeviceID;      /* Device ID returned to user              */
  1120.     USHORT  usReserved0;     /* Reserved                                */
  1121.     PSZ     pszDeviceType;   /* Device name from SYSTEM.INI             */
  1122.     PSZ     pszElementName;  /* Typically a file name or NULL           */
  1123.     PSZ     pszAlias;        /* Optional device alias                   */
  1124. } MCI_OPEN_PARMS;
  1125. typedef MCI_OPEN_PARMS   *PMCI_OPEN_PARMS;
  1126.  
  1127.     /**********************************************************/
  1128.     /* parameters for the AMP MCI_OPEN message                */
  1129.     /**********************************************************/
  1130. typedef struct _MCI_AMP_OPEN_PARMS {
  1131.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  1132.     USHORT  usDeviceID;      /* Device ID returned to user              */
  1133.     USHORT  usReserved0;     /* Reserved field                          */
  1134.     PSZ     pszDeviceType;   /* Device name from SYSTEM.INI             */
  1135.     PSZ     pszElementName;  /* Typically a file name or NULL           */
  1136.     PSZ     pszAlias;        /* Optional device alias                   */
  1137.     PVOID   pDevDataPtr;     /* Pointer to device data                  */
  1138. } MCI_AMP_OPEN_PARMS;
  1139. typedef MCI_AMP_OPEN_PARMS   *PMCI_AMP_OPEN_PARMS;
  1140.  
  1141.     /**********************************************************/
  1142.     /* parameters for MCI_OPEN message for video devices      */
  1143.     /**********************************************************/
  1144.  
  1145. typedef  struct _MCI_VID_OPEN_PARMS {
  1146.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  1147.     USHORT  usDeviceID;      /* Device ID returned to user              */
  1148.     USHORT  usReserved0;     /* Reserved field                          */
  1149.     PSZ     pszDeviceType;   /* Device name from SYSTEM.INI             */
  1150.     PSZ     pszElementName;  /* Typically a file name or NULL           */
  1151.     PSZ     pszAlias;        /* Optional device alias                   */
  1152.     HWND    hwndParent;      /* Parent window handle                    */
  1153. } MCI_VID_OPEN_PARMS;
  1154.  
  1155. typedef MCI_VID_OPEN_PARMS   MCI_DGV_OPEN_PARMS;
  1156. typedef MCI_DGV_OPEN_PARMS   *PMCI_DGV_OPEN_PARMS;
  1157.  
  1158. typedef MCI_VID_OPEN_PARMS    MCI_OVLY_OPEN_PARMS;
  1159. typedef MCI_OVLY_OPEN_PARMS   *PMCI_OVLY_OPEN_PARMS;
  1160.  
  1161.     /***************************************************/
  1162.     /* MCI_PLAY flag values for videodisc              */
  1163.     /***************************************************/
  1164. #define MCI_VD_PLAY_REVERSE                 0x00001000L
  1165. #define MCI_VD_PLAY_FAST                    0x00002000L
  1166. #define MCI_VD_PLAY_SPEED                   0x00004000L
  1167. #define MCI_VD_PLAY_SCAN                    0x00008000L
  1168. #define MCI_VD_PLAY_SLOW                    0x00010000L
  1169.  
  1170.     /***************************************************/
  1171.     /* MCI_PLAY flag values for digital video          */
  1172.     /***************************************************/
  1173. #define MCI_DGV_PLAY_REVERSE                0x00001000L
  1174. #define MCI_DGV_PLAY_FAST                   0x00002000L
  1175. #define MCI_DGV_PLAY_SPEED                  0x00004000L
  1176. #define MCI_DGV_PLAY_SCAN                   0x00008000L
  1177. #define MCI_DGV_PLAY_SLOW                   0x00010000L
  1178. #define MCI_DGV_PLAY_REPEAT                 0x00020000L
  1179.  
  1180. typedef struct _MCI_PLAY_PARMS {
  1181.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  1182.     ULONG   ulFrom;          /* Play from this position                 */
  1183.     ULONG   ulTo;            /* Play to this position                   */
  1184. } MCI_PLAY_PARMS;
  1185. typedef MCI_PLAY_PARMS   *PMCI_PLAY_PARMS;
  1186.  
  1187. typedef struct _MCI_VD_PLAY_PARMS {
  1188.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  1189.     ULONG   ulFrom;          /* Play from this position                 */
  1190.     ULONG   ulTo;            /* Play to this position                   */
  1191.     ULONG   ulFactor;        /* Play at this speed factor               */
  1192. } MCI_VD_PLAY_PARMS;
  1193. typedef MCI_VD_PLAY_PARMS   *PMCI_VD_PLAY_PARMS;
  1194.  
  1195. typedef  struct _MCI_DGV_PLAY_PARMS {
  1196.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  1197.     ULONG   ulFrom;          /* Play from this position                 */
  1198.     ULONG   ulTo;            /* Play to this position                   */
  1199.     ULONG   ulSpeed;         /* Specifies the play rate in frames per second */
  1200. } MCI_DGV_PLAY_PARMS;
  1201. typedef MCI_DGV_PLAY_PARMS   *PMCI_DGV_PLAY_PARMS;
  1202.  
  1203. /*********************************************************************/
  1204. /* parameters for the MCI_PUT  message                               */
  1205. /*     0x00000X00 are reserved for MCI_PUT  flags                    */
  1206. /*********************************************************************/
  1207. #define MCI_VID_PUT_RECT                    0x00000100L
  1208. #define MCI_VID_PUT_DESTINATION             0x00000200L
  1209. #define MCI_VID_PUT_SOURCE                  0x00000400L
  1210. #define MCI_VID_PUT_WINDOW_MOVE             0x00000800L
  1211. #define MCI_VID_PUT_WINDOW_SIZE             0x00001000L
  1212.  
  1213. #define MCI_DGV_PUT_RECT                    MCI_VID_PUT_RECT
  1214. #define MCI_DGV_PUT_DESTINATION             MCI_VID_PUT_DESTINATION
  1215. #define MCI_DGV_PUT_SOURCE                  MCI_VID_PUT_SOURCE
  1216. #define MCI_DGV_PUT_WINDOW_MOVE             MCI_VID_PUT_WINDOW_MOVE
  1217. #define MCI_DGV_PUT_WINDOW_SIZE             MCI_VID_PUT_WINDOW_SIZE
  1218. #define MCI_DGV_MONITOR                     0x00010000L
  1219. #define MCI_DGV_RECORD                      0x00020000L
  1220.  
  1221. #define MCI_OVLY_PUT_RECT                   MCI_VID_PUT_RECT
  1222. #define MCI_OVLY_PUT_DESTINATION            MCI_VID_PUT_DESTINATION
  1223. #define MCI_OVLY_PUT_SOURCE                 MCI_VID_PUT_SOURCE
  1224. #define MCI_OVLY_PUT_WINDOW_MOVE            MCI_VID_PUT_WINDOW_MOVE
  1225. #define MCI_OVLY_PUT_WINDOW_SIZE            MCI_VID_PUT_WINDOW_SIZE
  1226.  
  1227.     /***************************************************/
  1228.     /* Rectangle parameters for MCI_PUT, MCI_WHERE,    */
  1229.     /* MCI_FREEZE, and MCI_UNFREEZE                    */
  1230.     /***************************************************/
  1231.  
  1232. typedef  struct _MCI_VID_RECT_PARMS {
  1233.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  1234.     RECTL   rc;              /* rectangle array specifying the offset   */
  1235.                              /* and size of a rectangle                 */
  1236. } MCI_VID_RECT_PARMS;
  1237.  
  1238. typedef MCI_VID_RECT_PARMS   MCI_DGV_RECT_PARMS;
  1239. typedef MCI_DGV_RECT_PARMS   *PMCI_DGV_RECT_PARMS;
  1240.  
  1241. typedef MCI_VID_RECT_PARMS   MCI_OVLY_RECT_PARMS;
  1242. typedef MCI_OVLY_RECT_PARMS  *PMCI_OVLY_RECT_PARMS;
  1243.  
  1244. /*********************************************************************/
  1245. /* parameters for the MCI_RECORD message                             */
  1246. /*     0x00000X00 are reserved for MCI_RECORD flags                  */
  1247. /*********************************************************************/
  1248. #define MCI_RECORD_INSERT                   0x00000100L
  1249. #define MCI_RECORD_OVERWRITE                0x00000200L
  1250.  
  1251. #define MCI_DGV_RECORD_RECT                 0x00000400L
  1252.  
  1253. typedef struct _MCI_RECORD_PARMS {
  1254.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  1255.     ULONG   ulFrom;          /* Record from position                    */
  1256.     ULONG   ulTo;            /* Record to position                      */
  1257. } MCI_RECORD_PARMS;
  1258. typedef MCI_RECORD_PARMS   *PMCI_RECORD_PARMS;
  1259.  
  1260. /*********************************************************************/
  1261. /* parameters for the MCI_RELEASEDEVICE message                      */
  1262. /*     0xXXXXXX00 are reserved for MCI_RELEASEDEVICE message         */
  1263. /*********************************************************************/
  1264. #define MCI_RETURN_RESOURCE                 0x00000100L
  1265.  
  1266. /*********************************************************************/
  1267. /* parameters for the MCI_RESTORE message                            */
  1268. /*     0x0000XX00 are reserved for MCI_RESTORE flags                 */
  1269. /*     MCI_CONVERT is defined by MCI_CAPTURE message as 0x00001000L  */
  1270. /*********************************************************************/
  1271. #define MCI_RESTORE_SRC_RECT                0x00000100L
  1272. #define MCI_RESTORE_DEST_RECT               0x00000200L
  1273.  
  1274. typedef struct _MCI_RESTORE_PARMS {
  1275.     HWND    hwndCallback;    /* PM window handle for MCI notify message     */
  1276.     RECTL   SrcRect;         /* Rectangle array specifying the source       */
  1277.                              /* area to be restored                         */
  1278.     RECTL   DestRect;        /* Rectangle array specifying the destination  */
  1279.                              /* area to be restored                         */
  1280. } MCI_RESTORE_PARMS;
  1281. typedef MCI_RESTORE_PARMS   *PMCI_RESTORE_PARMS;
  1282.  
  1283. /*********************************************************************/
  1284. /* parameters for the MCI_SAVE  message                              */
  1285. /*     0x00000X00 are reserved for MCI_SAVE  flags                   */
  1286. /*********************************************************************/
  1287. #define MCI_SAVE_FILE                       0x00000100L
  1288.  
  1289.     /*************************************************/
  1290.     /* Digital Video               MCI_SAVE          */
  1291.     /*************************************************/
  1292.  
  1293. #define MCI_DGV_SAVE_VIDEO_FILE             0x00001000L
  1294. #define MCI_DGV_SAVE_IMAGE_FILE             0x00002000L
  1295.  
  1296. typedef struct _MCI_SAVE_PARMS {
  1297.     HWND    hwndCallback;    /* PM window handle for MCI notify message     */
  1298.     PSZ     pszFileName;     /* Filename to save data to                    */
  1299. } MCI_SAVE_PARMS;
  1300. typedef MCI_SAVE_PARMS   *PMCI_SAVE_PARMS;
  1301.  
  1302. /*********************************************************************/
  1303. /* parameters for the MCI_SEEK message                               */
  1304. /*     0x00000X00 are reserved for MCI_SEEK flags                    */
  1305. /*********************************************************************/
  1306. #define MCI_TO_START                        0x00000100L
  1307. #define MCI_TO_END                          0x00000200L
  1308.  
  1309.     /*************************************************/
  1310.     /* Digital Video               MCI_SEEK          */
  1311.     /*************************************************/
  1312.  
  1313. #define MCI_DGV_SEEK_TO_NEAREST_IFRAME      0x00100000L
  1314.  
  1315.     /*************************************************/
  1316.     /* Videodisc                   MCI_SEEK          */
  1317.     /*************************************************/
  1318. #define MCI_VD_SEEK_REVERSE                 0x00001000L
  1319.  
  1320. typedef struct _MCI_SEEK_PARMS {
  1321.     HWND    hwndCallback;    /* PM window handle for MCI notify message     */
  1322.     ULONG   ulTo;            /* Seek to this position                       */
  1323. } MCI_SEEK_PARMS;
  1324. typedef MCI_SEEK_PARMS   *PMCI_SEEK_PARMS;
  1325.  
  1326. /*********************************************************************/
  1327. /* Flags for the MCI_SET message                                     */
  1328. /*     0x00XXXX00 are reserved for MCI_SET  flags                    */
  1329. /*********************************************************************/
  1330. #define MCI_SET_ITEM                        0x00000100L
  1331. #define MCI_SET_ON                          0x00000200L
  1332. #define MCI_SET_OFF                         0x00000400L
  1333. #define MCI_SET_VIDEO                       0x00000800L
  1334. #define MCI_SET_AUDIO                       0x00001000L
  1335. #define MCI_SET_DOOR_OPEN                   0x00002000L
  1336. #define MCI_SET_DOOR_CLOSED                 0x00004000L
  1337. #define MCI_SET_SPEED_FORMAT                0x00008000L
  1338. #define MCI_SET_TIME_FORMAT                 0x00010000L
  1339. #define MCI_SET_DOOR_LOCK                   0x00020000L
  1340. #define MCI_SET_DOOR_UNLOCK                 0x00040000L
  1341. #define MCI_SET_VOLUME                      0x00080000L
  1342. #define MCI_SET_ITEM_FOURCC                 0x00100000L
  1343. #define MCI_SET_REVERSE                     0x00200000L
  1344.  
  1345. /*******************************************************/
  1346. /* Values for the ulAudio field                        */
  1347. /*******************************************************/
  1348. #define MCI_SET_AUDIO_ALL                   0x00000000L
  1349. #define MCI_SET_AUDIO_LEFT                  0x00000001L
  1350. #define MCI_SET_AUDIO_RIGHT                 0x00000002L
  1351.  
  1352. /*******************************************************/
  1353. /* MCI_SET flags for amp/mixer                         */
  1354. /*******************************************************/
  1355. #define MCI_AMP_SET_BALANCE                 0x00100000L
  1356. #define MCI_AMP_SET_PITCH                   0x00200000L
  1357. #define MCI_AMP_SET_TREBLE                  0x00400000L
  1358. #define MCI_AMP_SET_BASS                    0x00800000L
  1359. #define MCI_AMP_SET_GAIN                    0x01000000L
  1360.  
  1361. #define MCI_AMP_SET_ALC                     0x00000004L
  1362. #define MCI_AMP_SET_CROSSOVER               0x00000010L
  1363. #define MCI_AMP_SET_LOUDNESS                0x00000020L
  1364. #define MCI_AMP_SET_MUTE                    0x00000040L
  1365. #define MCI_AMP_SET_REVERB                  0x00000080L
  1366. #define MCI_AMP_SET_STEREOENHANCE           0x00000100L
  1367. #define MCI_AMP_SET_CUSTOM1                 0x00000200L
  1368. #define MCI_AMP_SET_CUSTOM2                 0x00000400L
  1369. #define MCI_AMP_SET_CUSTOM3                 0x00000800L
  1370. #define MCI_AMP_SET_LRVOLUME                0x00001000L
  1371. #define MCI_AMP_SET_MID                     0x00020000L
  1372. #define MCI_AMP_SET_CHORUS                  0x00004000L
  1373. #define MCI_AMP_SET_VOLUME                  MCI_SET_VOLUME
  1374.  
  1375. /*******************************************************/
  1376. /* General MCI_SET item values                         */
  1377. /*******************************************************/
  1378. #define MCI_SET_MONITOR                     0x00000001L
  1379. #define MCI_SET_MONITOR_AUDIO               0x00000002L
  1380. #define MCI_SET_MONITOR_VIDEO               0x00000003L
  1381. #define MCI_SET_RECORD                      0x00000004L
  1382.  
  1383. /*******************************************************/
  1384. /* MCI_SET item values for amp/mixer                   */
  1385. /*******************************************************/
  1386. #define MCI_AMP_SET_MONITOR                 MCI_SET_MONITOR_AUDIO
  1387. #define MCI_AMP_SET_AUDIO                   0x00000008L
  1388.  
  1389.  
  1390. /*******************************************************/
  1391. /* MCI_SET flags for CDXA                              */
  1392. /*******************************************************/
  1393. #define MCI_CDXA_SET_CHANNEL                0x01000000L
  1394. #define MCI_CDXA_AUDIO_DEVICE               0x10000000L
  1395. #define MCI_CDXA_AUDIO_BUFFER               0x02000000L
  1396. #define MCI_CDXA_VIDEO_BUFFER               0x04000000L
  1397. #define MCI_CDXA_DATA_BUFFER                0x08000000L
  1398.  
  1399. /*******************************************************/
  1400. /* MCI_SET flags for videodisc                         */
  1401. /*******************************************************/
  1402. #define MCI_VD_SET_ON                       MCI_SET_ON
  1403. #define MCI_VD_SET_OFF                      MCI_SET_OFF
  1404. #define MCI_VD_SET_VIDEO                    MCI_SET_VIDEO
  1405. #define MCI_VD_SET_CHANNEL                  0x00100000L
  1406. #define MCI_VD_SET_DISPLAY                  0x00200000L
  1407.  
  1408. /*******************************************************/
  1409. /* Generic MCI_SET item values for video devices       */
  1410. /*******************************************************/
  1411. #define MCI_VID_SET_VIDEO_COMPRESSION           MCI_VID_ITEM_BASE
  1412. #define MCI_VID_SET_IMAGE_COMPRESSION           (MCI_VID_ITEM_BASE+1)
  1413. #define MCI_VID_SET_IMAGE_BITSPERPEL            (MCI_VID_ITEM_BASE+2)
  1414. #define MCI_VID_SET_IMAGE_PELFORMAT             (MCI_VID_ITEM_BASE+3)
  1415. #define MCI_VID_SET_BRIGHTNESS                  (MCI_VID_ITEM_BASE+4)
  1416. #define MCI_VID_SET_CONTRAST                    (MCI_VID_ITEM_BASE+5)
  1417. #define MCI_VID_SET_HUE                         (MCI_VID_ITEM_BASE+6)
  1418. #define MCI_VID_SET_SATURATION                  (MCI_VID_ITEM_BASE+7)
  1419. #define MCI_VID_SET_SHARPNESS                   (MCI_VID_ITEM_BASE+8)
  1420. #define MCI_VID_SET_GREYSCALE                   (MCI_VID_ITEM_BASE+9)
  1421. #define MCI_VID_SET_IMAGE_QUALITY               (MCI_VID_ITEM_BASE+10)
  1422. #define MCI_VID_SET_VIDEO_QUALITY               (MCI_VID_ITEM_BASE+11)
  1423. #define MCI_VID_SET_IMAGE_COMPRESSION_METHOD    (MCI_VID_ITEM_BASE+12)
  1424. #define MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE  (MCI_VID_ITEM_BASE+13)
  1425. #define MCI_VID_SET_IMAGE_FILE_FORMAT           (MCI_VID_ITEM_BASE+14)
  1426. #define MCI_VID_SET_REF_INTERVAL                (MCI_VID_ITEM_BASE+15)
  1427. #define MCI_VID_SET_MAXDATARATE                 (MCI_VID_ITEM_BASE+16)
  1428. #define MCI_VID_SET_VIDEO_FILE_FORMAT           (MCI_VID_ITEM_BASE+17)
  1429.  
  1430. /*******************************************************/
  1431. /* MCI_SET item values for video overlay               */
  1432. /*******************************************************/
  1433. #define MCI_OVLY_SET_IMAGE_COMPRESSION          MCI_VID_SET_IMAGE_COMPRESSION
  1434. #define MCI_OVLY_SET_IMAGE_BITSPERPEL           MCI_VID_SET_IMAGE_BITSPERPEL
  1435. #define MCI_OVLY_SET_IMAGE_PELFORMAT            MCI_VID_SET_IMAGE_PELFORMAT
  1436. #define MCI_OVLY_SET_BRIGHTNESS                 MCI_VID_SET_BRIGHTNESS
  1437. #define MCI_OVLY_SET_CONTRAST                   MCI_VID_SET_CONTRAST
  1438. #define MCI_OVLY_SET_HUE                        MCI_VID_SET_HUE
  1439. #define MCI_OVLY_SET_SATURATION                 MCI_VID_SET_SATURATION
  1440. #define MCI_OVLY_SET_SHARPNESS                  MCI_VID_SET_SHARPNESS
  1441. #define MCI_OVLY_SET_GREYSCALE                  MCI_VID_SET_GREYSCALE
  1442. #define MCI_OVLY_SET_IMAGE_QUALITY              MCI_VID_SET_IMAGE_QUALITY
  1443. #define MCI_OVLY_SET_IMAGE_COMPRESSION_METHOD   MCI_VID_SET_IMAGE_COMPRESSION_METHOD
  1444. #define MCI_OVLY_SET_MINIMUM_VIDEO_REFRESH_RATE MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE
  1445. #define MCI_OVLY_SET_IMAGE_FILE_FORMAT          MCI_VID_SET_IMAGE_FILE_FORMAT
  1446.  
  1447. /*******************************************************/
  1448. /* MCI_SET item values for digital video               */
  1449. /*******************************************************/
  1450. #define MCI_DGV_SET_VIDEO_COMPRESSION           MCI_VID_SET_VIDEO_COMPRESSION
  1451. #define MCI_DGV_SET_IMAGE_COMPRESSION           MCI_VID_SET_IMAGE_COMPRESSION
  1452. #define MCI_DGV_SET_IMAGE_BITSPERPEL            MCI_VID_SET_IMAGE_BITSPERPEL
  1453. #define MCI_DGV_SET_IMAGE_PELFORMAT             MCI_VID_SET_IMAGE_PELFORMAT
  1454. #define MCI_DGV_SET_BRIGHTNESS                  MCI_VID_SET_BRIGHTNESS
  1455. #define MCI_DGV_SET_CONTRAST                    MCI_VID_SET_CONTRAST
  1456. #define MCI_DGV_SET_HUE                         MCI_VID_SET_HUE
  1457. #define MCI_DGV_SET_SATURATION                  MCI_VID_SET_SATURATION
  1458. #define MCI_DGV_SET_SHARPNESS                   MCI_VID_SET_SHARPNESS
  1459. #define MCI_DGV_SET_GREYSCALE                   MCI_VID_SET_GREYSCALE
  1460. #define MCI_DGV_SET_IMAGE_QUALITY               MCI_VID_SET_IMAGE_QUALITY
  1461. #define MCI_DGV_SET_VIDEO_QUALITY               MCI_VID_SET_VIDEO_QUALITY
  1462. #define MCI_DGV_SET_IMAGE_COMPRESSION_METHOD    MCI_VID_SET_IMAGE_COMPRESSION_METHOD
  1463. #define MCI_DGV_SET_MONITOR                     MCI_SET_MONITOR
  1464. #define MCI_DGV_SET_MINIMUM_VIDEO_REFRESH_RATE  MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE
  1465. #define MCI_DGV_SET_IMAGE_FILE_FORMAT           MCI_VID_SET_IMAGE_FILE_FORMAT
  1466. #define MCI_DGV_SET_REF_INTERVAL                MCI_VID_SET_REF_INTERVAL
  1467. #define MCI_DGV_SET_MAXDATARATE                 MCI_VID_SET_MAXDATARATE
  1468. #define MCI_DGV_SET_VIDEO_FILE_FORMAT           MCI_VID_SET_VIDEO_FILE_FORMAT
  1469.  
  1470. #define MCI_DGV_SET_AUDIO_COMPRESSION           MCI_DGV_ITEM_BASE
  1471. #define MCI_DGV_SET_AUDIO_QUALITY               (MCI_DGV_ITEM_BASE+1)
  1472. #define MCI_DGV_SET_CHANNELS                    (MCI_DGV_ITEM_BASE+2)
  1473. #define MCI_DGV_SET_BITSPERSAMPLE               (MCI_DGV_ITEM_BASE+3)
  1474. #define MCI_DGV_SET_SAMPLESPERSEC               (MCI_DGV_ITEM_BASE+4)
  1475. #define MCI_DGV_SET_FORMATTAG                   (MCI_DGV_ITEM_BASE+5)
  1476. #define MCI_DGV_SET_BLOCKALIGN                  (MCI_DGV_ITEM_BASE+6)
  1477. #define MCI_DGV_SET_AVGBYTESPERSEC              (MCI_DGV_ITEM_BASE+7)
  1478.  
  1479. #define MCI_DGV_SET_VIDEO_COMPRESSION_SUBTYPE   (MCI_DGV_ITEM_BASE+8)
  1480. #define MCI_DGV_SET_VIDEO_RECORD_RATE           (MCI_DGV_ITEM_BASE+9)
  1481. #define MCI_DGV_SET_VIDEO_RECORD_FRAME_DURATION (MCI_DGV_ITEM_BASE+10)
  1482. #define MCI_DGV_SET_RECORD_AUDIO                (MCI_DGV_ITEM_BASE+11)
  1483. #define MCI_DGV_SET_TRANSPARENT_COLOR           (MCI_DGV_ITEM_BASE+12)
  1484. #define MCI_DGV_SET_GRAPHIC_TRANSPARENT_COLOR   (MCI_DGV_ITEM_BASE+12)
  1485. #define MCI_DGV_SET_AUDIOSYNC                   (MCI_DGV_ITEM_BASE+13)
  1486. #define MCI_DGV_SET_VIDEO_TRANSPARENT_COLOR     (MCI_DGV_ITEM_BASE+14)
  1487.  
  1488. /*******************************************************/
  1489. /* Video file format                                   */
  1490. /*******************************************************/
  1491. #define MCI_VID_FILE_FORMAT_AVI       0x20495641L
  1492.  
  1493. /*******************************************************/
  1494. /* Audio/video/image compression types                 */
  1495. /*******************************************************/
  1496. #define MCI_AUD_COMP_ADPCM4          0x00000001L
  1497. #define MCI_AUD_COMP_PCM8            0x00000002L
  1498.  
  1499. #define MCI_VID_COMP_RTV_2_0         0x00000101L
  1500. #define MCI_VID_COMP_RTV_2_1         0x00000102L
  1501. #define MCI_VID_COMP_ULTI            0x49544C55L
  1502. #define MCI_VID_COMP_RT21            0x31325452L
  1503. #define MCI_VID_COMP_NONE            0x20424944L   /* This is 'DIB ' now.    */
  1504.  
  1505. #define MCI_IMG_COMP_NONE            0x00000201L
  1506. #define MCI_IMG_COMP_PIC9_1_0        0x00000202L
  1507. #define MCI_IMG_COMP_PIC16_1_0       0x00000203L
  1508. #define MCI_IMG_COMP_JPEG9           0x00000204L
  1509. #define MCI_IMG_COMP_JPEG9_1_0       MCI_IMG_COMP_JPEG9
  1510. #define MCI_IMG_COMP_BMP_RLE4        0x00000205L
  1511. #define MCI_IMG_COMP_BMP_RLE8        0x00000206L
  1512. #define MCI_IMG_COMP_JPEGN           0x00000207L
  1513.  
  1514. /*******************************************************/
  1515. /* PEL Formats (video/image)                           */
  1516. /*******************************************************/
  1517. #define MCI_VID_PALETTE              0x00000001L
  1518. #define MCI_VID_RGB                  0x00000002L
  1519. #define MCI_VID_YUV                  0x00000003L
  1520.  
  1521. #define MCI_IMG_PALETTE              MCI_VID_PALETTE
  1522. #define MCI_IMG_RGB                  MCI_VID_RGB
  1523. #define MCI_IMG_YUV                  MCI_VID_YUV
  1524.  
  1525.  
  1526. /*******************************************************/
  1527. /* Audio/video/image quality levels                    */
  1528. /*******************************************************/
  1529. #define MCI_AUD_QUALITY_HIGH         0x00000001L
  1530. #define MCI_AUD_QUALITY_MED          0x00000002L
  1531. #define MCI_AUD_QUALITY_LOW          0x00000003L
  1532.  
  1533. #define MCI_VID_QUALITY_HIGH         0x00000101L
  1534. #define MCI_VID_QUALITY_MED          0x00000102L
  1535. #define MCI_VID_QUALITY_LOW          0x00000103L
  1536. #define MCI_VID_QUALITY_BEST         MCI_VID_QUALITY_HIGH
  1537. #define MCI_VID_QUALITY_CDROM        MCI_VID_QUALITY_MED
  1538. #define MCI_VID_QUALITY_COMPACT      MCI_VID_QUALITY_LOW
  1539. #define MCI_VID_QUALITY_BETTER       MCI_VID_QUALITY_MED
  1540. #define MCI_VID_QUALITY_GOOD         MCI_VID_QUALITY_LOW
  1541.  
  1542. #define MCI_IMG_QUALITY_HIGH         0x00000201L
  1543. #define MCI_IMG_QUALITY_MED          0x00000202L
  1544. #define MCI_IMG_QUALITY_LOW          0x00000203L
  1545.  
  1546. /*******************************************************/
  1547. /* MCI_SET flags for wave audio                        */
  1548. /*******************************************************/
  1549. #define MCI_WAVE_SET_SAMPLESPERSEC          0x01000000L
  1550. #define MCI_WAVE_SET_AVGBYTESPERSEC         0x02000000L
  1551. #define MCI_WAVE_SET_BLOCKALIGN             0x04000000L
  1552. #define MCI_WAVE_SET_FORMATTAG              0x08000000L
  1553. #define MCI_WAVE_SET_CHANNELS               0x10000000L
  1554. #define MCI_WAVE_SET_BITSPERSAMPLE          0x80000000L
  1555.  
  1556. /*******************************************************/
  1557. /* Wave format tag defines                             */
  1558. /*******************************************************/
  1559. #define MCI_WAVE_FORMAT_PCM                 DATATYPE_WAVEFORM
  1560. #define MCI_WAVE_FORMAT_ADPCM               0x0002L
  1561. #define MCI_WAVE_FORMAT_IBM_CVSD            0x0005L
  1562. #define MCI_WAVE_FORMAT_ALAW                DATATYPE_RIFF_ALAW
  1563. #define MCI_WAVE_FORMAT_MULAW               DATATYPE_RIFF_MULAW
  1564. #define MCI_WAVE_FORMAT_OKI_ADPCM           0x0010L
  1565. #define MCI_WAVE_FORMAT_DVI_ADPCM           0x0011L
  1566. #define MCI_WAVE_FORMAT_DIGISTD             0x0015L
  1567. #define MCI_WAVE_FORMAT_DIGIFIX             0x0016L
  1568. #define MCI_WAVE_FORMAT_AVC_ADPCM           DATATYPE_ADPCM_AVC
  1569. #define MCI_WAVE_FORMAT_IBM_ADPCM           DATATYPE_ADPCM_AVC
  1570. #define MCI_WAVE_FORMAT_IBM_MULAW           DATATYPE_MULAW
  1571. #define MCI_WAVE_FORMAT_IBM_ALAW            DATATYPE_ALAW
  1572. #define MCI_WAVE_FORMAT_CT_ADPCM            DATATYPE_CT_ADPCM
  1573. #define MCI_WAVE_FORMAT_MPEG1               DATATYPE_MPEG1AUDIO
  1574.  
  1575. /*******************************************************/
  1576. /* MCI_SET flags for sequencer                         */
  1577. /*******************************************************/
  1578. #define MCI_SEQ_SET_TEMPO                   0x00100000L
  1579. #define MCI_SEQ_SET_PORT                    0x00200000L
  1580. #define MCI_SEQ_ENABLE_PORT_MAPPER          0x00400000L
  1581. #define MCI_SEQ_DISABLE_PORT_MAPPER         0x00800000L
  1582. #define MCI_SEQ_SET_OFFSET                  0x01000000L
  1583. #define MCI_SEQ_SET_MASTER                  0x02000000L
  1584. #define MCI_SEQ_SET_SLAVE                   0x04000000L
  1585.  
  1586.    /**********************************************/
  1587.    /* SEQ time formats                           */
  1588.    /**********************************************/
  1589.    #define MCI_SEQ_SET_SMPTE_24             0x00000100L
  1590.    #define MCI_SEQ_SET_SMPTE_25             0x00000200L
  1591.    #define MCI_SEQ_SET_SMPTE_30             0x00000300L
  1592.    #define MCI_SEQ_SET_SMPTE_30DROP         0x00000400L
  1593.    #define MCI_SEQ_SET_SONGPTR              0x00000500L
  1594.  
  1595.    /**********************************************/
  1596.    /* SEQ synchronization types                  */
  1597.    /**********************************************/
  1598.    #define MCI_SEQ_MIDI                     0x00000001L
  1599.    #define MCI_SEQ_SMPTE                    0x00000002L
  1600.    #define MCI_SEQ_FILE                     0x00000003L
  1601.    #define MCI_SEQ_NONE                     0x00000004L
  1602.  
  1603.    /**********************************************/
  1604.    /* SEQ PORT TYPES                             */
  1605.    /**********************************************/
  1606.    #define MCI_SET_NONE                     0x10000000L
  1607.    #define MIDI_MAPPER                      0x20000000L
  1608.    #define MCI_MIDI_MAPPER                  MIDI_MAPPER
  1609.  
  1610. typedef struct _MCI_SET_PARMS {
  1611.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  1612.     ULONG   ulTimeFormat;    /* Time format to be used by the device           */
  1613.     ULONG   ulSpeedFormat;   /* Speed format used by this device               */
  1614.     ULONG   ulAudio;         /* Channel number for this operation              */
  1615.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1616.                              /*  MCI_SET_AUDIO_ALL)                            */
  1617.     ULONG   ulLevel;         /* Volume, treble or bass level as % of max.      */
  1618.     ULONG   ulOver;          /* Delay time for vectored change in milliseconds */
  1619.     ULONG   ulItem;          /* Item field for set item flags                  */
  1620.     ULONG   ulValue;         /* Value associated with item flag                */
  1621. } MCI_SET_PARMS;
  1622. typedef MCI_SET_PARMS       *PMCI_SET_PARMS;
  1623.  
  1624. typedef MCI_SET_PARMS       MCI_AMP_SET_PARMS;
  1625. typedef MCI_AMP_SET_PARMS   *PMCI_AMP_SET_PARMS;
  1626.  
  1627. typedef MCI_SET_PARMS       MCI_DGV_SET_PARMS;
  1628. typedef MCI_DGV_SET_PARMS   *PMCI_DGV_SET_PARMS;
  1629.  
  1630. typedef MCI_SET_PARMS       MCI_OVLY_SET_PARMS;
  1631. typedef MCI_OVLY_SET_PARMS  *PMCI_OVLY_SET_PARMS;
  1632.  
  1633. typedef struct _MCI_CDXA_SET_PARMS {
  1634.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  1635.     ULONG   ulTimeFormat;    /* Time format to be used by the device           */
  1636.     ULONG   ulSpeedFormat;   /* Speed format used by this device               */
  1637.     ULONG   ulAudio;         /* Channel number for this operation              */
  1638.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1639.                              /*  MCI_SET_AUDIO_ALL)                            */
  1640.     ULONG   ulLevel;         /* Volume, treble or bass level as % of max.      */
  1641.     ULONG   ulOver;          /* Delay time for vectored change in milliseconds */
  1642.     ULONG   ulItem;          /* Item field for set item flags                  */
  1643.     ULONG   ulValue;         /* Value associated with item flag                */
  1644.     ULONG   ulChannel;       /* Channel number                                 */
  1645.     PVOID   pPlayList;       /* Pointer to play list                           */
  1646.     ULONG   ulPlayListSize;  /* Play list size                                 */
  1647. } MCI_CDXA_SET_PARMS;
  1648. typedef MCI_CDXA_SET_PARMS   *PMCI_CDXA_SET_PARMS;
  1649.  
  1650. typedef struct _MCI_VD_SET_PARMS {
  1651.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  1652.     ULONG   ulTimeFormat;    /* Time format to be used by the device           */
  1653.     ULONG   ulSpeedFormat;   /* Speed format used by this device               */
  1654.     ULONG   ulAudio;         /* Channel number for this operation              */
  1655.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1656.                              /*  MCI_SET_AUDIO_ALL)                            */
  1657.     ULONG   ulLevel;         /* Volume, treble or bass level as % of max.      */
  1658.     ULONG   ulOver;          /* Delay time for vectored change in milliseconds */
  1659.     ULONG   ulItem;          /* Item field for set item flags                  */
  1660.     ULONG   ulValue;         /* Value associated with item flag                */
  1661.     ULONG   ulChannel;       /* Videodisc channel                              */
  1662. } MCI_VD_SET_PARMS;
  1663. typedef MCI_VD_SET_PARMS   *PMCI_VD_SET_PARMS;
  1664.  
  1665. typedef struct _MCI_WAVE_SET_PARMS {
  1666.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  1667.     ULONG   ulTimeFormat;    /* Time format to be used by the device           */
  1668.     ULONG   ulSpeedFormat;   /* Speed format used by this device               */
  1669.     ULONG   ulAudio;         /* Channel number for this operation              */
  1670.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1671.                              /*  MCI_SET_AUDIO_ALL)                            */
  1672.     ULONG   ulLevel;         /* Volume, trebble or bass level as % of max.     */
  1673.     ULONG   ulOver;          /* Delay time for vectored change in milliseconds */
  1674.     ULONG   ulItem;          /* Item field for set item flags                  */
  1675.     ULONG   ulValue;         /* Value associated with item flag                */
  1676.     USHORT  usInput;         /* Channel for input                              */
  1677.     USHORT  usReserved0;     /* Reserved field                                 */
  1678.     USHORT  usOutput;        /* Channel for output                             */
  1679.     USHORT  usReserved1;     /* Reserved field                                 */
  1680.     USHORT  usFormatTag;     /* Format tag                                     */
  1681.     USHORT  usReserved2;     /* Reserved field                                 */
  1682.     USHORT  usChannels;      /* mono(1) or stereo(2)                           */
  1683.     USHORT  usReserved3;     /* Reserved field                                 */
  1684.     ULONG   ulSamplesPerSec; /* Samples per seconds                            */
  1685.     ULONG   ulAvgBytesPerSec;/* Bytes per seconds                              */
  1686.     USHORT  usBlockAlign;    /* Block alignment of data                        */
  1687.     USHORT  usReserved4;     /* Reserved field                                 */
  1688.     USHORT  usBitsPerSample; /* Bits per seconds                               */
  1689.     USHORT  usReserved5;     /* Reserved field                                 */
  1690. } MCI_WAVE_SET_PARMS;
  1691. typedef MCI_WAVE_SET_PARMS   *PMCI_WAVE_SET_PARMS;
  1692.  
  1693. typedef struct _MCI_SEQ_SET_PARMS {
  1694.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  1695.     ULONG   ulTimeFormat;    /* Time format to be used by the device           */
  1696.     ULONG   ulSpeedFormat;   /* Speed format used by this device               */
  1697.     ULONG   ulAudio;         /* Channel number for this operation              */
  1698.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1699.                              /*  MCI_SET_AUDIO_ALL)                            */
  1700.     ULONG   ulLevel;         /* Volume, trebble or bass level as % of max.     */
  1701.     ULONG   ulOver;          /* Delay time for vectored change in milliseconds */
  1702.     ULONG   ulItem;          /* Item field for set item flags                  */
  1703.     ULONG   ulValue;         /* Value associated with item flag                */
  1704.     ULONG   ulTempo;         /* Specified the tempo                            */
  1705.     ULONG   ulPort;          /* Output port                                    */
  1706.     ULONG   ulSlave;         /* Unused field                                   */
  1707.     ULONG   ulMaster;        /* Unused field                                   */
  1708.     ULONG   ulOffset;        /* Specified the data offset                      */
  1709. } MCI_SEQ_SET_PARMS;
  1710. typedef MCI_SEQ_SET_PARMS   *PMCI_SEQ_SET_PARMS;
  1711.  
  1712.  
  1713. /*********************************************************************/
  1714. /* parameters for the MCI_SET_CUEPOINT message                       */
  1715. /*     0x00000x00 are reserved for MCI_SET_CUEPOINT flags            */
  1716. /*********************************************************************/
  1717. #define MCI_SET_CUEPOINT_ON                 0x00000100L
  1718. #define MCI_SET_CUEPOINT_OFF                0x00000200L
  1719.  
  1720. typedef struct _MCI_CUEPOINT_PARMS {
  1721.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  1722.     ULONG   ulCuepoint;      /* Specifies the cuepoint location                */
  1723.     USHORT  usUserParm;      /* User parmameter returned on cuepoint           */
  1724.                              /* notify message                                 */
  1725.     USHORT  usReserved0;     /* Reserved field                                 */
  1726. } MCI_CUEPOINT_PARMS;
  1727. typedef MCI_CUEPOINT_PARMS   *PMCI_CUEPOINT_PARMS;
  1728.  
  1729. /*********************************************************************/
  1730. /* parameters for the MCI_SETIMAGEPALETTE message                    */
  1731. /*     0x000XXX00 are reserved for MCI_SETIMAGEPALETTE flags         */
  1732. /*********************************************************************/
  1733. #define MCI_SET_REGISTERED                  0x00000100L
  1734.  
  1735. /*********************************************************************/
  1736. /* flags and parameter structure for the MCI_SET_POSITION_ADVISE msg */
  1737. /*     0x00000X00 are reserved for MCI_SET_POSITION_ADVISE flags     */
  1738. /*********************************************************************/
  1739. #define MCI_SET_POSITION_ADVISE_ON          0x00000100L
  1740. #define MCI_SET_POSITION_ADVISE_OFF         0x00000200L
  1741.  
  1742. typedef struct _MCI_POSITION_PARMS {
  1743.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  1744.     ULONG   ulUnits;         /* Specifies position change notifiication        */
  1745.                              /* granularity                                    */
  1746.     USHORT  usUserParm;      /* User parameter returned on position change     */
  1747.                              /* notification message.                          */
  1748.     USHORT  Reserved0;       /* Reserved field                                 */
  1749.     ULONG   Reserved1;       /* Reserved field                                 */
  1750.     } MCI_POSITION_PARMS;
  1751. typedef MCI_POSITION_PARMS   *PMCI_POSITION_PARMS;
  1752.  
  1753. /*********************************************************************/
  1754. /* parameter structure for the MCI_SET_SYNC_OFFSET message           */
  1755. /*********************************************************************/
  1756. typedef struct _MCI_SYNC_OFFSET_PARMS {
  1757.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  1758.     ULONG   ulOffset;        /* Specifies the device media position offset     */
  1759.                              /* in the currently specified device units.       */
  1760. } MCI_SYNC_OFFSET_PARMS;
  1761. typedef MCI_SYNC_OFFSET_PARMS   *PMCI_SYNC_OFFSET_PARMS;
  1762.  
  1763. /*********************************************************************/
  1764. /* flags for the MCI_SPIN message                                    */
  1765. /*     0x00000X00 are reserved for MCI_SPIN flags                    */
  1766. /*********************************************************************/
  1767. #define MCI_SPIN_UP                         0x00000100L
  1768. #define MCI_SPIN_DOWN                       0x00000200L
  1769.  
  1770. /*********************************************************************/
  1771. /* MCI_STATUS message flags                                          */
  1772. /*     0x000XXX00 are reserved for MCI_STATUS flags                  */
  1773. /*     MCI_VOLUME and MCI_VOLUME_DELAY are 0x00000100 and 0x00000200 */
  1774. /*********************************************************************/
  1775. #define MCI_STATUS_ITEM                     0x00000100L
  1776. #define MCI_STATUS_START                    0x00000200L
  1777. #define MCI_STATUS_CONNECTOR                0x00000400L
  1778.  
  1779. /*************************************************/
  1780. /* General MCI_STATUS item values                */
  1781. /*************************************************/
  1782. #define MCI_STATUS_CURRENT_TRACK            0x00000001L
  1783. #define MCI_STATUS_LENGTH                   0x00000002L
  1784. #define MCI_STATUS_MODE                     0x00000003L
  1785. #define MCI_STATUS_NUMBER_OF_TRACKS         0x00000004L
  1786. #define MCI_STATUS_POSITION                 0x00000005L
  1787. #define MCI_STATUS_POSITION_IN_TRACK        0x00000006L
  1788. #define MCI_STATUS_MEDIA_PRESENT            0x00000007L
  1789. #define MCI_STATUS_VOLUME                   0x00000008L
  1790. #define MCI_STATUS_READY                    0x00000009L
  1791. #define MCI_STATUS_TIME_FORMAT              0x0000000AL
  1792. #define MCI_STATUS_SPEED_FORMAT             0x0000000BL
  1793. #define MCI_STATUS_MONITOR                  0x0000000CL
  1794. #define MCI_STATUS_AUDIO                    0x0000000DL
  1795. #define MCI_STATUS_VIDEO                    0x0000000EL
  1796. #define MCI_STATUS_CLIPBOARD                0x0000000FL
  1797. #define MCI_STATUS_CAN_PASTE                0x00000010L
  1798. #define MCI_STATUS_CAN_REDO                 0x00000020L
  1799. #define MCI_STATUS_CAN_UNDO                 0x00000030L
  1800.  
  1801.    /*************************************************/
  1802.    /* ulValue field values for MCI_STATUS_AUDIO     */
  1803.    /*************************************************/
  1804. #define MCI_STATUS_AUDIO_ALL                   0x00000000L
  1805. #define MCI_STATUS_AUDIO_LEFT                  0x00000001L
  1806. #define MCI_STATUS_AUDIO_RIGHT                 0x00000002L
  1807.  
  1808. /*************************************************/
  1809. /* MCI_STATUS item values for amp/mixer          */
  1810. /*************************************************/
  1811. #define MCI_AMP_STATUS_PITCH                MCI_AMP_ITEM_BASE
  1812. #define MCI_AMP_STATUS_TREBLE               (MCI_AMP_ITEM_BASE+1)
  1813. #define MCI_AMP_STATUS_BASS                 (MCI_AMP_ITEM_BASE+2)
  1814. #define MCI_AMP_STATUS_BALANCE              (MCI_AMP_ITEM_BASE+3)
  1815. #define MCI_AMP_STATUS_GAIN                 (MCI_AMP_ITEM_BASE+4)
  1816. #define MCI_AMP_STATUS_MONITOR              (MCI_AMP_ITEM_BASE+5)
  1817. #define MCI_AMP_STATUS_MID                  (MCI_AMP_ITEM_BASE+6)
  1818. #define MCI_AMP_STATUS_VOLUME               MCI_STATUS_VOLUME
  1819. #define MCI_AMP_STATUS_LOUDNESS             (MCI_AMP_ITEM_BASE+7)
  1820. #define MCI_AMP_STATUS_CROSSOVER            (MCI_AMP_ITEM_BASE+8)
  1821. #define MCI_AMP_STATUS_REVERB               (MCI_AMP_ITEM_BASE+9)
  1822. #define MCI_AMP_STATUS_ALC                  (MCI_AMP_ITEM_BASE+10)
  1823. #define MCI_AMP_STATUS_CHORUS               (MCI_AMP_ITEM_BASE+11)
  1824. #define MCI_AMP_STATUS_CUSTOM1              (MCI_AMP_ITEM_BASE+12)
  1825. #define MCI_AMP_STATUS_CUSTOM2              (MCI_AMP_ITEM_BASE+13)
  1826. #define MCI_AMP_STATUS_CUSTOM3              (MCI_AMP_ITEM_BASE+14)
  1827. #define MCI_AMP_STATUS_MUTE                 (MCI_AMP_ITEM_BASE+15)
  1828. #define MCI_AMP_STATUS_STEREOENHANCE        (MCI_AMP_ITEM_BASE+16)
  1829.  
  1830.  
  1831. /*************************************************/
  1832. /* MCI_STATUS item values for cd audio           */
  1833. /*************************************************/
  1834. #define MCI_CD_STATUS_TRACK_TYPE            MCI_CD_ITEM_BASE
  1835. #define MCI_CD_STATUS_TRACK_COPYPERMITTED   (MCI_CD_ITEM_BASE+1)
  1836. #define MCI_CD_STATUS_TRACK_CHANNELS        (MCI_CD_ITEM_BASE+2)
  1837. #define MCI_CD_STATUS_TRACK_PREEMPHASIS     (MCI_CD_ITEM_BASE+3)
  1838.  
  1839.     /************************************************/
  1840.     /* return values for CD MCI_STATUS message with */
  1841.     /*   MCI_CD_STATUS_TRACK_TYPE set               */
  1842.     /************************************************/
  1843. #define MCI_CD_TRACK_AUDIO                  0x00000001L
  1844. #define MCI_CD_TRACK_DATA                   0x00000002L
  1845. #define MCI_CD_TRACK_OTHER                  0x00000003L
  1846.  
  1847. /*************************************************/
  1848. /* MCI_STATUS item values for CDXA               */
  1849. /*************************************************/
  1850. #define MCI_CDXA_STATUS_CHANNEL             MCI_CDXA_ITEM_BASE
  1851.  
  1852.     /************************************************/
  1853.     /*returned from call for MCI_CDXA_STATUS_CHANNEL*/
  1854.     /************************************************/
  1855. #define MCI_CDXA_NONE                       0x00000000L
  1856.  
  1857.  
  1858. /*************************************************/
  1859. /* MCI_STATUS item values for sequencer          */
  1860. /*************************************************/
  1861. #define MCI_SEQ_STATUS_TEMPO                MCI_SEQ_ITEM_BASE
  1862. #define MCI_SEQ_STATUS_OFFSET               (MCI_SEQ_ITEM_BASE+1)
  1863. #define MCI_SEQ_STATUS_DIVTYPE              (MCI_SEQ_ITEM_BASE+2)
  1864. #define MCI_SEQ_STATUS_MASTER               (MCI_SEQ_ITEM_BASE+3)
  1865. #define MCI_SEQ_STATUS_PORT                 (MCI_SEQ_ITEM_BASE+4)
  1866. #define MCI_SEQ_STATUS_SLAVE                (MCI_SEQ_ITEM_BASE+5)
  1867.  
  1868.    /**********************************************/
  1869.    /* Return value for current division type     */
  1870.    /**********************************************/
  1871. #define MCI_SEQ_DIV_PPQN                    0x00000001L
  1872. #define MCI_SEQ_DIV_SMPTE_24                0x00000002L
  1873. #define MCI_SEQ_DIV_SMPTE_25                0x00000003L
  1874. #define MCI_SEQ_DIV_SMPTE_30DROP            0x00000004L
  1875. #define MCI_SEQ_DIV_SMPTE_30                0x00000005L
  1876.  
  1877.    /*************************************************/
  1878.    /* MCI_STATUS items for videodisc                */
  1879.    /*************************************************/
  1880. #define MCI_VD_STATUS_SPEED                 MCI_VD_ITEM_BASE
  1881. #define MCI_VD_STATUS_FORWARD               (MCI_VD_ITEM_BASE+1)
  1882. #define MCI_VD_MEDIA_TYPE                   (MCI_VD_ITEM_BASE+2)
  1883. #define MCI_VD_STATUS_SIDE                  (MCI_VD_ITEM_BASE+3)
  1884. #define MCI_VD_STATUS_DISC_SIZE             (MCI_VD_ITEM_BASE+4)
  1885.  
  1886.     /***********************************************/
  1887.     /* return values for videodisc status command  */
  1888.     /***********************************************/
  1889. #define MCI_VD_SPEED_NORMAL                 0x00000000L
  1890. #define MCI_VD_SPEED_FAST                   0x00000001L
  1891. #define MCI_VD_SPEED_SLOW                   0x00000002L
  1892.  
  1893. /*************************************************/
  1894. /* MCI_STATUS items for wave audio               */
  1895. /*************************************************/
  1896. #define MCI_WAVE_STATUS_LEVEL               MCI_WAVE_ITEM_BASE
  1897. #define MCI_WAVE_STATUS_SAMPLESPERSEC       (MCI_WAVE_ITEM_BASE+1)
  1898. #define MCI_WAVE_STATUS_AVGBYTESPERSEC      (MCI_WAVE_ITEM_BASE+2)
  1899. #define MCI_WAVE_STATUS_BLOCKALIGN          (MCI_WAVE_ITEM_BASE+3)
  1900. #define MCI_WAVE_STATUS_FORMATTAG           (MCI_WAVE_ITEM_BASE+4)
  1901. #define MCI_WAVE_STATUS_CHANNELS            (MCI_WAVE_ITEM_BASE+5)
  1902. #define MCI_WAVE_STATUS_BITSPERSAMPLE       (MCI_WAVE_ITEM_BASE+6)
  1903.  
  1904. /*************************************************/
  1905. /* Common video MCI_STATUS items                 */
  1906. /*************************************************/
  1907. #define MCI_VID_STATUS_HWND                 MCI_VID_ITEM_BASE
  1908. #define MCI_VID_STATUS_AUDIO_COMPRESSION    (MCI_VID_ITEM_BASE+1)
  1909. #define MCI_VID_STATUS_VIDEO_COMPRESSION    (MCI_VID_ITEM_BASE+2)
  1910. #define MCI_VID_STATUS_IMAGE_COMPRESSION    (MCI_VID_ITEM_BASE+3)
  1911. #define MCI_VID_STATUS_AUDIO_QUALITY        (MCI_VID_ITEM_BASE+4)
  1912. #define MCI_VID_STATUS_VIDEO_QUALITY        (MCI_VID_ITEM_BASE+5)
  1913. #define MCI_VID_STATUS_IMAGE_QUALITY        (MCI_VID_ITEM_BASE+6)
  1914. #define MCI_VID_STATUS_IMAGE_BITSPERPEL     (MCI_VID_ITEM_BASE+7)
  1915. #define MCI_VID_STATUS_IMAGE_PELFORMAT      (MCI_VID_ITEM_BASE+8)
  1916. #define MCI_VID_STATUS_FORWARD              (MCI_VID_ITEM_BASE+9)
  1917. #define MCI_VID_STATUS_NORMAL_RATE          (MCI_VID_ITEM_BASE+10)
  1918. #define MCI_VID_STATUS_VIDEO_X_EXTENT       (MCI_VID_ITEM_BASE+11)
  1919. #define MCI_VID_STATUS_VIDEO_Y_EXTENT       (MCI_VID_ITEM_BASE+12)
  1920. #define MCI_VID_STATUS_IMAGE_X_EXTENT       (MCI_VID_ITEM_BASE+13)
  1921. #define MCI_VID_STATUS_IMAGE_Y_EXTENT       (MCI_VID_ITEM_BASE+14)
  1922. #define MCI_VID_STATUS_BRIGHTNESS           (MCI_VID_ITEM_BASE+15)
  1923. #define MCI_VID_STATUS_CONTRAST             (MCI_VID_ITEM_BASE+16)
  1924. #define MCI_VID_STATUS_HUE                  (MCI_VID_ITEM_BASE+17)
  1925. #define MCI_VID_STATUS_SATURATION           (MCI_VID_ITEM_BASE+18)
  1926. #define MCI_VID_STATUS_GREYSCALE            (MCI_VID_ITEM_BASE+19)
  1927. #define MCI_VID_STATUS_SHARPNESS            (MCI_VID_ITEM_BASE+20)
  1928. #define MCI_VID_STATUS_SPEED                (MCI_VID_ITEM_BASE+21)
  1929. #define MCI_VID_STATUS_IMAGE_FILE_FORMAT    (MCI_VID_ITEM_BASE+22)
  1930. #define MCI_VID_STATUS_TRANSPARENT_TYPE     (MCI_VID_ITEM_BASE+23)
  1931. #define MCI_VID_STATUS_REF_INTERVAL         (MCI_VID_ITEM_BASE+24)
  1932. #define MCI_VID_STATUS_MAXDATARATE          (MCI_VID_ITEM_BASE+25)
  1933. #define MCI_VID_STATUS_VIDEO_FILE_FORMAT    (MCI_VID_ITEM_BASE+26)
  1934.  
  1935.    /*************************************************/
  1936.    /* Status Transparent Type returns               */
  1937.    /* MCI_VID_PALETTE                               */
  1938.    /* MCI_VID_RGB                                   */
  1939.    /* MCI_VID_YUV                                   */
  1940.    /*************************************************/
  1941. #define MCI_VID_STATUS_TRANSPARENT_COLOR    (MCI_VID_ITEM_BASE+24)
  1942.  
  1943. /*************************************************/
  1944. /* MCI_STATUS items for digital video            */
  1945. /*************************************************/
  1946. #define MCI_DGV_STATUS_HWND                 MCI_VID_STATUS_HWND
  1947. #define MCI_DGV_STATUS_AUDIO_COMPRESSION    MCI_VID_STATUS_AUDIO_COMPRESSION
  1948. #define MCI_DGV_STATUS_VIDEO_COMPRESSION    MCI_VID_STATUS_VIDEO_COMPRESSION
  1949. #define MCI_DGV_STATUS_IMAGE_COMPRESSION    MCI_VID_STATUS_IMAGE_COMPRESSION
  1950. #define MCI_DGV_STATUS_AUDIO_QUALITY        MCI_VID_STATUS_AUDIO_QUALITY
  1951. #define MCI_DGV_STATUS_VIDEO_QUALITY        MCI_VID_STATUS_VIDEO_QUALITY
  1952. #define MCI_DGV_STATUS_IMAGE_QUALITY        MCI_VID_STATUS_IMAGE_QUALITY
  1953. #define MCI_DGV_STATUS_IMAGE_BITSPERPEL     MCI_VID_STATUS_IMAGE_BITSPERPEL
  1954. #define MCI_DGV_STATUS_IMAGE_PELFORMAT      MCI_VID_STATUS_IMAGE_PELFORMAT
  1955. #define MCI_DGV_STATUS_FORWARD              MCI_VID_STATUS_FORWARD
  1956. #define MCI_DGV_STATUS_NORMAL_RATE          MCI_VID_STATUS_NORMAL_RATE
  1957. #define MCI_DGV_STATUS_VIDEO_X_EXTENT       MCI_VID_STATUS_VIDEO_X_EXTENT
  1958. #define MCI_DGV_STATUS_VIDEO_Y_EXTENT       MCI_VID_STATUS_VIDEO_Y_EXTENT
  1959. #define MCI_DGV_STATUS_IMAGE_X_EXTENT       MCI_VID_STATUS_IMAGE_X_EXTENT
  1960. #define MCI_DGV_STATUS_IMAGE_Y_EXTENT       MCI_VID_STATUS_IMAGE_Y_EXTENT
  1961. #define MCI_DGV_STATUS_BRIGHTNESS           MCI_VID_STATUS_BRIGHTNESS
  1962. #define MCI_DGV_STATUS_CONTRAST             MCI_VID_STATUS_CONTRAST
  1963. #define MCI_DGV_STATUS_HUE                  MCI_VID_STATUS_HUE
  1964. #define MCI_DGV_STATUS_SATURATION           MCI_VID_STATUS_SATURATION
  1965. #define MCI_DGV_STATUS_SPEED                MCI_VID_STATUS_SPEED
  1966. #define MCI_DGV_STATUS_SHARPNESS            MCI_VID_STATUS_SHARPNESS
  1967. #define MCI_DGV_STATUS_REF_INTERVAL         MCI_VID_STATUS_REF_INTERVAL
  1968. #define MCI_DGV_STATUS_MAXDATARATE          MCI_VID_STATUS_MAXDATARATE
  1969. #define MCI_DGV_STATUS_VIDEO_FILE_FORMAT    MCI_VID_STATUS_VIDEO_FILE_FORMAT
  1970.  
  1971. #define MCI_DGV_STATUS_CHANNELS             (MCI_DGV_ITEM_BASE+13)
  1972. #define MCI_DGV_STATUS_BITSPERSAMPLE        (MCI_DGV_ITEM_BASE+14)
  1973. #define MCI_DGV_STATUS_SAMPLESPERSEC        (MCI_DGV_ITEM_BASE+15)
  1974. #define MCI_DGV_STATUS_FORMATTAG            (MCI_DGV_ITEM_BASE+16)
  1975. #define MCI_DGV_STATUS_BLOCKALIGN           (MCI_DGV_ITEM_BASE+17)
  1976. #define MCI_DGV_STATUS_AVGBYTESPERSEC       (MCI_DGV_ITEM_BASE+18)
  1977. #define MCI_DGV_STATUS_VIDEO_COMPRESSION_SUBTYPE   (MCI_DGV_ITEM_BASE+19)
  1978. #define MCI_DGV_STATUS_VIDEO_RECORD_RATE           (MCI_DGV_ITEM_BASE+20)
  1979. #define MCI_DGV_STATUS_VIDEO_RECORD_FRAME_DURATION (MCI_DGV_ITEM_BASE+21)
  1980. #define MCI_DGV_STATUS_RECORD_AUDIO         (MCI_DGV_ITEM_BASE+22)
  1981. #define MCI_DGV_STATUS_TRANSPARENT_COLOR    (MCI_DGV_ITEM_BASE+23)
  1982. #define MCI_DGV_STATUS_GRAPHIC_TRANSPARENT_COLOR (MCI_DGV_ITEM_BASE+23)  /* MUST BE SAME AS TRANSPARENT COLOR */
  1983. #define MCI_DGV_STATUS_HWND_MONITOR         (MCI_DGV_ITEM_BASE+24)
  1984. #define MCI_DGV_STATUS_DROPPED_FRAME_PCT    (MCI_DGV_ITEM_BASE+25)
  1985. #define MCI_DGV_STATUS_AUDIOSYNC            (MCI_DGV_ITEM_BASE+26)
  1986. #define MCI_DGV_STATUS_AUDIOSYNC_DIRECTION  (MCI_DGV_ITEM_BASE+27)
  1987. #define MCI_DGV_STATUS_VIDEO_TRANSPARENT_COLOR (MCI_DGV_ITEM_BASE+28)  /* MUST BE SAME AS TRANSPARENT COLOR */
  1988. #define MCI_DGV_STATUS_TUNER_TV_CHANNEL     (MCI_DGV_ITEM_BASE+29)
  1989. #define MCI_DGV_STATUS_TUNER_LOW_TV_CHANNEL (MCI_DGV_ITEM_BASE+30)
  1990. #define MCI_DGV_STATUS_TUNER_HIGH_TV_CHANNEL (MCI_DGV_ITEM_BASE+31)
  1991. #define MCI_DGV_STATUS_TUNER_REGION          (MCI_DGV_ITEM_BASE+32)
  1992. #define MCI_DGV_STATUS_TUNER_FINETUNE        (MCI_DGV_ITEM_BASE+33)
  1993. #define MCI_DGV_STATUS_TUNER_FREQUENCY       (MCI_DGV_ITEM_BASE+34)
  1994. #define MCI_DGV_STATUS_TUNER_AUDIO_CHANNEL   (MCI_DGV_ITEM_BASE+35)
  1995. #define MCI_DGV_STATUS_TUNER_AFC             (MCI_DGV_ITEM_BASE+36)
  1996. #define MCI_DGV_STATUS_VALID_SIGNAL          (MCI_DGV_ITEM_BASE+37)
  1997.  
  1998. /*************************************************/
  1999. /* MCI_STATUS item values for video overlay      */
  2000. /*************************************************/
  2001. #define MCI_OVLY_STATUS_HWND                 MCI_VID_STATUS_HWND
  2002. #define MCI_OVLY_STATUS_IMAGE_COMPRESSION    MCI_VID_STATUS_IMAGE_COMPRESSION
  2003. #define MCI_OVLY_STATUS_IMAGE_BITSPERPEL     MCI_VID_STATUS_IMAGE_BITSPERPEL
  2004. #define MCI_OVLY_STATUS_IMAGE_PELFORMAT      MCI_VID_STATUS_IMAGE_PELFORMAT
  2005. #define MCI_OVLY_STATUS_IMAGE_X_EXTENT       MCI_VID_STATUS_IMAGE_X_EXTENT
  2006. #define MCI_OVLY_STATUS_IMAGE_Y_EXTENT       MCI_VID_STATUS_IMAGE_Y_EXTENT
  2007. #define MCI_OVLY_STATUS_BRIGHTNESS           MCI_VID_STATUS_BRIGHTNESS
  2008. #define MCI_OVLY_STATUS_CONTRAST             MCI_VID_STATUS_CONTRAST
  2009. #define MCI_OVLY_STATUS_HUE                  MCI_VID_STATUS_HUE
  2010. #define MCI_OVLY_STATUS_SATURATION           MCI_VID_STATUS_SATURATION
  2011. #define MCI_OVLY_STATUS_GREYSCALE            MCI_VID_STATUS_GREYSCALE
  2012. #define MCI_OVLY_STATUS_IMAGE_QUALITY        MCI_VID_STATUS_IMAGE_QUALITY
  2013. #define MCI_OVLY_STATUS_SHARPNESS            MCI_VID_STATUS_SHARPNESS
  2014. #define MCI_OVLY_STATUS_IMAGE_FILE_FORMAT    MCI_VID_STATUS_IMAGE_FILE_FORMAT
  2015. #define MCI_OVLY_STATUS_TRANSPARENT_TYPE     MCI_VID_STATUS_TRANSPARENT_TYPE
  2016. #define MCI_OVLY_STATUS_TRANSPARENT_COLOR    MCI_VID_STATUS_TRANSPARENT_COLOR
  2017.  
  2018.    /*************************************************/
  2019.    /* Status Mode return values                     */
  2020.    /*************************************************/
  2021. #define MCI_MODE_NOT_READY                  0x00000001L
  2022. #define MCI_MODE_PAUSE                      0x00000002L
  2023. #define MCI_MODE_PLAY                       0x00000003L
  2024. #define MCI_MODE_STOP                       0x00000004L
  2025. #define MCI_MODE_RECORD                     0x00000005L
  2026. #define MCI_MODE_SEEK                       0x00000006L
  2027.  
  2028.    /*************************************************/
  2029.    /* Status Direction return values                */
  2030.    /*************************************************/
  2031. #define MCI_FORWARD                         0x00000000L
  2032. #define MCI_REVERSE                         0x00000001L
  2033.  
  2034. typedef struct _MCI_STATUS_PARMS {
  2035.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  2036.     ULONG   ulReturn;        /* Return field                            */
  2037.     ULONG   ulItem;          /* Item field for STATUS item to query     */
  2038.     ULONG   ulValue;         /* Status value field (this used to be)    */
  2039.                              /*  ulTrack but was changed in Rel 1.1     */
  2040.                              /*  to extend the status structure.        */
  2041.                              /*  See the programming reference on when  */
  2042.                              /*  ulValue is used and how...             */
  2043. } MCI_STATUS_PARMS;
  2044. typedef MCI_STATUS_PARMS   *PMCI_STATUS_PARMS;
  2045.  
  2046.  
  2047. typedef struct _MCI_CDXA_STATUS_PARMS {
  2048.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  2049.     ULONG   ulReturn;        /* Return field                            */
  2050.     ULONG   ulItem;          /* Item field for STATUS item to query     */
  2051.     ULONG   ulValue;         /* Status value field (this used to be)    */
  2052.                              /*  ulTrack but was changed in Rel 1.1     */
  2053.                              /*  to extend the status structure.        */
  2054.                              /*  See the programming reference on when  */
  2055.                              /*  ulValue is used and how...             */
  2056.     ULONG   ulChannel;       /* Channel                                 */
  2057. } MCI_CDXA_STATUS_PARMS;
  2058. typedef MCI_CDXA_STATUS_PARMS   *PMCI_CDXA_STATUS_PARMS;
  2059.  
  2060. /*********************************************************************/
  2061. /* flags and parameter structure for the MCI_STEP message            */
  2062. /*     0x00000X00 are reserved for MCI_STEP flags                    */
  2063. /*********************************************************************/
  2064. #define MCI_STEP_FRAMES                     0x00000100L
  2065. #define MCI_STEP_REVERSE                    0x00000200L
  2066.  
  2067. typedef struct _MCI_STEP_PARMS {
  2068.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  2069.     ULONG   ulStep;          /* amount to step in current time format   */
  2070. } MCI_STEP_PARMS;
  2071. typedef MCI_STEP_PARMS   *PMCI_STEP_PARMS;
  2072.  
  2073. /*********************************************************************/
  2074. /* flags for the MCI_SYSINFO message                                 */
  2075. /*     0xXXXXXX00 are reserved for MCI_SYSINFO flags                 */
  2076. /*********************************************************************/
  2077. #define MCI_SYSINFO_QUANTITY                0x00000100L
  2078. #define MCI_SYSINFO_OPEN                    0x00000200L
  2079. #define MCI_SYSINFO_NAME                    0x00000400L
  2080. #define MCI_SYSINFO_INSTALLNAME             0x00000800L
  2081. #define MCI_SYSINFO_ITEM                    0x00001000L
  2082. #define MCI_SYSINFO_INI_LOCK                0x00002000L
  2083.  
  2084.     /********************************************************/
  2085.     /* Extended SYSINFO functions                           */
  2086.     /********************************************************/
  2087.     #define MCI_SYSINFO_INSTALL_DRIVER      0x00000001L
  2088.     #define MCI_SYSINFO_QUERY_DRIVER        0x00000002L
  2089.     #define MCI_SYSINFO_DELETE_DRIVER       0x00000004L
  2090.     #define MCI_SYSINFO_SET_PARAMS          0x00000008L
  2091.     #define MCI_SYSINFO_QUERY_PARAMS        0x00000010L
  2092.     #define MCI_SYSINFO_SET_CONNECTORS      0x00000020L
  2093.     #define MCI_SYSINFO_QUERY_CONNECTORS    0x00000040L
  2094.     #define MCI_SYSINFO_SET_EXTENSIONS      0x00000080L
  2095.     #define MCI_SYSINFO_QUERY_EXTENSIONS    0x00000100L
  2096.     #define MCI_SYSINFO_SET_ALIAS           0x00000200L
  2097.     #define MCI_SYSINFO_QUERY_NAMES         0x00000400L
  2098.     #define MCI_SYSINFO_SET_DEFAULT         0x00000800L
  2099.     #define MCI_SYSINFO_QUERY_DEFAULT       0x00001000L
  2100.     #define MCI_SYSINFO_SET_TYPES           0x00002000L
  2101.     #define MCI_SYSINFO_QUERY_TYPES         0x00004000L
  2102.  
  2103.     /********************************************************/
  2104.     /* Device Flags                                         */
  2105.     /********************************************************/
  2106.     #define MCI_SYSINFO_DEV_CONTROLLABLE    0x00000001L
  2107.     #define MCI_SYSINFO_DEV_NONCONTROLLABLE 0x00000002L
  2108.     #define MCI_SYSINFO_DEVICESETTINGS      0x00000004L
  2109.  
  2110. /*********************************************************************/
  2111. /* parameter structures for the MCI_SYSINFO message                  */
  2112. /*********************************************************************/
  2113. typedef struct _MCI_SYSINFO_PARMS {
  2114.     HWND    hwndDummyCallback; /* NOTIFY not allowed for SYSINFO          */
  2115.     PSZ     pszReturn;         /* Pointer to return buffer                */
  2116.     ULONG   ulRetSize;         /* Return buffer size                      */
  2117.     ULONG   ulNumber;          /* Ordinal Number                          */
  2118.     USHORT  usDeviceType;      /* MCI device type number                  */
  2119.     USHORT  usReserved0;       /* Reserved field                          */
  2120.     ULONG   ulItem;            /* Used to indicate the MCI_SYSINFO        */
  2121.                                /* extended function to perform            */
  2122.     PVOID   pSysInfoParm;
  2123. } MCI_SYSINFO_PARMS;
  2124. typedef MCI_SYSINFO_PARMS   *PMCI_SYSINFO_PARMS;
  2125.  
  2126. typedef struct _MCI_SYSINFO_LOGDEVICE {
  2127.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  2128.     USHORT  usDeviceType;                         /* Device type number             */
  2129.     ULONG   ulDeviceFlag;                         /* Flag indicating whether device */
  2130.                                                   /*  device is controllable or not */
  2131.     CHAR    szVersionNumber[MAX_VERSION_NUMBER];  /* INI file version number        */
  2132.     CHAR    szProductInfo[MAX_PRODINFO];          /* Textual product description    */
  2133.     CHAR    szMCDDriver[MAX_DEVICE_NAME];         /* MCI Driver dll name            */
  2134.     CHAR    szVSDDriver[MAX_DEVICE_NAME];         /* VSD dll name                   */
  2135.     CHAR    szPDDName[MAX_PDD_NAME];              /* Device PDD name                */
  2136.     CHAR    szMCDTable[MAX_DEVICE_NAME];          /* Device type command table      */
  2137.     CHAR    szVSDTable[MAX_DEVICE_NAME];          /* Device specific command table  */
  2138.     USHORT  usShareType;                          /* Device sharing mode            */
  2139.     CHAR    szResourceName[MAX_DEVICE_NAME];      /* Resource name                  */
  2140.     USHORT  usResourceUnits;                      /* Total resource units available */
  2141.                                                   /*  for this device               */
  2142.     USHORT  usResourceClasses;                    /* Number of resource classes for */
  2143.                                                   /*  this device                   */
  2144.     USHORT  ausClassArray[MAX_CLASSES];           /* Maximum number of resource     */
  2145.                                                   /*  units for each class          */
  2146.     USHORT  ausValidClassArray[MAX_CLASSES][MAX_CLASSES]; /* Valid class combinations */
  2147. } MCI_SYSINFO_LOGDEVICE;
  2148. typedef MCI_SYSINFO_LOGDEVICE  *PMCI_SYSINFO_LOGDEVICE;
  2149.  
  2150.  
  2151. typedef struct _MCI_SYSINFO_DEVPARAMS {
  2152.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  2153.     CHAR    szDevParams[MAX_DEV_PARAMS];          /* Device specific parameters     */
  2154. } MCI_SYSINFO_DEVPARAMS;
  2155. typedef MCI_SYSINFO_DEVPARAMS *PMCI_SYSINFO_DEVPARAMS;
  2156.  
  2157. typedef struct _CONNECT {
  2158.     USHORT usConnectType;                         /* Connector type                 */
  2159.     CHAR   szToInstallName[MAX_DEVICE_NAME];      /* Install name this connector    */
  2160.                                                   /*  is connected to               */
  2161.     USHORT usToConnectIndex;                      /* Connector index this connector */
  2162.                                                   /*  is connected to               */
  2163. } CONNECT;
  2164. typedef CONNECT *PCONNECT;
  2165.  
  2166.  
  2167. typedef struct _MCI_SYSINFO_CONPARAMS {
  2168.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  2169.     USHORT  usNumConnectors;                      /* Number of device connectors    */
  2170.     CONNECT ConnectorList[MAX_CONNECTORS];        /* Connector list array           */
  2171. } MCI_SYSINFO_CONPARAMS;
  2172. typedef MCI_SYSINFO_CONPARAMS *PMCI_SYSINFO_CONPARAMS;
  2173.  
  2174. typedef struct _MCI_SYSINFO_EXTENSION {
  2175.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  2176.     USHORT  usNumExtensions;                      /* Number of extensions           */
  2177.     CHAR    szExtension[MAX_EXTENSIONS][MAX_EXTENSION_NAME];
  2178.                                                   /* Extension name array           */
  2179. } MCI_SYSINFO_EXTENSION;
  2180. typedef MCI_SYSINFO_EXTENSION *PMCI_SYSINFO_EXTENSION;
  2181.  
  2182. typedef struct _MCI_SYSINFO_ALIAS {
  2183.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  2184.     CHAR    szAliasName[MAX_ALIAS_NAME];          /* Alias name           */
  2185. } MCI_SYSINFO_ALIAS;
  2186. typedef MCI_SYSINFO_ALIAS *PMCI_SYSINFO_ALIAS;
  2187.  
  2188. typedef struct _MCI_SYSINFO_DEFAULTDEVICE {
  2189.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  2190.     USHORT  usDeviceType;                         /* Device type number   */
  2191. } MCI_SYSINFO_DEFAULTDEVICE;
  2192. typedef MCI_SYSINFO_DEFAULTDEVICE *PMCI_SYSINFO_DEFAULTDEVICE;
  2193.  
  2194. typedef struct _MCI_SYSINFO_QUERY_NAME {
  2195.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  2196.     CHAR    szLogicalName[MAX_DEVICE_NAME];       /* Logical device name  */
  2197.     CHAR    szAliasName[MAX_ALIAS_NAME];          /* Alias name           */
  2198.     USHORT  usDeviceType;                         /* Device type number   */
  2199.     USHORT  usDeviceOrd;                          /* Device type ordinal  */
  2200. } MCI_SYSINFO_QUERY_NAME;
  2201. typedef MCI_SYSINFO_QUERY_NAME *PMCI_SYSINFO_QUERY_NAME;
  2202.  
  2203. typedef struct _MCI_SYSINFO_TYPES {
  2204.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  2205.     CHAR    szTypes[MAX_TYPEBUFFER+1];            /* EA types             */
  2206. } MCI_SYSINFO_TYPES;
  2207. typedef MCI_SYSINFO_TYPES *PMCI_SYSINFO_TYPES;
  2208.  
  2209.  
  2210. /*********************************************************************/
  2211. /* flags for the MCI_UNFREEZE message                                */
  2212. /*     0x00000X00 are reserved for MCI_UNFREEZE flags                */
  2213. /*********************************************************************/
  2214. #define MCI_OVLY_UNFREEZE_RECT              0x00000100L
  2215. #define MCI_OVLY_UNFREEZE_RECT_OUTSIDE      0x00000200L
  2216.  
  2217. /*********************************************************************/
  2218. /* flags for the MCI_WHERE message                                   */
  2219. /*     0x0000XX00 are reserved for MCI_WHERE flags                   */
  2220. /*********************************************************************/
  2221. #define MCI_VID_WHERE_DESTINATION           0x00000100L
  2222. #define MCI_VID_WHERE_SOURCE                0x00000200L
  2223. #define MCI_VID_WHERE_WINDOW                0x00000400L
  2224.  
  2225. #define MCI_DGV_WHERE_DESTINATION           MCI_VID_WHERE_DESTINATION
  2226. #define MCI_DGV_WHERE_SOURCE                MCI_VID_WHERE_SOURCE
  2227. #define MCI_DGV_WHERE_WINDOW                MCI_VID_WHERE_WINDOW
  2228. #define MCI_DGV_WHERE_ADJUSTED              0x00000800L
  2229.  
  2230. #define MCI_OVLY_WHERE_DESTINATION          MCI_VID_WHERE_DESTINATION
  2231. #define MCI_OVLY_WHERE_SOURCE               MCI_VID_WHERE_SOURCE
  2232. #define MCI_OVLY_WHERE_WINDOW               MCI_VID_WHERE_WINDOW
  2233.  
  2234. /*********************************************************************/
  2235. /* flags and parameter structure for the MCI_WINDOW message          */
  2236. /*     0x0000XX00   are reserved for MCI_WINDOW flags                */
  2237. /*********************************************************************/
  2238. #define MCI_VID_WINDOW_HWND                 0x00000100L
  2239. #define MCI_VID_WINDOW_STATE                0x00000200L
  2240. #define MCI_VID_WINDOW_TEXT                 0x00000400L
  2241. #define MCI_VID_WINDOW_DEFAULT              0x00000800L
  2242.  
  2243. #define MCI_DGV_WINDOW_HWND                 MCI_VID_WINDOW_HWND
  2244. #define MCI_DGV_WINDOW_STATE                MCI_VID_WINDOW_STATE
  2245. #define MCI_DGV_WINDOW_TEXT                 MCI_VID_WINDOW_TEXT
  2246. #define MCI_DGV_WINDOW_DEFAULT              MCI_VID_WINDOW_DEFAULT
  2247.  
  2248. #define MCI_OVLY_WINDOW_HWND                MCI_VID_WINDOW_HWND
  2249. #define MCI_OVLY_WINDOW_STATE               MCI_VID_WINDOW_STATE
  2250. #define MCI_OVLY_WINDOW_TEXT                MCI_VID_WINDOW_TEXT
  2251. #define MCI_OVLY_WINDOW_DEFAULT             MCI_VID_WINDOW_DEFAULT
  2252.  
  2253. typedef  struct _MCI_VID_WINDOW_PARMS {
  2254.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  2255.     HWND    hwndDest;        /* Handle to the client window used for    */
  2256.                              /* the destination of the video image      */
  2257.     USHORT  usCmdShow;       /* Specifies how the window is displayed   */
  2258.     USHORT  usReserved1;     /* Reserved                                */
  2259.     PSZ     pszText;         /* The text to use as the window caption   */
  2260.     PSZ     pszAlias;        /* The window alias for the display window */
  2261. } MCI_VID_WINDOW_PARMS;
  2262.  
  2263. typedef MCI_VID_WINDOW_PARMS   MCI_DGV_WINDOW_PARMS;
  2264. typedef MCI_DGV_WINDOW_PARMS   *PMCI_DGV_WINDOW_PARMS;
  2265.  
  2266. typedef MCI_VID_WINDOW_PARMS   MCI_OVLY_WINDOW_PARMS;
  2267. typedef MCI_OVLY_WINDOW_PARMS  *PMCI_OVLY_WINDOW_PARMS;
  2268.  
  2269.  
  2270. /*********************************************************************/
  2271. /* flags and parameter structure for the MCI_TUNER  message          */
  2272. /*********************************************************************/
  2273. #define MCI_DGV_AUDIO_CHANNEL               0x00010000L
  2274. #define MCI_DGV_TV_CHANNEL                  0x00020000L
  2275. #define MCI_DGV_FREQUENCY                   0x00040000L
  2276. #define MCI_DGV_FINETUNE_PLUS               0x00080000L
  2277. #define MCI_DGV_FINETUNE_MINUS              0x00100000L
  2278. #define MCI_DGV_REGION                      0x00200000L
  2279. #define MCI_DGV_AFC_ON                      0x00400000L
  2280. #define MCI_DGV_AFC_OFF                     0x00800000L
  2281. #define MCI_DGV_POLARIZATION                0x00800000L
  2282. #define MCI_DGV_QUERY                       0x01000000L
  2283.  
  2284. typedef struct _MCI_DGV_TUNER_PARMS {
  2285.     HWND   hwndCallback;     /* PM window handle for MCI notify message    */
  2286.     ULONG  ulFrequency;      /* Tuner Frequency                            */
  2287.     ULONG  ulAudioChannel;   /* Audio Channel                              */
  2288.     ULONG  ulTVChannel;      /* TV Channel                                 */
  2289.     LONG   lFineTune;        /* Fine tuning adjustments.                   */
  2290.     PSZ    pszRegion;        /* TV Channel Region                          */
  2291.     ULONG  ulReserved1;      /* Reserved 1                                 */
  2292.     ULONG  ulReserved2;      /* Reserved 2                                 */
  2293. } MCI_DGV_TUNER_PARMS;
  2294. typedef MCI_DGV_TUNER_PARMS   *LPMCI_DGV_TUNER_PARMS;
  2295.  
  2296. #pragma pack()
  2297. /*********************************************************************/
  2298. /*                                                                   */
  2299. /*  MCI system value defines                                         */
  2300. /*                                                                   */
  2301. /*********************************************************************/
  2302. #define MSV_CLOSEDCAPTION                   0x0
  2303. #define MSV_MASTERVOLUME                    0x1
  2304. #define MSV_HEADPHONES                      0x2
  2305. #define MSV_SPEAKERS                        0x3
  2306. #define MSV_WORKPATH                        0x4
  2307. #define MSV_SYSQOSVALUE                     0x5
  2308. #define MSV_SYSQOSERRORFLAG                 0x6
  2309.  
  2310. #define MSV_MAX                             0x7
  2311.  
  2312. #endif                       /* INCL_32 */
  2313.  
  2314. /*********************************************************************/
  2315. /* Playlist defines                                                  */
  2316. /*********************************************************************/
  2317. #define DATA_OPERATION                      0
  2318. #define BRANCH_OPERATION                    1
  2319. #define LOOP_OPERATION                      2
  2320. #define CALL_OPERATION                      3
  2321. #define RETURN_OPERATION                    4
  2322. #define EXIT_OPERATION                      5
  2323. #define NOP_OPERATION                       6
  2324. #define MESSAGE_OPERATION                   7
  2325. #define CUEPOINT_OPERATION                  8
  2326. #define SEMWAIT_OPERATION                   9
  2327. #define SEMPOST_OPERATION                  10
  2328.  
  2329. /*********************************************************************/
  2330. /*                                                                   */
  2331. /*  MCI Function prototypes                                          */
  2332. /*                                                                   */
  2333. /*********************************************************************/
  2334.  
  2335. #ifdef INCL_32
  2336.  
  2337. ULONG APIENTRY mciSendCommand   (USHORT   usDeviceID,
  2338.                                  USHORT   usMessage,
  2339.                                  ULONG    ulParam1,
  2340.                                  PVOID    pParam2,
  2341.                                  USHORT   usUserParm);
  2342.  
  2343. ULONG APIENTRY  mciSendString   (PSZ      pszCommandBuf,
  2344.                                  PSZ      pszReturnString,
  2345.                                  USHORT   wReturnLength,
  2346.                                  HWND     hwndCallBack,
  2347.                                  USHORT   usUserParm );
  2348.  
  2349. ULONG APIENTRY mciGetErrorString(ULONG   ulError,
  2350.                                  PSZ     pszBuffer,
  2351.                                  USHORT  usLength);
  2352.  
  2353.  
  2354. ULONG APIENTRY mciMakeGroup     (PUSHORT pusDeviceGroupID,
  2355.                                  USHORT  usDeviceCount,
  2356.                                  PUSHORT pausDeviceList,
  2357.                                  ULONG   ulFlags,
  2358.                                  ULONG   ulMMTime);
  2359.  
  2360.  
  2361. ULONG APIENTRY mciDeleteGroup   (USHORT   usGroupID);
  2362.  
  2363.  
  2364.  
  2365. BOOL APIENTRY mciSetSysValue (USHORT iSysValue, PVOID pValue);
  2366.  
  2367. BOOL  APIENTRY mciQuerySysValue (USHORT iSysValue, PVOID pValue);
  2368.  
  2369. ULONG  APIENTRY mciGetDeviceID  (PSZ  pszName);
  2370.  
  2371. #else                        /* INCL_32 */
  2372.  
  2373. #define mciSendString mci16SendString
  2374. #define mciGetErrorString mci16GetErrorString
  2375. #define mciGetDeviceID mci16GetDeviceID
  2376.  
  2377. ULONG APIENTRY  mciSendString   (PSZ     pszCommandBuf,
  2378.                                  PSZ     pszReturnString,
  2379.                                  USHORT  usReturnLength,
  2380.                                  HWND    hwndCallBack,
  2381.                                  USHORT  usUserParm );
  2382.  
  2383. ULONG APIENTRY mciGetErrorString    (ULONG    usError,
  2384.                                      PSZ      pszBuffer,
  2385.                                      USHORT   usLength);
  2386.  
  2387. ULONG APIENTRY mciGetDeviceID  (PSZ  pszName);
  2388.  
  2389.  
  2390. #endif                       /* INCL_32 */
  2391. #endif
  2392.