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