home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / detk45he.zip / vsdcmds.h < prev    next >
C/C++ Source or Header  |  1999-03-15  |  46KB  |  973 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /* Module Name: VSDCMDS.H                                                   */
  4. /*                                                                          */
  5. /* This is the multimedia include file that has the typedefs, defines and   */
  6. /* function prototyes for Vendor Specific Devices                           */
  7. /*                                                                          */
  8. /*         Copyright (c) International Business Machines Corporation        */
  9. /*                          1991, 1992, 1993                                */
  10. /*                        All Rights Reserved                               */
  11. /*                                                                          */
  12. /****************************************************************************/
  13. #ifdef __cplusplus
  14.    extern "C" {
  15. #endif
  16.  
  17. #ifndef _VSDCMDS_H_
  18. #define _VSDCMDS_H_
  19.  
  20. /* VSD common functions/commands                                                         */
  21. #define VSD_DEVUNITS                  1
  22. #define VSD_GETPRODINFO               2 /* naming consistency */
  23. #define VSD_QUERYPRODINFO             2
  24. #define VSD_OPEN                      3
  25. #define VSD_CLOSE                     4
  26. #define VSD_RESOURCE                  5 /* fix spelling error */
  27. #define VSD_RESOUCRCE                 5
  28. #define VSD_SAVE                      7
  29. #define VSD_RESTORE                   8
  30. #define VSD_INSERTSETTINGSPAGE        9
  31. #define VSD_GETDEVCAPS               10
  32. #define VSD_ESCAPE                   11
  33. #define VSD_PLAY                     12
  34. #define VSD_RECORD                   13
  35. #define VSD_READ                     14
  36. #define VSD_PEEKQUEUE                15
  37. #define VSD_COMPLETE                 16
  38. #define VSD_FLUSH                    17
  39. #define VSD_EJECT                    18
  40. #define VSD_LOAD                     19
  41. #define VSD_RESET                    20
  42. #define VSD_PARK                     21
  43. #define VSD_EVENTS                   22
  44. #define VSD_CAPTUREIMAGE             23
  45. #define VSD_RESTOREIMAGE             24
  46. #define VSD_FREEZE                   25
  47. #define VSD_SET                      26
  48. #define VSD_QUERY                    27
  49. #define VSD_SEEK                     28
  50. #define VSD_STEP                     29
  51. #define VSD_DDCMD                    31     /* DDMCD information */
  52. #define VSD_STOP                     40
  53. #define VSD_USER                     1000
  54.  
  55.  
  56. /* VSD common Return Codes                                                                */
  57. #ifndef INCL_AUDIO_VSD
  58. #define VSDERR_SUCCESS                       0
  59. #define VSDERR_REQUEST_BUF_TOO_SMALL         1
  60. #define VSDERR_UNSUPPORTED_COMMAND           2
  61. #define VSDERR_INVALID_HVSD                  3
  62. #define VSDERR_INVALID_DATATYPE              4
  63. #define VSDERR_INVALID_CATEGORY              5
  64. #define VSDERR_CANNOT_READ                   6
  65. #define VSDERR_CANNOT_WRITE                  7
  66. #define VSDERR_INSUFFICIENT_MEMORY           8
  67. #define VSDERR_NO_DEVICE_DRIVER              9
  68. #define VSDERR_HARDWARE                     10
  69. #define VSDERR_CANNOT_PARK                  11
  70. #define VSDERR_UNSUPPORTED_INPUT            12
  71. #define VSDERR_UNSUPPORTED_OUTPUT           13
  72. #define VSDERR_INVALID_INPUT                14
  73. #define VSDERR_INVALID_OUTPUT               15
  74. #define VSDERR_TOO_MANY_INPUTS              16
  75. #define VSDERR_TOO_MANY_OUTPUTS             17
  76. #define VSDERR_INVALID_EVENT                18
  77. #define VSDERR_CANNOT_DISABLE               19
  78. #define VSDERR_EVENT_OUT_OF_RANGE           20
  79. #define VSDERR_UNSUPPORTED_EVENT            21
  80. #define VSDERR_VOL_OUT_OF_RANGE             22
  81. #define VSDERR_VECT_OUT_OF_RANGE            23
  82. #define VSDERR_OUTOFRANGE                   24
  83. #define VSDERR_UNSUPPORTED_DATA_TYPE        25
  84. #define VSDERR_INVALID_DATA_TYPE            26
  85. #define VSDERR_UNSUPPORTED_AUDIO_SETTING    27
  86. #define VSDERR_INVALID_AUDIO_SETTING        28
  87. #define VSDERR_UNSUPPORTED_CONNECTOR        29
  88. #define VSDERR_INVALID_CONNECTOR            30
  89. #define VSDERR_MISSING_PARAMETER            31
  90. #define VSDERR_INSTANCE_INACTIVE            32
  91. #define VSDERR_WARNING                      33
  92. #define VSDERR_CANNOT_CLOSE                 34
  93. #define VSDERR_TOO_FEW_SLOTS                35
  94. #define VSDERR_INVALID_MODE                 36
  95. #define VSDERR_INVALID_BUFF                 37
  96. #define VSDERR_DEVICE_REJECTED              38
  97. #define VSDERR_UNSUPPORTED_FLAG             39
  98. #define VSDERR_DEVICE_IN_USE                99
  99.                                                 /* KLL Tuner Support - Start */
  100. /*    SetTuner_Channel return codes       */
  101. #define VSDERR_CHANNEL_LOW                  41
  102. #define VSDERR_CHANNEL_HIGH                 42
  103. #define VSDERR_CHANNEL_SKIP                 43
  104. #define VSDERR_CHANNEL_NO_HW                48
  105.                                                 /* KLL Tuner Support - End   */
  106. #else
  107.  
  108. /* These are the valid Audio VSD errors */
  109.  
  110. #define VSDERR_SUCCESS                      MCIERR_SUCCESS
  111. #define VSDERR_REQUEST_BUF_TOO_SMALL        MCIERR_INVALID_BUFFER
  112. #define VSDERR_UNSUPPORTED_COMMAND          MCIERR_UNSUPPORTED_FUNCTION
  113. #define VSDERR_UNSUPPORTED_FUNCTION         MCIERR_UNSUPPORTED_FUNCTION
  114. #define VSDERR_UNRECOGNIZED_COMMAND         MCIERR_UNRECOGNIZED_COMMAND
  115. #define VSDERR_INVALID_HVSD                 MCIERR_INVALID_DEVICE_ID
  116. #define VSDERR_FILE_NOT_FOUND               MCIERR_FILE_NOT_FOUND
  117. #define VSDERR_OUT_OF_MEMORY                MCIERR_OUT_OF_MEMORY
  118. #define VSDERR_NO_DEVICE_DRIVER             MCIERR_NO_DEVICE_DRIVER
  119. #define VSDERR_HARDWARE                     MCIERR_HARDWARE
  120. #define VSDERR_UNSUPPORTED_CONN_TYPE        MCIERR_UNSUPPORTED_CONN_TYPE
  121. #define VSDERR_INVALID_CONNECTOR_TYPE       MCIERR_INVALID_CONNECTOR_TYPE
  122. #define VSDERR_INVALID_CONNECTOR_INDEX      MCIERR_INVALID_CONNECTOR_INDEX
  123. #define VSDERR_CANNOT_MODIFY_CONNECTOR      MCIERR_CANNOT_MODIFY_CONNECTOR
  124. #define VSDERR_INVALID_CONNECTOR            MCIERR_INVALID_CONNECTOR
  125. #define VSDERR_MISSING_PARAMETER            MCIERR_MISSING_PARAMETER
  126. #define VSDERR_INSTANCE_INACTIVE            MCIERR_INSTANCE_INACTIVE
  127. #define VSDERR_DRIVER_PROC_NOT_FOUND        MCIERR_DRIVER_PROC_NOT_FOUND
  128. #define VSDERR_INTERNAL                     MCIERR_INTERNAL
  129. #define VSDERR_UNSUPP_FORMAT_TAG            MCIERR_UNSUPP_FORMAT_TAG
  130. #define VSDERR_UNSUPP_BITSPERSAMPLE         MCIERR_UNSUPP_BITSPERSAMPLE
  131. #define VSDERR_UNSUPP_CHANNELS              MCIERR_UNSUPP_CHANNELS
  132. #define VSDERR_UNSUPP_SAMPLESPERSEC         MCIERR_UNSUPP_SAMPLESPERSEC
  133. #define VSDERR_UNSUPP_FORMAT_MODE           MCIERR_UNSUPP_FORMAT_MODE
  134. #define VSDERR_RESOURCE_NOT_AVAILABLE       MCIERR_RESOURCE_NOT_AVAILABLE
  135. #define VSDERR_CANNOT_LOAD_DSP_MOD          MCIERR_CANNOT_LOAD_DSP_MOD
  136. #define VSDERR_UNSUPP_CLASS                 MCIERR_UNSUPP_CLASS
  137.  
  138. #define VSDERR_UNSUPPORTED_FLAG             MCIERR_UNSUPPORTED_FLAG
  139. #define VSDERR_BASE                         USERERR_BASE
  140.  
  141. typedef MCIDRV_RESTORE_PARMS VSD_RESTORE_PARMS;
  142. typedef VSD_RESTORE_PARMS *PVSD_RESTORE_PARMS;
  143. #endif
  144.  
  145.  
  146.  
  147. /* Device Capabilities flag */
  148. #define DC_TRUE                 1  /* Supports/Has this function             */
  149. #define DC_FALSE                0  /* Does not Support/Have this function    */
  150.  
  151.  
  152. /* Device Capabilities Index to flag */
  153. #define DC_HASAUDIO              0
  154. #define DC_HASVIDEO              1
  155. #define DC_HASVOLUME             2
  156. #define DC_HASDISPLAY            3
  157. #define DC_HASAUDIOATTRIBUTES    4
  158. #define DC_HASAUDIOCAPABILITIES  5
  159. #define DC_HASVIDEOATTRIBUTES    6
  160. #define DC_HASIMAGEATTRIBUTES    7
  161. #define DC_HASTTSATTRIBUTES      8
  162. #define DC_HASCDCAPS             9
  163. #define DC_HASESCAPE            10
  164. #define DC_CANPLAY              11
  165. #define DC_CANRECORD            12
  166. #define DC_HASINPUTLEVEL        13
  167. #define DC_HASSTATUSLEVEL       14
  168. #define DC_HASMONITOR           15
  169. #define DC_CANREAD              16
  170. #define DC_CANWRITE             17
  171. #define DC_HASDATATYPES         18
  172. #define DC_CANEJECT             19
  173. #define DC_CANLOAD              20
  174. #define DC_HASDOOR              21
  175. #define DC_HASTRACKS            22
  176. #define DC_HASMEDIA             23
  177. #define DC_HASCOMMSETTINGS      24
  178. #define DC_HASMEDIATYPE         25
  179. #define DC_HASKEYLOCK           26
  180. #define DC_HASVARIABLERATES     27
  181. #define DC_CANCUE               28
  182. #define DC_HASCOUNTER           29
  183. #define DC_CANRESET             30
  184. #define DC_HASPOSITION          31
  185. #define DC_HASLENGTH            32
  186. #define DC_CANPARK              33
  187. #define DC_HASCONNECTOR         34
  188. #define DC_HASEVENTS            35
  189. #define DC_HASDIRECTION         36
  190. #define DC_HASVIEWPORT          37
  191. #define DC_CANCAPTUREIMAGE      38
  192. #define DC_CANRESTOREIMAGE      39
  193. #define DC_HASRAM               40
  194. #define DC_AUDIOSETTINGS        41
  195. #define DC_IMAGESETTINGS        42
  196. #define DC_QUERYMINSEEKTIME     43
  197. #define DC_QUERYTIME            44
  198. #define DC_SEEK                 45
  199. #define DC_STEP                 46
  200. #define DC_CAN_MIX              47
  201. #define DC_HASCLOCK             48
  202. #define DC_HASPOWER             49
  203. #define DC_HASZOOM              50
  204. #define DC_HASEDIT              51
  205. #define DC_HASFOCUS             52
  206. #define DC_HASCHANNELS          53
  207. #define DC_HASTEXTTOSPEECH      54
  208. #define DC_CANSTREAM            55
  209. #define DC_CANSCALE             56
  210. #define DC_CANDISTORT           57
  211. #define DC_CANSTRETCH           58
  212. #define DC_HASTUNER             59
  213. #define DC_HASTELETEX           60
  214. #define DC_HASAFC               61
  215. #define DC_HASPOLARIZATION      62
  216. #define DC_HASINLAY             63
  217.  
  218. /************************* W A R N I N G  ******************************/
  219. /** Insert new Items Above *** and  *** Change Last Used below        **/
  220. /* *********************** W A R N I N G  ******************************/
  221. #define DC_MAX_DEVCAP           64 /* Maximum Number of entries supported */
  222.  
  223.  
  224. typedef PVOID HVSD;
  225.  
  226. /* VSD entry point                                                                       */
  227. typedef ULONG (APIENTRY FNVSDENTRY)(HVSD hVsd, ULONG ulFunc, ULONG ulFlags, PVOID pParms);
  228. typedef FNVSDENTRY * PFNVSDENTRY;
  229.  
  230. /* VSD_OPEN request parameter block */
  231.    typedef struct {
  232.       ULONG     ulLength;                        /* length of the structure */
  233.       ULONG     ulCategory;                      /* Input - Name of unit to open */
  234.       CHAR      szInstallName[MAX_DEVICE_NAME];  /* Install Name of MCD */
  235.       CHAR      szPDDName[MAX_DEVICE_NAME];      /* Name of PDD to Open */
  236.       HVSD      hvsd;                            /* Output - handle to the VSD driver */
  237.       PFN       pfEvent;                         /* function ptr to VSD event proc */
  238.       PVOID     pDevInfo;                        /* Device specific information */
  239.       ULONG     ulDDStream;                      /* Device Driver Stream Identifier */
  240.    } VSD_OPEN_PARMS;
  241.  
  242. typedef VSD_OPEN_PARMS   * PVSD_OPEN_PARMS;
  243.  
  244. #define VSD_OPEN_Len      sizeof(VSD_OPEN_PARMS)
  245.  
  246. /* Define for Image Rectangle */
  247. typedef struct
  248.   {
  249.   USHORT X_left;
  250.   USHORT Y_top;
  251.   USHORT X_width;
  252.   USHORT Y_height;
  253.   } IRECT;
  254.  
  255.  
  256. /* VSD_GETDEVCAPS request parameter block */
  257.    typedef struct {
  258.       ULONG     ulLength;                 /* length of the structure                */
  259.       ULONG     ulMax_Caps;               /* returns Maximun Capabilities Supported */
  260.       ULONG     ulNum_Caps;               /* returns Number of Capabilities returned*/
  261.       ULONG     ulResv01;                 /* Unused Reserved                        */
  262.       ULONG     ulResv02;                 /* Unused Reserved                        */
  263.       ULONG     ulResv03;                 /* Unused Reserved                        */
  264.       ULONG     ulResv04;                 /* Unused Reserved                        */
  265.       BOOL      bSupports[DC_MAX_DEVCAP]; /* Capability Entries                     */
  266.    } VSD_GETDEVCAPS_PARMS;
  267.  
  268. typedef VSD_GETDEVCAPS_PARMS    *PVSD_GETDEVCAPS_PARMS;
  269.  
  270. /* sub-flags for devcaps */
  271. #define VSD_MIXCAPS         1
  272. #define VSD_MIXLINECAPS     2
  273. #define VSD_MODECAPS        3
  274.  
  275.  
  276. #define VSD_GETDEVCAPS_Len   sizeof(VSD_GETDEVCAPS_PARMS)
  277.  
  278.  
  279. /* VSD_CAPTUREIMAGE and VSD_RESTOREIMAGE request parameter block */
  280.    typedef struct {
  281.       ULONG     ulLength;                        /* length of the structure               */
  282.       ULONG     ulImg_Buff_Size;                 /* Size of the Image Buffer              */
  283.       PVOID     pImg_Buff;                       /* Pointer to Image buffer               */
  284.       IRECT     irectSource;                     /* Portion of Source rectangle to use    */
  285.       IRECT     irectDest;                       /* Size of Destination rectangle         */
  286.    } VSD_CAPIMAGE_PARMS;
  287. #define VSD_CAPIMAGE_Len   sizeof(VSD_CAPIMAGE_PARMS)
  288.  
  289.  
  290. /* VSD_LOAD device with Microcode/data parameter block */
  291.    typedef struct {
  292.       ULONG     ulLength;                     /* length of the structure    */
  293.       ULONG     ulBuff_Size;                  /* Size of the data Buffer    */
  294.       PVOID     pBuff;                        /* Pointer to data buffer     */
  295.       ULONG     ulLoadID;                     /* Load Identifier (returned) */
  296.    } VSD_LOAD_PARMS;
  297. #define VSD_LOAD_Len   sizeof(VSD_LOAD_PARMS)
  298.  
  299.  
  300. /* VSD_QUERY_LOAD Ask Device if MicroLoad is needed */
  301.    typedef struct {
  302.       ULONG     ulLength;                     /* length of the structure    */
  303.       CHAR      szLoadName[256];               // Name of Load File
  304.    } VSD_QUERY_LOAD_PARMS;
  305. #define VSD_QUERY_LOAD_Len   sizeof(VSD_QUERY_LOAD_PARMS)
  306.  
  307.  
  308. /* VSD_UNLOAD device with Microcode/data parameter block */
  309.    typedef struct {
  310.       ULONG     ulLength;                     /* length of the structure    */
  311.       ULONG     ulHandle;                     /* Load Identifier to unload  */
  312.    } VSD_UNLOAD_PARMS;
  313. #define VSD_UNLOAD_Len   sizeof(VSD_UNLOAD_PARMS)
  314.  
  315.  
  316. /* Common ulFlags for VSDEntry (sub-functions/command)                                    */
  317. #define VSD_NONE                      0          /* no subfunction requested/supported    */
  318.  
  319. /* VSD_FREEZE ulFlags for VSDEntry (sub-functions/commands)                               */
  320. /*  the pRequest parameter is not uses on this call                                       */
  321. /*  defines to FREEZE or UNFREEZE the image captured by the capture device                */
  322. #define VSD_FREEZE_DISABLE            0         /* UnFreeze the image */
  323. #define VSD_FREEZE_ENABLE             1         /* Freeze the image */
  324.  
  325. /* VSD_SET ulFlags for VSDEntry (sub-functions/commands)                                  */
  326. #define VSD_SETVIDEO                            1
  327. #define VSD_SETVOLUME                           2
  328. #define VSD_SETDISPLAY                          3
  329. #define VSD_SETVIDEOATTRIBUTES                  4
  330. #define VSD_SETIMAGEATTRIBUTES                  5
  331. #define VSD_SETTSATTRRIBUTES                    6
  332. #define VSD_SETINPUTLEVEL                       7
  333. #define VSD_SETMONITOR                          8
  334. #define VSD_SETDATATYPE                         9
  335. #define VSD_SETDOOR                            10
  336. #define VSD_SETCOMMSETTINGS                    11
  337. #define VSD_SETRATE                            12
  338. #define VSD_SETKEYLOCK                         13
  339. #define VSD_SETCUE                             14
  340. #define VSD_SETCOUNTER                         15
  341. #define VSD_SETPOSITION                        16
  342. #define VSD_SETCONNECTOR                       17
  343. #define VSD_SETDIRECTION                       18
  344. #define VSD_SETVIEWPORTPOSITION                19
  345. #define VSD_SETVIEWPORT                        20
  346. #define VSD_SETBANK                            21
  347. #define VSD_SETVIDEORECT                       22
  348. #define VSD_SETIMAGEFORMAT                     23
  349. #define VSD_SETFPS                             24
  350. #define VSD_SETTRANSPARENTCOLOR                25
  351. #define VSD_SETCOLORKEYING                     26
  352. #define VSD_SETAUDIOATTRIBUTES                 27
  353. #define VSD_SETMIXSTATE                        28
  354. #define VSD_SETMIXCONNECTIONS                  29
  355. #define VSD_SETMIXCONTROL                      30
  356.                                                 /* KLL Tuner Support - Start */
  357. #define VSD_SETTUNERCHANNEL                    31
  358.                                                 /* KLL Tuner Support - End   */
  359. #define VSD_SETCLIPLIST                        32
  360. #define VSD_SETCONNECTION                      33
  361. /* VSD_SETVIDEOATTRIBUTES and VSD_QUERYVIDEOATTRIBUTES Request parameter block */
  362.    typedef struct {
  363.       ULONG     ulLength;                        /* length of the structure */
  364.       ULONG     ulBrightness;                    /* Brightness */
  365.       ULONG     ulHue;                           /* Hue */
  366.       ULONG     ulSaturation;                    /* Staturation */
  367.       ULONG     ulContrast;                      /* Contrast */
  368.       ULONG     ulSharpness;                     /* Sharpness */
  369.    } VSD_VIDEOATTRIBUTES_PARMS;
  370. #define VSD_VIDEOATTRIBUTES_Len   sizeof(VSD_VIDEOATTRIBUTES_PARMS)
  371.  
  372. /* Set Brigthness, Hue, Saturation, ... on VSD_SETVIDEOATTRIBUTES */
  373. #define SETVIDEO_NoChange      0xFFFFFFFF
  374. #define SETVIDEO_ToDefault     0xFFFFFFFE
  375. #define QUERYVIDEO_unsupported 0xFFFFFFFF
  376.  
  377. #ifndef INCL_AUDIO_VSD
  378. /* VSD_SETVIDEORECT and VSD_QUERYVIDEORECT Request parameter block    */
  379. /* Specifies the Source and Destination rectangles                    */
  380.    typedef struct {
  381.       ULONG     ulLength;                        /* length of the structure */
  382.       IRECT     irectSource;                     /* Portion of Source rectangle to use */
  383.       IRECT     irectDest;                       /* Size of Destination rectangle */
  384.    } VSD_VIDEORECT_PARMS;
  385. #define VSD_VIDEORECT_Len   sizeof(VSD_VIDEORECT_PARMS)
  386.  
  387. /* VSD_SETCLIPLIST Request parameter block                            */
  388. /* Specifies the Visible regions of the Destination Rectangle.        */
  389. /* This Command is only issued by the MCD if DC_HASINLAY is true.     */
  390. /* Note: The number of valid regions will be set to zero when windows */
  391. /* are moving. At this point the driver should suspend all blits to   */
  392. /* its window until this command is reissued with at list one visible */
  393. /* region.                                                            */
  394. /* When windows change the command sequence will be a follows:        */
  395. /*  1) One (or more) VSD_SETCLIPLIST will ulNum_Rects = 0              */
  396. /*  2) VSD_SETVIDEORECT with the new Source/Destination Rectangles.   */
  397. /*     This command may not be issued if the devices window is        */
  398. /*     unchanged.                                                     */
  399. /*  3) VSD_SETCLIPLIST with 1 or more valid regions                   */
  400.  
  401.    typedef struct {
  402.       ULONG     ulLength;      /* length of the structure             */
  403.       ULONG     ulFlags;       /* Reserved and set to Zero            */
  404.       ULONG     ulNum_Rects;   /* Number of rectanlges in array below */
  405.       IRECT     VisRect[1];    /* Array of n Visible Retangle         */
  406.    } VSD_SETCLIPLIST_PARMS;
  407. #define VSD_SETCLIPLIST_Len   sizeof(VSD_SETCLIPLIST_PARMS)
  408. #endif
  409.  
  410. /* VSD_SETVIEWPORT and VSD_QUERYVIEWPORT Request parameter block                  */
  411.    typedef struct {
  412.       ULONG     ulLength;                        /* length of the structure */
  413.       BOOL      bViewPort;                       /* TRUE = View Port Enabled */
  414.    } VSD_VIEWPORT_PARMS;
  415. #define VSD_VIEWPORT_Len   sizeof(VSD_VIEWPORT_PARMS)
  416.  
  417. /* VSD_SETTRANSPARENTCOLOR and VSD_QUERYTRANSPARNETCOLOR Request parameter block                  */
  418.    typedef struct {
  419.       ULONG     ulLength;                        /* length of the structure */
  420.       ULONG     ulTransparentColor;              /* Transparent Color */
  421.    } VSD_TRANSPARENTCOLOR_PARMS;
  422. #define VSD_TRANSPARENTCOLOR_Len   sizeof(VSD_TRANSPARENTCOLOR_PARMS)
  423.  
  424. /* VSD_SETCOLORKEYING and VSD_QUERYCOLORKEYING Request parameter block                  */
  425.    typedef struct {
  426.       ULONG     ulLength;                        /* length of the structure */
  427.       BOOL      bColorKeying;                    /* TRUE = Transparent Color Enable */
  428.    } VSD_COLORKEYING_PARMS;
  429. #define VSD_COLORKEYING_Len   sizeof(VSD_COLORKEYING_PARMS)
  430.  
  431. /*****************************************************************************************************/
  432.    typedef struct {
  433.       ULONG          ulType;                     /* Data Type */
  434.       ULONG          ulSubType;                  /* Streaming Specific Info */
  435.       ULONG          ulReqBufSize;               /* Required/Recommened buffer size */
  436.       ULONG          ulQueueSize;                /* Number of Queued Elements */
  437.       ULONG          ulOperation;                /* (play, record, etc.) */
  438.       ULONG          ulSettings;                 /* Device specific structure */
  439.       ULONG          ulFlags;                    /* Device specific flags */
  440.    } VSD_DATATYPE;
  441.  
  442. /* VSD_SETDATATYPE and VSD_QUERY_DATATYPE Request Parameter Block */
  443.    typedef struct {
  444.       ULONG          ulLength;                   /* length of the structure */
  445.       ULONG          ulNumDataTypes;             /* Number of Data Types */
  446.       VSD_DATATYPE   vsdDataType[1];             /* Specific info for each Data Type */
  447.    } VSD_DATATYPES_PARMS;
  448.  
  449.  
  450. /* Supported DataTypes - used by VSD_SETDATATYPES, VSD_QUERYDATATYPES and      */
  451. /*                               VSD_RESOURCE                                  */
  452. #define VSD_DATATYPE_ADPCMAVC        1 /* AVC type ADPCM                      */
  453. #define VSD_DATATYPE_PCM             2 /* PCM                                 */
  454. #define VSD_DATATYPE_MU_LAW          3 /* Mu-Law                              */
  455. #define VSD_DATATYPE_MIDI            4 /* MIDI                                */
  456. #define VSD_DATATYPE_ALAW            5 /* A-Law                               */
  457. #define VSD_DATATYPE_SOURCEMIX       6 /* External analog audio source        */
  458. #define VSD_DATATYPE_SPV2            7 /* Speech Viewer/2                     */
  459. #define VSD_DATATYPE_ADPCMXA         8 /* XA CD ROM                           */
  460. #define VSD_DATATYPE_CVSD           11 /* CVSD                                */
  461. #define VSD_DATATYPE_TEXT_TO_SPEECH 12 /* Text to speech                      */
  462. #define VSD_DATATYPE_CDDA           13 /* Green Book format                   */
  463. #define VSD_DATATYPE_CDXA           14 /* The other XA mode is an audio mode  */
  464.  
  465. /* VSD_IMAGEFORMAT use by VSD_SETIMAGEFORMAT and VSD_QUERYIMAGEFORMAT */
  466.    typedef struct {
  467.       ULONG          ulFormat;                   /* Image Format */
  468.       USHORT         usBitsPerPEL;               /* Bits Per PEL */
  469.    } VSD_IMAGEFORMAT;
  470.  
  471. /* defines for supported Formats - used by VSD_SETIMAGEFORMAT and VSD_QUERYIMAGEFORMAT. */
  472. #define VSD_IMAGEFORMAT_RGB_565        1 /* bits 0-4 =Red, 5-10 =Green, 11-15 Blue   */
  473. #define VSD_IMAGEFORMAT_YUV_411        2 /* 4 bytes of Y, 1 Byte of U, 1 Byte of V   */
  474. #define VSD_IMAGEFORMAT_OS2_BITMAP2    3 /* OS/2 Bitmap                              */
  475. #define VSD_IMAGEFORMAT_YUV_422        '224Y'/* 4 bytes of Y, 2 Byte of U, 2 Byte of V   */
  476.                                              /* all 8 bit values in this form YUYVYUYV   */
  477.  
  478. /* defines for supported Bits Per PEL - used by VSD_SETIMAGEFORMAT and VSD_QUERYIMAGEFORMAT. */
  479. #define VSD_BITSPERPEL_8              8  /*  8 Bits Per PEL                   */
  480. #define VSD_BITSPERPEL_16            16  /* 16 Bits Per PEL                   */
  481. #define VSD_BITSPERPEL_24            24  /* 24 Bits Per PEL                   */
  482.  
  483.  
  484. /* VSD_SETIMAGEFORMAT Request Parameter Block */
  485.    typedef struct {
  486.       ULONG           ulLength;                   /* length of the structure */
  487.       VSD_IMAGEFORMAT SetFormat;                  /* Image Format to Set */
  488.    } VSD_SETIMAGEFORMAT_PARMS;
  489. #define VSD_SETIMAGEFORMAT_Len   sizeof(VSD_SETIMAGEFORMAT_PARMS)
  490.  
  491. /* VSD_QUERYIMAGEFORMAT Request Parameter Block */
  492.    typedef struct {
  493.       ULONG           ulLength;                 /* length of the structure */
  494.       VSD_IMAGEFORMAT CurFormat;                /* Current Image Format */
  495.       VSD_IMAGEFORMAT NativeFormat;             /* Native  Image Format */
  496.       ULONG           ulNumFormats;             /* Number of image Formats supported */
  497.       VSD_IMAGEFORMAT Format[1];                /* List of Image Formats supported */
  498.    } VSD_QUERYIMAGEFORMAT_PARMS;
  499. #define VSD_QUERYIMAGEFORMAT_Len   sizeof(VSD_QUERYIMAGEFORMAT_PARMS)
  500.  
  501.  
  502. /* defines for ulFlags - used by VSD_SETRIMAGEFORMAT and VSD_QUERYRIMAGEFORMAT. */
  503. #define VSD_NATIVE_FORMAT      1  /*  Native Format Supported by the Device  */
  504.  
  505. /* VSD_RIMAGEFORMAT use by VSD_SETRIMAGEFORMAT and VSD_QUERYRIMAGEFORMAT */
  506.    typedef struct {
  507.       ULONG        FourCC;                     /* Image Format */
  508.       USHORT       usFlags;                    /* Flags 1 = Native */
  509.    } VSD_RIMAGEFORMAT;
  510.  
  511. /* VSD_QUERYRESTOREIMAGEFORMAT Request Parameter Block */
  512.    typedef struct {
  513.       ULONG            ulLength;          /* length of the structure */
  514.       ULONG            CurFourCC;         /* Current Image Format */
  515.       ULONG            ulNumFormats;      /* Number of image Formats supported */
  516.       VSD_RIMAGEFORMAT Format[1];         /* List of Image Formats supported */
  517.    } VSD_QUERYRESTOREIMAGEFORMAT_PARMS;
  518. #define VSD_QUERYRESTOREIMAGEFORMAT_Len sizeof(VSD_QUERYRESTOREIMAGEFORMAT_PARMS)
  519.  
  520. /* VSD_SETFPS and VSD_QUERYFPS Request Parameter Block  (set Frames Per Second) */
  521.    typedef struct {
  522.       ULONG          ulLength;                   /* length of the structure */
  523.       ULONG          ulFPS;                      /* Set Current Frames Per Second to */
  524.       ULONG          ulFlags;                    /* Flags */
  525.    } VSD_SETFPS_PARMS;
  526. #define VSD_SETFPS_Len   sizeof(VSD_SETFPS_PARMS)
  527.  
  528.  
  529. /* defines for VSD_QUERYFPS and VSD_SETFPS Flags            */
  530. #define VSD_FPS_Frames           0
  531. #define VSD_FPS_MicroSecond      1
  532.  
  533.  
  534. /* VSD_QUERYIMAGEEXTENTS maximun image size that Capture Image can return */
  535.    typedef struct {
  536.       ULONG          ulLength;                   /* length of the structure */
  537.       ULONG          ulX_Extent;                 /* Maximum X on Image Rect */
  538.       ULONG          ulY_Extent;                 /* Maximum Y on Image Rect */
  539.    } VSD_QUERYIMAGEEXTENTS_PARMS;
  540. #define VSD_QUERYIMAGEEXTENTS_Len   sizeof(VSD_QUERYIMAGEEXTENTS_PARMS)
  541.  
  542. /* VSD_QUERYOVERLAYEXTENTS maximun Overlay size that Capture Image can support */
  543.    typedef struct {
  544.       ULONG          ulLength;                   /* length of the structure */
  545.       ULONG          ulX_Extent;                 /* Maximum X on Overlay Rect */
  546.       ULONG          ulY_Extent;                 /* Maximum Y on Overlay Rect */
  547.    } VSD_QUERYOVERLAYEXTENTS_PARMS;
  548. #define VSD_QUERYOVERLAYEXTENTS_Len   sizeof(VSD_QUERYOVERLAYEXTENTS_PARMS)
  549.  
  550. /* VSD_QUERYVIDEOEXTENTS  for Overlay Video Devices Overlay Video Window */
  551.    typedef struct {
  552.       ULONG          ulLength;                   /* length of the structure */
  553.       ULONG          ulX_Extent;                 /* Maximum X on Video Rect */
  554.       ULONG          ulY_Extent;                 /* Maximum Y on Video Rect */
  555.    } VSD_QUERYVIDEOEXTENTS_PARMS;
  556. #define VSD_QUERYVIDEOEXTENTS_Len   sizeof(VSD_QUERYVIDEOEXTENTS_PARMS)
  557.  
  558.  
  559. /* VSD_DEVUNITS Request Parameter Block */
  560.    typedef struct {
  561.       ULONG          ulDevType;                  /* Unit Device Type (e.g.video, cd, amp_mix etc.) */
  562.       CHAR           szUNIT[10];                 /* Unit Name (abstract or device name COM1:, F:) */
  563.    } VSD_UNIT;
  564.  
  565.    typedef struct {
  566.       ULONG          ulLength;                   /* length of the structure */
  567.       ULONG          ulUnits;                    /* Number of Units that can be opened */
  568.       VSD_UNIT       VSD_Unit[1];                /* Unit Info */
  569.    } VSD_DEVUNITS_PARMS;
  570.  
  571. typedef VSD_DEVUNITS_PARMS  *PVSD_DEVUNITS_PARMS;
  572.  
  573. #define VSD_DEVUNITS_Len   sizeof(VSD_DEVUNITS_PARMS)
  574.  
  575. /* defines for DevType (device Types)                 */
  576. #define VSD_DEVTYPE_VIDEOTAPE           1
  577. #define VSD_DEVTYPE_VIDEODISK           2
  578. #define VSD_DEVTYPE_CD_AUDIO            3
  579. #define VSD_DEVTYPE_DAT                 4
  580. #define VSD_DEVTYPE_AUDIO_TAPE          5
  581. #define VSD_DEVTYPE_OTHER               6
  582. #define VSD_DEVTYPE_WAVEFORM_AUDIO      7
  583. #define VSD_DEVTYPE_SEQUENCER           8
  584. #define VSD_DEVTYPE_AUDIO_AMPMIX        9
  585. #define VSD_DEVTYPE_OVERLAY            10
  586. #define VSD_DEVTYPE_ANIMATION          11
  587. #define VSD_DEVTYPE_DIGITAL_VIDEO      12
  588. #define VSD_DEVTYPE_SPEAKER            13
  589. #define VSD_DEVTYPE_MONITOR            14
  590. #define VSD_DEVTYPE_CDXA               15
  591. #define VSD_DEVTYPE_TEXT_TO_SPEECH     16
  592. #define VSD_DEVTYPE_USER_BASE          17
  593. #define VSD_DEVTYPE_USER_MAX           18
  594.  
  595.  
  596. /* VSD_RESOURCE Request Parameter Block */
  597.    typedef struct {
  598.       ULONG          ulLength;                   /* length of the structure */
  599.       CHAR           szPDDName[MAX_DEVICE_NAME]; /* Name of PDD */
  600.       ULONG          ulDevType;                  /* Device Type */
  601.       ULONG          ulDataType;                 /* Supported Data Type */
  602.       ULONG          ulResUnits;                 /* # of Resource Units this would consume */
  603.       ULONG          ulClass;                    /* Resource Class */
  604.    } VSD_RESOURCE_PARMS;
  605.  
  606. typedef VSD_RESOURCE_PARMS *PVSD_RESOURCE_PARMS;
  607.  
  608. #define VSD_RESOURCE_Len   sizeof(VSD_RESOURCE_PARMS)
  609.  
  610. /* VSD_GETPRODINFO Request Parameter Block */
  611.    typedef struct {
  612.       CHAR           szProdInfo[30];             /* Product Info */
  613.       CHAR           szManufacture[30];          /* Manufacturer */
  614.       CHAR           szVersion[10];              /* Version */
  615.    } VSD_PRODINFO;
  616.  
  617.    typedef struct {
  618.       ULONG          ulLength;                   /* length of the structure */
  619.       VSD_PRODINFO   VSD;                        /* Product Info for VSD */
  620.       VSD_PRODINFO   PDD;                        /* Product Info for PDD */
  621.    } VSD_GETPRODINFO_PARMS;
  622.  
  623. typedef VSD_GETPRODINFO_PARMS  *PVSD_GETPRODINFO_PARMS;
  624.  
  625. #define VSD_GETPRODINFO_Len   sizeof(VSD_GETPRODINFO_PARMS)
  626.  
  627. /* VSD_CONNECTION_PARMS parameter block use by VSD_SETCONNECTION  and       */
  628. /* by VSD_QUERYCONNECTION                                                   */
  629. /* Connect/disconnect a video output connector (ulIndex2) to/from a video   */
  630. /* Input connector (ulIndex1).                                              */
  631. /* Query if a output connector is connectored to a specific Input Connector.*/
  632. /*  On a SET all fields are input.                                          */
  633. /*  On a QUERY all fields are input except fEnabled2 which returns if a     */
  634. /*  output connector is enabled with a specific input connector.            */
  635.    typedef struct {
  636.       ULONG     ulLength;                        /* length of the structure */
  637.       ULONG     ulConn_Type1;                    /* Type of Connector */
  638.       ULONG     ulIndex1;                        /* Connector Number */
  639.       ULONG     ulConn_Type2;                    /* Type of Connector */
  640.       ULONG     ulIndex2;                        /* Connector Number */
  641.       BOOL      fEnabled2;                       /* TRUE = Connector Enable */
  642.    } VSD_CONNECTION_PARMS;
  643.  
  644. typedef VSD_CONNECTION_PARMS *PVSD_CONNECTION_PARMS;
  645. #define VSD_CONNECTION_Len      sizeof(VSD_CONNECTION_PARMS)
  646.  
  647. /* VSD_CONNECTOR_PARMS parameter block use by VSD_QUERYCONNECTOR and    */
  648. /* VSD_SETCONNECTOR.                                                    */
  649.    typedef struct {
  650.       ULONG     ulLength;                        /* length of the structure */
  651.       ULONG     ulConn_Type;                     /* Type of Connector */
  652.       ULONG     ulIndex;                         /* Connector Number */
  653.       BOOL      fEnabled;                        /* TRUE = Connector Enable */
  654.    } VSD_CONNECTOR_PARMS;
  655.  
  656. typedef VSD_CONNECTOR_PARMS *PVSD_CONNECTOR_PARMS;
  657. #define VSD_CONNECTOR_Len      sizeof(VSD_CONNECTOR_PARMS)
  658.  
  659. /* part of the VSD_CONNECTORTYPES_PARMS parameter block  */
  660.    typedef struct {
  661.       ULONG     ulConn_Type;                     /* Type of Connector */
  662.       ULONG     ulConn_Number;                   /* Number of this Connector */
  663.    } CONNUM_TYPE;
  664.  
  665. /* VSD_CONNECTORTYPES_PARMS parameter block use by VSD_QUERYCONNECTORTYPES   */
  666.    typedef struct {
  667.       ULONG     ulLength;                        /* length of the structure */
  668.       ULONG     ulNumConnectors;                 /* Number of Connector */
  669.       CONNUM_TYPE Conn_Info[1];                  /* Array of Connector Info */
  670.    } VSD_CONNECTORTYPES_PARMS;
  671. #define VSD_CONNECTORTYPES_Len      sizeof(VSD_CONNECTORTYPES_PARMS)
  672.  
  673.  
  674. typedef VSD_CONNECTORTYPES_PARMS   *LPVSD_CONNECTORTYPES_PARMS;
  675. typedef VSD_CONNECTORTYPES_PARMS   *PVSD_CONNECTORTYPES_PARMS;
  676.  
  677. /* VSD_USER request parameter block */
  678.    typedef struct {
  679.       ULONG     ulLength;                        /* length of the structure */
  680.       ULONG     ulLenUserInfo;                   /* Length of User's Info */
  681.       PVOID     pUserInfo;                       /* Pointer to User's Info */
  682.    } VSD_USER_PARMS;
  683. #define VSD_USER_Len      sizeof(VSD_USER_PARMS)
  684.  
  685.  
  686. /* VSD_USER ulFlags for VSDEntry (sub-functions/commands)                                  */
  687. /* The defintion of each of these fields are up to the VSD */
  688. /* to define each VSD may have a different uses for each   */
  689. #define VSD_USER1                               1
  690. #define VSD_USER2                               2
  691. #define VSD_USER3                               3
  692. #define VSD_USER4                               4
  693. #define VSD_USER5                               5
  694. #define VSD_USER6                               6
  695. #define VSD_USER7                               7
  696. #define VSD_USER8                               8
  697. #define VSD_USER9                               9
  698. #define VSD_USER10                             10
  699.  
  700.  
  701. /* VSD_QUERY ulFlags for VSDEntry (sub-functions/commands)  */
  702.  
  703. #define VSD_QUERYAPERTURESIZE                   1
  704. #define VSD_QUERYAUDIOATTRIBUTES                2
  705. #define VSD_QUERYAUDIOCAPABILITIES              3
  706. #define VSD_QUERYBANK                           4
  707. #define VSD_QUERYBANKPOINTER                    5
  708. #define VSD_QUERYBANKS                          6
  709. #define VSD_QUERYCDCAPS                         7
  710. #define VSD_QUERYCOMMSETTINGS                   8
  711. #define VSD_QUERYCOMPATIBLECONNECTORS           9
  712. #define VSD_QUERYCONNECTOR                     10
  713. #define VSD_QUERYCONNECTORTYPES                11
  714. #define VSD_QUERYCOUNTER                       12
  715. #define VSD_QUERYCUE                           13
  716. #define VSD_QUERYDATATYPE                      14
  717. #define VSD_QUERYDIRECTION                     15
  718. #define VSD_QUERYDISPLAY                       16
  719. #define VSD_QUERYDOOR                          17
  720. #define VSD_QUERYEVENTLIST                     18
  721. #define VSD_QUERYFREEZE                        19
  722. #define VSD_QUERYIMAGEATTRIBUTES               20
  723. #define VSD_QUERYINPUTLEVEL                    21
  724. #define VSD_QUERYINPUTLEVELS                   22
  725. #define VSD_QUERYKEYLOCK                       23
  726. #define VSD_QUERYLABEL                         24
  727. #define VSD_QUERYLENGTH                        25
  728. #define VSD_QUERYMEDIATYPE                     26
  729. #define VSD_QUERYMONITOR                       27
  730. #define VSD_QUERYPOSITION                      28
  731. #define VSD_QUERYPREROLLTYPE                   29
  732. #define VSD_QUERYPROCESSINTERNAL               30
  733. #define VSD_QUERYRATE                          31
  734. #define VSD_QUERYRATELEVELS                    32
  735. #define VSD_QUERYSTATUSLEVEL                   33
  736. #define VSD_QUERYSUPPORTEDEVENTS               34
  737. #define VSD_QUERYTIME                          35
  738. #define VSD_QUERYTOC                           36
  739. #define VSD_QUERYTRACKS                        37
  740. #define VSD_QUERYTTSATTRIBUTES                 38
  741. #define VSD_QUERYUPC                           39
  742. #define VSD_QUERYVIDEO                         40
  743. #define VSD_QUERYVIDEOATTRIBUTES               41
  744. #define VSD_QUERYVIEWPORT                      42
  745. #define VSD_QUERYVIEWPORTPOSITION              43
  746. #define VSD_QUERYVOLUME                        44
  747. #define VSD_QUERYVIDEORECT                     45
  748. #define VSD_QUERYFPS                           46
  749. #define VSD_QUERYIMAGEFORMAT                   47
  750. #define VSD_QUERYIMAGEEXTENTS                  48
  751. #define VSD_QUERYVIDEOEXTENTS                  49
  752. #define VSD_QUERYOVERLAYEXTENTS                50
  753. #define VSD_QUERYTRANSPARENTCOLOR              51
  754. #define VSD_QUERYCOLORKEYING                   52
  755. #define VSD_QUERYREADY                         53
  756. #define VSD_QUERYMIXSTATE                      54
  757. #define VSD_QUERYMIXCONNECTIONS                55
  758. #define VSD_QUERYMIXCONTROL                    56
  759. #define VSD_QUERYMIXLINE                       57
  760.  
  761. #define VSD_QUERYTUNERCHANNEL                  58
  762. #define VSD_QUERYCONNECTORSIGNAL               59
  763. #define VSD_QUERYLOAD                          60
  764. #define VSD_QUERYCONNECTION                    61
  765.  
  766. /* VSD_TUNERCHANNEL Request parameter block  for Set and Query */
  767.    typedef struct {
  768.       ULONG     ulLength;                        /* length of the structure */
  769.       ULONG     ulOption;                        /* Options */
  770.       USHORT    usResv01;                        /* Reserved */
  771.       USHORT    usResv02;                        /* Reseverd */
  772.       LONG      lFineTune;                       /* FineTune */
  773.       ULONG     ulFrequency;                     /* Frequency */
  774.    } VSD_TUNERCHANNEL_PARMS;
  775.  
  776. #define VSD_TUNERCHANNEL_Len   sizeof(VSD_TUNERCHANNEL_PARMS)
  777.  
  778.  
  779. /* VSD_QUERYCONNECTORSIGNAL_PARMS parameter block   */
  780.    typedef struct {
  781.       ULONG     ulLength;                        /* length of the structure */
  782.       ULONG     ulConn_Type;                     /* Type of Connector */
  783.       ULONG     ulIndex;                         /* Connector Number */
  784.       BOOL      fEnabled;                        /* TRUE = Connector Enable */
  785.       ULONG     ulEnabled;                       /*  Active Signal present */
  786.    } VSD_QUERYCONNECTORSIGNAL_PARMS;
  787. #define VSD_QUERYCONNECTORSIGNAL_Len      sizeof(VSD_QUERYCONNECTORSIGNAL_PARMS)
  788.  
  789. /* VSD_QUERYCONNECTORSIGNAL_PARMS  ulEnabled states */
  790. #define SIGNAL_NOT_PRESENT   0
  791. #define SIGNAL_PRESENT       1
  792. #define SIGNAL_INDETERMINATE 2
  793.  
  794.  
  795. /*      Tuner Types     */
  796.  
  797. #define M_TUNER         0
  798. #define BG_TUNER        1
  799. #define L_TUNER         2
  800.  
  801.  
  802.  
  803. /*  ulOption - Tuner Frequency Set/Query of TunerChannel/Frequency    */
  804. /*             and QueryTunerChannel/frequency                        */
  805. /*  Note: these field is bit sensitive...or bit in                    */
  806. #define TUC_AFC_On             4
  807. #define TUC_AFC_Off            0
  808. #define TUC_Frequency          8
  809. #define TUC_Polarization_Vert 16
  810. #define TUC_Polarization_Hori 32
  811.  
  812.  
  813. /*      SetTunerChannel and QueryTunerChannel ulOptions Values    */
  814.  
  815. #define TUNER_NOMUTE            0x01
  816. #define TUNER_NOWAITTUNER       0x02
  817. #define TUNER_NOWAITSIGNAL      0x04
  818. #define TUNER_UP                0x80
  819. #define TUNER_DOWN              0x40
  820.                                                 /* KLL Tuner Support - End   */
  821.                                               /* KLL Playback Support- Start */
  822. /* VSD_PLAY/VSD_RECORD request parameter block */
  823.    typedef struct {
  824.       ULONG     ulLength;                        /* length of the structure */
  825.       ULONG     ulFlags;                         /* Flags */
  826.       ULONG     ulSizeData;                      /* Size of Data below */
  827.       PVOID     pData;                           /* Data for the Device */
  828.       ULONG     ulSCR;
  829.       ULONG     ulPTS;
  830.       ULONG     ulAudioTime;
  831.    } VSD_STREAM_PARMS;
  832. #define VSD_STREAM_Len      sizeof(VSD_STREAM_PARMS)
  833.  
  834.  
  835. /* VSD_PLAY and VSD_RECORD ulFlags for VSDEntry (sub-functions/commands)     */
  836. #define VSD_PLAYSTART              0x01
  837. #define VSD_PLAYDATA               0x02
  838. #define VSD_PLAYSTOP               0x04
  839. #define VSD_PLAYFLUSH              0x08
  840. #define VSD_PLAYPAUSE              0x03
  841. #define VSD_PLAYRESUME             0x05
  842. #define VSD_RECORDSTART            0x10
  843. #define VSD_RECORDDATA             0x20
  844. #define VSD_RECORDSTOP             0x40
  845.  
  846.                                               /* KLL Playback Support- End   */
  847.  
  848.  
  849. typedef ULONG        HCONN;
  850.  
  851. #define   VSD_VOLUME             0x00000001
  852. #define   VSD_MASTERVOLUME       0x00000002
  853. #define   VSD_MUTE               0x00000004
  854.  
  855.  
  856.    typedef struct {
  857.       ULONG          ulLength;        /* length of the structure */
  858.       ULONG          ulFlags;         /* Which volume item to operate on */
  859.       ULONG          ulRequest;       /* mastervol or vol */
  860.       ULONG          ulVectoredVol;   /* Length to do effect */
  861.       ULONG          ulMasterAudio;   /* masteraudio volume */
  862.       ULONG          ulVolume;        /* Volume for connector */
  863.       ULONG          hConn;           /* handle to connector to operate on */
  864.       BOOL           fMute;           /* Is the connector muted? */
  865.    } VSD_VOLUME_PARMS;
  866.  
  867.    typedef VSD_VOLUME_PARMS  *PVSD_VOLUME_PARMS;
  868.  
  869.   typedef struct {
  870.      ULONG ulLength;        /* length of the structure */
  871.      ULONG ulFlags;         /* mask of attributes supported/specified */
  872.      ULONG ulValue;         /* value of the attribute specified in ulFlags */
  873.      ULONG ulDelay;         /* delay before effect takes place. */
  874.   } VSD_AUDIOATTRIBUTES_PARMS;
  875.  
  876. typedef  VSD_AUDIOATTRIBUTES_PARMS *PVSD_AUDIOATTRIBUTES_PARMS;
  877.  
  878. /* Audio attribute mask defines */
  879.  
  880.   #define VSD_BALANCE         0x00020000
  881.   #define VSD_BASS            0x00040000
  882.   #define VSD_GAIN            0x00060000
  883.   #define VSD_TREBLE          0x00000004
  884.   #define VSD_PITCH           0x00000008
  885.  
  886. /* VSD CONNECTOR defines */
  887.   #define VSD_ENABLE          0x00000001
  888.   #define VSD_DISABLE         0x00000000
  889.  
  890.  
  891. /* Defines for audio datatypes */
  892.  
  893. #define  VSD_MODE             MCI_WAVE_SET_FORMATTAG
  894. #define  VSD_CHANNELS         MCI_WAVE_SET_CHANNELS
  895. #define  VSD_SAMPLESPERSEC    MCI_WAVE_SET_SAMPLESPERSEC
  896. #define  VSD_AVGBYTESPERSEC   MCI_WAVE_SET_AVGBYTESPERSEC
  897. #define  VSD_BITSPERSAMPLE    MCI_WAVE_SET_BITSPERSAMPLE
  898. #define  VSD_OPERATION        0x20000000
  899.  
  900. /* Defines for vsd ulOperation field */
  901.  
  902. #define VSD_CONSUME           1
  903. #define VSD_PRODUCE           2
  904.  
  905.  
  906. typedef struct {
  907.   ULONG ulLength;
  908.   ULONG ulFlags;
  909.   ULONG ulSamplingRate;      /* floating quantity for certain cards */
  910.   ULONG ulBitsPerSample;     /* float for cards like SB which support 2.6 bitspersamp */
  911.   ULONG ulChannels;          /* mask of channels supported in this sampling rate */
  912.   ULONG ulBlockAlignment;
  913.   ULONG ulAverageBytesPerSec;
  914.   ULONG ulDataType;
  915.   ULONG ulDataSubType;
  916.   ULONG ulReserved1;
  917.   ULONG ulOperation;         /* VSD_PRODUCE or VSD_CONSUME */
  918.   ULONG ulDeviceID;          /* Device ID of the amp-mixer */
  919.   PVOID pDevInfo;
  920. } VSD_AUDIODATATYPE_PARMS;
  921.  
  922. typedef VSD_AUDIODATATYPE_PARMS *PVSD_AUDIODATATYPE_PARMS;
  923.  
  924. typedef struct {
  925.   ULONG ulLength;            /* length of the structure */
  926.   ULONG ulFlags;             /* ???? */
  927.   ULONG ulSamplingRate;      /* Sampling rate */
  928.   ULONG ulBitsPerSample;     /* bitspersample */
  929.   ULONG ulChannels;          /* channels for this mode */
  930.   ULONG ulBlockAlignment;    /* block alignment for data */
  931.   ULONG ulAverageBytesPerSec;/* Average bytes/second of data */
  932.   ULONG ulDataType;          /* RIFF datatype -- see os2medef.h */
  933.   ULONG ulDataSubType;       /* RIFF subdatatype -- see os2medef.h */
  934.   ULONG hidSource;           /* source stream handler for VSD */
  935.   ULONG hidTarget;           /* target stream handler for VSD */
  936.   ULONG ulOperation;         /* VSD_PRODUCE or VSD_CONSUME */
  937.   ULONG ulReserved1;         /* reserved for future use */
  938.   ULONG ulDeviceID;          /* Device ID of the amp-mixer */
  939.  
  940.   PVOID pHeader;             /* Header which describes data (option)--see MMIOOS2.H */
  941.   PCHAR pParmString;         /* Pointer to device specific parm string in MMPM2.INI file */
  942.   PVOID pDevInfo;            /* Device specific information */
  943.   ULONG ulReserved2;         /* reserved for future use */
  944.   PCHAR pResourceDLL;        /* Resource DLL from ini file */
  945.   ULONG ulResourceId;        /* Resource ID to use in Resource DLL. */
  946.   PVOID pVhnd;               /* Video VSD info needed by MPEG VSD   */
  947.  
  948.  
  949. } VSD_AUDIOOPEN_PARMS;
  950.  
  951. typedef VSD_AUDIOOPEN_PARMS *PVSD_AUDIOOPEN_PARMS;
  952.  
  953. #define VSD_AUDIO_OPEN      0x10010001
  954.  
  955. typedef struct {
  956.      ULONG ulLength;         /* length of the structure */
  957.      PVOID   pBuffer;        /* Pointer to escape buffer */
  958.      ULONG ulBufferLength;   /* Buffer length */
  959.   } VSD_ESCAPE_PARMS;
  960.  
  961.  typedef struct {
  962.       ULONG          ulLength;                   /* length of the structure */
  963.       BOOL           fEnabled;                   /* TRUE = Enabled */
  964.    } VSD_BOOLITEM_PARMS;
  965.  
  966.  
  967. #endif                       /* _VSDCMDS_H_ */
  968.  
  969. #ifdef __cplusplus
  970. }
  971. #endif
  972.  
  973.