home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sibdemo3.zip / SOURCE.DAT / SOURCE / RTL / MMIO.PAS < prev    next >
Pascal/Delphi Source File  |  1996-09-19  |  209KB  |  4,347 lines

  1. UNIT MMIO;
  2.  
  3. {***************************************************************************\
  4. *
  5. * Module Name: MMIO.H
  6. *
  7. * OS/2 2.0 Multimedia Extensions Input/Output Manager Definitions file
  8. *  NOTE:  All structures are UNPACKED!!
  9. *
  10. * Copyright (c) International Business Machines Corporation 1990,1991,1992
  11. *                         All Rights Reserved
  12. *
  13. *
  14. \****************************************************************************/}
  15.  
  16. INTERFACE
  17.  
  18. USES Os2Def,BseDos,PmBitmap,PmWin;
  19.  
  20. TYPE
  21.      HMMIO=LONGWORD;
  22.      HMMCF=LONGWORD;
  23.      FOURCC=LONGWORD;
  24.      PFOURCC=^FOURCC;
  25.  
  26. TYPE
  27.     PMMCKINFO=^MMCKINFO;
  28.     MMCKINFO=RECORD
  29.                    ckid:FOURCC;
  30.                    ckSize:LONGWORD;
  31.                    fccType:FOURCC;
  32.                    dwDataOffset:LONGWORD;
  33.                    dwFlags:LONGWORD;
  34.     END;
  35.  
  36. TYPE MMIOPROC=FUNCTION(VAR pmmioInfo;wMsg:LONGWORD;lParam1,lParam2:LONG):LONG;APIENTRY;
  37.      PMMIOPROC=^MMIOPROC;
  38.  
  39. TYPE
  40.     PMMIOINFO=^MMIOINFO;
  41.     MMIOINFO=RECORD
  42.                    dwFlags:LONGWORD;
  43.                    fccIOProc:FOURCC;
  44.                    pIOProc:PMMIOPROC;
  45.                    dwErrorRet:LONGWORD;
  46.                    cchBuffer:LONG;
  47.                    pchBuffer:PChar;
  48.                    pchNext:PChar;
  49.                    pchEndRead:PChar;
  50.                    pchEndWrite:PChar;
  51.                    lBufOffset:LONG;
  52.                    lDiskOffset:LONG;
  53.                    adwInfo:ARRAY[0..3] OF LONGWORD;
  54.                    lLogicalFilePos:LONG;
  55.                    ulTranslate:LONGWORD;
  56.                    fccChildIOProc:FOURCC;
  57.                    pExtraInfoStruct:POINTER;
  58.                    hmmio:HMMIO;
  59.     END;
  60.  
  61.     PMMCFINFO=^MMCFINFO;
  62.     MMCFINFO=RECORD
  63.                    dwHeaderSize:LONGWORD;
  64.                    dwEntriesTotal:LONGWORD;
  65.                    dwEntriesDeleted:LONGWORD;
  66.                    dwEntriesUnused:LONGWORD;
  67.                    dwBytesTotal:LONGWORD;
  68.                    dwBytesDeleted:LONGWORD;
  69.                    dwHeaderFlags:LONGWORD;
  70.                    wEntrySize:WORD;
  71.                    wNameSize:WORD;
  72.                    wExHdrFields:WORD;
  73.                    wExEntFields:WORD;
  74.     END;
  75.  
  76.     PMMCTOCENTRY=^MMCTOCENTRY;
  77.     MMCTOCENTRY=RECORD
  78.                       dwOffset:LONGWORD;
  79.                       dwSize:LONGWORD;
  80.                       dwMedType:LONGWORD;
  81.                       dwMedUsage:LONGWORD;
  82.                       dwCompressTech:LONGWORD;
  83.                       dwUncompressBytes:LONGWORD;
  84.     END;
  85.  
  86. CONST
  87.       MMIO_MEDIATYPE_IMAGE       =$00000001;  /* Image media */
  88.       MMIO_MEDIATYPE_AUDIO       =$00000002;  /* Audio media */
  89.       MMIO_MEDIATYPE_MIDI        =$00000004;  /* MIDI media  */
  90.       MMIO_MEDIATYPE_COMPOUND    =$00000008;  /* Cmpd media  */
  91.       MMIO_MEDIATYPE_OTHER       =$00000010;  /* Other media */
  92.       MMIO_MEDIATYPE_UNKNOWN     =$00000020;  /* Unknown media */
  93.       MMIO_MEDIATYPE_DIGITALVIDEO=$00000040;  /* Digital Video */
  94.       MMIO_MEDIATYPE_ANIMATION   =$00000080;  /* Future: Not Supported */
  95.       MMIO_MEDIATYPE_MOVIE       =$00000100;  /* Movie File */
  96.  
  97.       MMIO_CANREADTRANSLATED            = $00000001; /*IOProc Cpbilty Flgs*/
  98.       MMIO_CANWRITETRANSLATED           = $00000002; /* "       "       " */
  99.       MMIO_CANREADWRITETRANSLATED       = $00000004; /* "       "       " */
  100.       MMIO_CANREADUNTRANSLATED          = $00000008; /* "       "       " */
  101.       MMIO_CANWRITEUNTRANSLATED         = $00000010; /* "       "       " */
  102.       MMIO_CANREADWRITEUNTRANSLATED     = $00000020; /* "       "       " */
  103.       MMIO_CANSEEKTRANSLATED            = $00000040; /* "       "       " */
  104.       MMIO_CANSEEKUNTRANSLATED          = $00000080; /* "       "       " */
  105.       MMIO_CANINSERTUNTRANSLATED        = $00000100; /* "       "       " */
  106.       MMIO_CANSAVEUNTRANSLATED          = $00000200; /* "       "       " */
  107.       MMIO_CANINSERTTRANSLATED          = $00000400; /* "       "       " */
  108.       MMIO_CANSAVETRANSLATED            = $00000800; /* "       "       " */
  109.       MMIO_CANMULTITRACKREADTRANSLATED  = $00001000; /* "       "       " */
  110.       MMIO_CANMULTITRACKREADUNTRANSLATED= $00002000; /* "       "       " */
  111.       MMIO_CANMULTITRACKWRITETRANSLATED = $00004000; /* "       "       " */
  112.       MMIO_CANMULTITRACKWRITEUNTRANSLATED=$00008000; /* "       "       " */
  113.       MMIO_CANTRACKSEEKTRANSLATED       = $00010000; /* "       "       " */
  114.       MMIO_CANTRACKSEEKUNTRANSLATED     = $00020000; /* "       "       " */
  115.       MMIO_CANTRACKREADTRANSLATED       = $00040000; /* "       "       " */
  116.       MMIO_CANTRACKREADUNTRANSLATED     = $00080000; /* "       "       " */
  117.       MMIO_CANTRACKWRITETRANSLATED      = $00100000; /* "       "       " */
  118.       MMIO_CANTRACKWRITEUNTRANSLATED    = $00200000; /* "       "       " */
  119.  
  120.       MMIO_IOPROC_STORAGESYSTEM   = $00000001;  /* IOProc Types */
  121.       MMIO_IOPROC_FILEFORMAT      = $00000002;
  122.       MMIO_IOPROC_DATAFORMAT      = $00000004;
  123.  
  124. TYPE
  125.    PMMFORMATINFO=^MMFORMATINFO;
  126.    MMFORMATINFO=RECORD
  127.                       dwStructLen:LONGWORD;
  128.                       fccIOProc:FOURCC;
  129.                       dwIOProcType:LONGWORD;
  130.                       dwMediaType:LONGWORD;
  131.                       dwFlags:LONGWORD;
  132.                       achDefaultFormatExt:CSTRING[sizeof(FOURCC){+1}];
  133.                                        /* Default extension 4 + null */
  134.                       dwCodePage:LONGWORD;
  135.                       dwLanguage:LONGWORD;
  136.                       lNameLength:LONG;
  137.    END;
  138.  
  139. CONST
  140.       MMIO_IMAGE_UNKNOWN        = $00000000;  /* Unknown image content */
  141.       MMIO_IMAGE_DRAWING        = $00000001;  /* Simple drawing        */
  142.       MMIO_IMAGE_GRAPH          = $00000002;  /* Graphs & Cartoons     */
  143.       MMIO_IMAGE_PHOTO          = $00000004;  /* Varying Color & Shades */
  144.  
  145. CONST
  146.       MAX_PALETTE  =256;
  147.  
  148. TYPE
  149.     XDIBHDR_PREFIX=RECORD
  150.                          ulMemSize:LONGWORD;
  151.                          ulPelFormat:LONGWORD;
  152.                          usTransType:WORD;
  153.                          ulTransVal:LONGWORD;
  154.     END;
  155.  
  156.     PMMXDIBHEADER=^MMXDIBHEADER;
  157.     MMXDIBHEADER=RECORD
  158.                        XDIBHeaderPrefix:XDIBHDR_PREFIX;
  159.                        BMPInfoHeader2:BITMAPINFOHEADER2;
  160.     END;
  161.  
  162.  
  163.     PMMIMAGEHEADER=^MMIMAGEHEADER;
  164.     MMIMAGEHEADER=RECORD
  165.                         dwHeaderLength:LONGWORD;
  166.                         dwContentType:LONGWORD;
  167.                         dwMediaType:LONGWORD;
  168.                         mmXDIBHeader:MMXDIBHEADER;
  169.                         bmiColors:ARRAY[0..MAX_PALETTE-1] OF RGB2;
  170.     END;
  171.  
  172. (*
  173. #ifndef WORD
  174. typedef USHORT WORD;
  175. #endif
  176.  
  177. #ifndef DWORD
  178. typedef ULONG  DWORD;
  179. #endif
  180.  
  181. typedef WORD  VERSION;
  182. typedef FAR * LPSTR;
  183. typedef FAR * LPTR;
  184. typedef FAR * LPRECT;
  185. typedef HWND HANDLE;
  186. typedef WORD *  PW;
  187. typedef WORD *  PAW;
  188. typedef WORD * PWORD;
  189. typedef PFN  FAR *  PPFN;
  190. typedef DWORD (APIENTRY FNMCI) (LPTR, WORD, DWORD, DWORD, WORD);
  191. typedef FNMCI *PFNMCI;
  192.  
  193. /* XLATON */
  194.  
  195. #ifdef XXXXX
  196. typedef PVOID PFNMCI;
  197. typedef PVOID LPTR;
  198. #endif
  199.  
  200. typedef char   SZ;                    /* ASCIIZ char string type*/
  201. *)
  202. TYPE
  203.     PMMTIME=^MMTIME;
  204.     MMTIME=LONGWORD;
  205.  
  206. (*
  207. typedef ULONG HMMIO;                  /* Handle to an MMIO object*/
  208. typedef HMMIO FAR *PHMMIO;            /* Handle to an MMIO object*/
  209.  
  210.  
  211. /**********************************************
  212.  *
  213.  * SPCBKEY - Stream Protocol Key
  214.  *
  215.  **********************************************/
  216. typedef struct _SPCBKEY { /* spcbkey SPCB key (Stream data type) */
  217.    ULONG    ulDataType;
  218.    ULONG    ulDataSubType;
  219.    ULONG    ulIntKey;                 /* generated internal key            */
  220.    } SPCBKEY;
  221. typedef SPCBKEY FAR *PSPCBKEY;
  222.        _SPCBKEY_DEFINED   1
  223. *)
  224.  
  225. TYPE
  226.     PMMTRACKINFO=^MMTRACKINFO;
  227.     MMTRACKINFO=RECORD
  228.                       ulTrackID:LONGWORD;
  229.                       ulMediaType:LONGWORD;
  230.                       ulCountry:LONGWORD;
  231.                       ulCodePage:LONGWORD;
  232.                       ulReserved1:LONGWORD;
  233.                       ulReserved2:LONGWORD;
  234.     END;
  235.  
  236. (*
  237. /************************
  238.  * Clipboard formats
  239.  ************************/
  240.               CF_RMID                 10
  241.               CF_RIFF                 11
  242.               CF_WAVE                 12
  243.               CF_AVI                  13
  244.  
  245. /************************
  246.  * Resource formats
  247.  ************************/
  248.               RT_RMID                 100
  249.               RT_RIFF                 101
  250.               RT_WAVE                 102
  251.               RT_AVI                  103
  252.               RT_AVS                  104
  253.  
  254. /************************
  255.  * Sampling Rate
  256.  ************************/
  257.               HZ_8000                 8000            /* 8.0 kHz*/
  258.               HZ_11025                11025           /* 11.025 kHz*/
  259.               HZ_14700                14700           /* 14.700 kHz (SPV/2)*/
  260.               HZ_18900                18900           /* 18.900 kHz (CD/XA LVL C)*/
  261.               HZ_22050                22050           /* 22.050 kHz*/
  262.               HZ_37800                37800           /* 37.800 kHz (CD/XA LVL B)*/
  263.               HZ_44100                44100           /* 44.100 kHz*/
  264.  
  265. /************************
  266.  * Bits per Sample
  267.  ************************/
  268.               BPS_4                   4               /* 4 bits/sample (ADPCM)*/
  269.               BPS_8                   8               /* 8 bits/sample (PCM)*/
  270.               BPS_16                  16              /* 16 bits/sample(PCM)*/
  271.  
  272. /************************
  273.  * Channels
  274.  ************************/
  275.               CH_1                    1               /* Mono*/
  276.               CH_2                    2               /* Stereo*/
  277.               CH_4                    4               /* Quad*/
  278.  
  279. /*************************************************************************
  280.  * Multimedia Datatypes (spcbkey values)
  281.  *************************************************************************/
  282.  
  283.  
  284. /****************
  285.  * NULL datatype
  286.  ****************/
  287.        DATATYPE_NULL           $0000L     /* NULL stream data type (NULL)*/
  288.          SUBTYPE_NONE            $0000L   /* No subtype for this data type*/
  289.  
  290.  
  291. /*********************
  292.  * WAVEFORM datatypes
  293.  *********************/
  294.        DATATYPE_WAVEFORM       $0001L     /* WAVEFORM audio (PCM)*/
  295.  
  296. /* Subtypes for DATATYPE_WAVEFORM:*/
  297.          WAVE_FORMAT_1M08        $0001L   /* 11.025kHz, Mono  , 8-bit*/
  298.          WAVE_FORMAT_1S08        $0002L   /* 11.025kHz, Stereo, 8-bit*/
  299.          WAVE_FORMAT_1M16        $0003L   /* 11.025kHz, Mono  , 16-bit*/
  300.          WAVE_FORMAT_1S16        $0004L   /* 11.025kHz, Stereo, 16-bit*/
  301.          WAVE_FORMAT_2M08        $0005L   /* 22.05kHz , Mono  , 8-bit*/
  302.          WAVE_FORMAT_2S08        $0006L   /* 22.05kHz , Stereo, 8-bit*/
  303.          WAVE_FORMAT_2M16        $0007L   /* 22.05kHz , Mono  , 16-bit*/
  304.          WAVE_FORMAT_2S16        $0008L   /* 22.05kHz , Stereo, 16-bit*/
  305.          WAVE_FORMAT_4M08        $0009L   /* 44.1kHz  , Mono  , 8-bit*/
  306.          WAVE_FORMAT_4S08        $000aL   /* 44.1kHz  , Stereo, 8-bit*/
  307.          WAVE_FORMAT_4M16        $000bL   /* 44.1kHz  , Mono  , 16-bit*/
  308.          WAVE_FORMAT_4S16        $000cL   /* 44.1kHz  , Stereo, 16-bit*/
  309.          WAVE_FORMAT_8M08        $000dL   /*  8.0kHz  , Mono  , 8-bit*/
  310.          WAVE_FORMAT_8S08        $000eL   /*  8.0kHz  , Stereo, 8-bit*/
  311.          WAVE_FORMAT_8M16        $000fL   /*  8.0kHz  , Mono  , 16-bit*/
  312.          WAVE_FORMAT_8S16        $0010L   /*  8.0kHz  , Stereo, 16-bit*/
  313.  
  314.  
  315. /*********************
  316.  * DIGVIDEO datatypes
  317.  *********************/
  318.        DATATYPE_DIGVIDEO       $0002L     /* Digital Video */
  319.  
  320. /* Subtypes for DATATYPE_DIGVIDEO:*/
  321.          DIGVIDEO_PHOTOM         $544F4850L   /* Photmotion video, FOURCC value for phio */
  322.          DIGVIDEO_ULTIM          $49544c55L   /* Ultimotion video, FOURCC value for ulio */
  323.          DIGVIDEO_AVI            $20495641L   /* AVI video, FOURCC value for avio */
  324.          DIGVIDEO_MONITOR        $206E6F6DL   /* MONITOR video, FOURCC value for monitoring */
  325.          DIGVIDEO_FLC            $63696C66L   /* FLIC video, FOURCC value for flic */
  326.          DIGVIDEO_MPEG           $4745504DL   /* MPEG video, FOURCC value for MPEG */
  327.  
  328.  
  329. /******************
  330.  * MuLaw datatypes
  331.  ******************/
  332.       DATATYPE_MULAW           $0101L     /* MuLaw*/
  333.       DATATYPE_RIFF_MULAW      $0007L    /* MuLaw*/
  334.  
  335. /* Subtypes for DATATYPE_MULAW:*/
  336.          MULAW_8B8KS             $0001L   /* 8bit 8kHz stereo*/
  337.          MULAW_8B11KS            $0002L   /* 8bit 11kHz stereo*/
  338.          MULAW_8B22KS            $0003L   /* 8bit 22kHz stereo*/
  339.          MULAW_8B44KS            $0004L   /* 8bit 44kHz stereo*/
  340.          MULAW_8B8KM             $0005L   /* 8bit 8kHz mono*/
  341.          MULAW_8B11KM            $0006L   /* 8bit 11kHz mono*/
  342.          MULAW_8B22KM            $0007L   /* 8bit 22kHz mono*/
  343.          MULAW_8B44KM            $0008L   /* 8bit 44kHz mono*/
  344.  
  345. /*****************
  346.  * ALaw datatypes
  347.  *****************/
  348.       DATATYPE_ALAW            $0102L     /* ALaw*/
  349.       DATATYPE_RIFF_ALAW       $0006L     /* ALaw*/
  350.  
  351. /* Subtypes for DATATYPE_ALAW:*/
  352.          ALAW_8B8KS              $0001L   /* 8bit 8kHz stereo*/
  353.          ALAW_8B11KS             $0002L   /* 8bit 11kHz stereo*/
  354.          ALAW_8B22KS             $0003L   /* 8bit 22kHz stereo*/
  355.          ALAW_8B44KS             $0004L   /* 8bit 44kHz stereo*/
  356.          ALAW_8B8KM              $0005L   /* 8bit 8kHz mono*/
  357.          ALAW_8B11KM             $0006L   /* 8bit 11kHz mono*/
  358.          ALAW_8B22KM             $0007L   /* 8bit 22kHz mono*/
  359.          ALAW_8B44KM             $0008L   /* 8bit 44kHz mono*/
  360.  
  361.  
  362. /*******************************
  363.  * AVC ADPCM WAVEFORM datatypes
  364.  *******************************/
  365.        DATATYPE_ADPCM_AVC      $0103L     /* ADPCM audio*/
  366.  
  367. /* Subtypes for DATATYPE_ADPCM_AVC:*/
  368.          ADPCM_AVC_VOICE         $0001L
  369.          ADPCM_AVC_MUSIC         $0002L
  370.          ADPCM_AVC_STEREO        $0003L
  371.          ADPCM_AVC_HQ            $0004L
  372.  
  373. /******************
  374.  * CT_ADPCM datatypes
  375.  ******************/
  376.       DATATYPE_CT_ADPCM          $0200L     /* Creative technologies */
  377.  
  378. /* Subtypes for DATATYPE_CT_ADPCM:*/
  379.          CT_ADPCM_16B8KS          $0001L   /* 16bit 8kHz stereo*/
  380.          CT_ADPCM_16B11KS         $0002L   /* 16bit 11kHz stereo*/
  381.          CT_ADPCM_16B22KS         $0003L   /* 16bit 22kHz stereo*/
  382.          CT_ADPCM_16B44KS         $0004L   /* 16bit 44kHz stereo*/
  383.          CT_ADPCM_16B8KM          $0005L   /* 16bit 8kHz mono*/
  384.          CT_ADPCM_16B11KM         $0006L   /* 16bit 11kHz mono*/
  385.          CT_ADPCM_16B22KM         $0007L   /* 16bit 22kHz mono*/
  386.          CT_ADPCM_16B44KM         $0008L   /* 16bit 44kHz mono*/
  387.  
  388. /****************
  389.  * MIDI datatype
  390.  ****************/
  391.        DATATYPE_MIDI           $0201L     /* MIDI*/
  392. /*         SUBTYPE_NONE            $0000L      No subtype for this data type*/
  393.  
  394.  
  395. /********************
  396.  * GENERIC datatypes
  397.  ********************/
  398.        DATATYPE_GENERIC        $0202L     /* Generic for files / memory. This*/
  399.                                              /* datatype will match any other*/
  400.                                              /* datatype at stream creation time.*/
  401.  
  402. /**************************
  403.  * Speech Viewer datatypes
  404.  **************************/
  405.        DATATYPE_SPV2           $0203L     /* Speech Viewer*/
  406.  
  407. /* Subtypes for DATATYPE_SPV2:*/
  408.          SPV2_BPCM               $0001L
  409.          SPV2_PCM                $0002L
  410.          SPV2_NONE               $0003L
  411.  
  412.  
  413. /******************
  414.  * CD-XA datatypes
  415.  ******************/
  416.        DATATYPE_CDXA_VIDEO     $0204L     /* CD-XA Video datatype*/
  417.        DATATYPE_CDXA_DATA      $0205L     /* CD-XA sub-band data datatype*/
  418.        DATATYPE_CDXA_AUDIO     $0206L     /* CD-XA ADPCM Audio datatype*/
  419.        DATATYPE_CDXA_AUDIO_HD  $0207L     /* CD-XA ADPCM Audio with Headers*/
  420.        DATATYPE_CDXA_HEADERS   $0208L     /* CD-XA Headers and Subheaders*/
  421.  
  422.  
  423. /* Subtypes for DATATYPE_CDXA_AUDIO:*/
  424.          CDXA_LEVELB             $0000L /* LEVEL B Audio Stereo*/
  425.          CDXA_LEVELC             $0001L /* LEVEL C Audio Stereo*/
  426.          CDXA_LEVELB_MONO        $0002L /* LEVEL B Audio Mono*/
  427.          CDXA_LEVELC_MONO        $0003L /* LEVEL C Audio Mono*/
  428.  
  429.  
  430. /*********************
  431.  * DIGISPEECH datatype
  432.  *********************/
  433.        DATATYPE_DIGISPEECH     $0208L     /* DIGISPEECH */
  434.          DIGISPEECH_NATIVE       $0001L   /* Native digispeech */
  435.  
  436.  
  437. /*********************
  438.  * MPEG-1 Audio datatypes
  439.  *********************/
  440.        DATATYPE_MPEG1AUDIO       $0050L     /* MPEG-1 Audio */
  441.  
  442. /* Subtypes for DATATYPE_MPEG1AUDIO:*/
  443.          MPEG1_FORMAT_3M16        $0001L   /* 32.000kHz,  Mono  , 16-bit*/
  444.          MPEG1_FORMAT_3S16        $0002L   /* 32.000kHz,  Stereo, 16-bit*/
  445.          MPEG1_FORMAT_4M16        $0003L   /* 44.1/48kHz, Mono  , 16-bit*/
  446.          MPEG1_FORMAT_4S16        $0004L   /* 44.1/48kHz, Stereo, 16-bit*/
  447.  
  448. /*******************
  449.  * UNKNOWN datatype
  450.  *******************/
  451.        DATATYPE_UNKNOWN        $FFFFFFFFL   /* Unknown datatype */
  452. /*         SUBTYPE_NONE            $0000L      No subtype for this data type*/
  453.  
  454.  
  455. /* XLATOFF */
  456. #endif
  457. /* XLATON */
  458.  
  459.  
  460. typedef MMIMAGEHEADER *PMMIMAGEHEADER;
  461.  
  462. #endif
  463. #endif
  464.  
  465.       MMIO_AUDIO_UNKNOWN          $00000000L  /* Unknown image content  */
  466.       MMIO_AUDIO_VOICE            $00000001L  /* Limited Range          */
  467.       MMIO_AUDIO_MUSIC            $00000002L  /* FM Radio or equivalent */
  468.       MMIO_AUDIO_HIFI             $00000004L  /* High quality recording */
  469.  
  470. typedef struct _WAVE_HEADER {                /* waveheader          */
  471.    USHORT          usFormatTag;              /* Type of wave format */
  472.    USHORT          usChannels;               /* Number of channels  */
  473.    ULONG           ulSamplesPerSec;          /* Sampling rate       */
  474.    ULONG           ulAvgBytesPerSec;         /* Avg bytes per sec   */
  475.    USHORT          usBlockAlign;             /* Block Alignment in bytes */
  476.    USHORT          usBitsPerSample;          /* Bits per sample     */
  477.    } WAVE_HEADER;
  478.  
  479. typedef struct _XWAV_HEADERINFO {            /* xwaveheader info        */
  480.    ULONG           ulAudioLengthInMS;        /* Audio data in millisecs */
  481.    ULONG           ulAudioLengthInBytes;     /* Audio data in bytes     */
  482.    PVOID           pAdditionalInformation;
  483.    } XWAV_HEADERINFO;
  484.  
  485. typedef struct _MMXWAV_HEADER {              /* mmxwaveheader            */
  486.    WAVE_HEADER     WAVEHeader;               /* Per RIFF WAVE Definition */
  487.    XWAV_HEADERINFO XWAVHeaderInfo;           /* Extended wave definition */
  488.    } MMXWAV_HEADER;
  489.  
  490. typedef struct _MMAUDIOHEADER {              /* mmaudioheader   */
  491.    DWORD           dwHeaderLength;           /* Length in Bytes */
  492.    DWORD           dwContentType;            /* Image content   */
  493.    DWORD           dwMediaType;              /* Media Type      */
  494.    MMXWAV_HEADER   mmXWAVHeader;             /* header          */
  495.    } MMAUDIOHEADER;
  496.  
  497. typedef MMAUDIOHEADER *PMMAUDIOHEADER;
  498.  
  499.       MMIO_MIDI_UNKNOWN          $00000000L  /* Unknown midi content   */
  500.       MMIO_MIDI_VOICE            $00000001L  /* Limited Range          */
  501.       MMIO_MIDI_MUSIC            $00000002L  /* FM Radio or equivalent */
  502.       MMIO_MIDI_HIFI             $00000004L  /* High quality recording */
  503. *)
  504.  
  505. CONST
  506.       DLLNAME_SIZE       =CCHMAXPATH;
  507.       PROCNAME_SIZE      =32;
  508.       MAX_EXTENSION_NAME =4;
  509.  
  510. (*
  511. typedef struct _MMINIFILEINFO {               /* mminifileinfo          */
  512.    FOURCC      fccIOProc;                     /* IOProc identifier      */
  513.    CHAR        szDLLName[DLLNAME_SIZE];       /* DLL name string        */
  514.    CHAR        szProcName[PROCNAME_SIZE];     /* Procedure name string  */
  515.    DWORD       dwFlags;                       /* Flags for Preload      */
  516.    DWORD       dwExtendLen;                   /* Length of ext fields   */
  517.    DWORD       dwMediaType;                   /* Media type             */
  518.    DWORD       dwIOProcType;                  /* Type of IOProc         */
  519.    CHAR        szDefExt[sizeof(MAX_EXTENSION_NAME)];
  520.                                               /* Default file extension */
  521.    } MMINIFILEINFO;
  522.  
  523. typedef MMINIFILEINFO *PMMINIFILEINFO;
  524.  
  525. /*
  526.  * CODEC Structures and type definitions for Rel. 1.1
  527.  */
  528.  
  529. *)
  530. CONST
  531.       CODEC_INFO_SIZE    =8;
  532.       CODEC_HW_NAME_SIZE =32;
  533.  
  534. TYPE
  535.     PCODECPROC=^MMIOPROC;
  536.  
  537. TYPE
  538.     PCODECINIFILEINFO=^CODECINIFILEINFO;
  539.     CODECINIFILEINFO=RECORD
  540.                            ulStructLen:LONGWORD;
  541.                            fcc:FOURCC;
  542.                            szDLLName:CSTRING[DLLNAME_SIZE-1];
  543.                            szProcName:CSTRING[PROCNAME_SIZE-1];
  544.                            ulCompressType:LONGWORD;
  545.                            ulCompressSubType:LONGWORD;
  546.                            ulMediaType:LONGWORD;
  547.                            ulCapsFlags:LONGWORD;
  548.                            ulFlags:LONGWORD;
  549.                            szHWID:CSTRING[CODEC_HW_NAME_SIZE-1];
  550.                            ulMaxSrcBufLen:LONGWORD;
  551.                            ulSyncMethod:LONGWORD;
  552.                            fccPreferredFormat:LONGWORD;
  553.                            ulXalignment:LONGWORD;
  554.                            ulYalignment:LONGWORD;
  555.                            ulSpecInfo:CSTRING[CODEC_INFO_SIZE-1];
  556.     END;
  557.  
  558. CONST
  559.       CODEC_SYNC_METHOD_NO_DROP_FRAMES                  =0;
  560.       CODEC_SYNC_METHOD_DROP_FRAMES_IMMEDIATELY         =1;
  561.       CODEC_SYNC_METHOD_DROP_FRAMES_PRECEDING_KEY       =2;
  562.       CODEC_SYNC_METHOD_HARDWARE                        =3;
  563.  
  564.  
  565.       CODEC_COMPRESS            =$00000001;
  566.       CODEC_DECOMPRESS          =$00000002;
  567.       CODEC_WINDOW_CLIPPING     =$00000004;
  568.       CODEC_PALETTE_TRANS       =$00000008;
  569.       CODEC_SELFHEAL            =$00000010;
  570.       CODEC_SCALE_PEL_DOUBLE    =$00000020;
  571.       CODEC_SCALE_PEL_HALVED    =$00000040;
  572.       CODEC_SCALE_CONTINUOUS    =$00000080;
  573.       CODEC_MULAPERTURE         =$00000100;
  574.       CODEC_4_BIT_COLOR         =$00000200;
  575.       CODEC_8_BIT_COLOR         =$00000400;
  576.       CODEC_16_BIT_COLOR        =$00000800;
  577.       CODEC_24_BIT_COLOR        =$00001000;
  578.       CODEC_HARDWARE            =$00002000;
  579.       CODEC_SYMMETRIC           =$00004000;
  580.       CODEC_ASYMMETRIC          =$00008000;
  581.       CODEC_DIRECT_DISPLAY      =$00010000;
  582.       CODEC_DEFAULT             =$00020000;
  583.       CODEC_ORIGIN_LOWERLEFT    =$00040000;
  584.       CODEC_ORIGIN_UPPERLEFT    =$00080000;
  585.       CODEC_SET_QUALITY         =$00100000;
  586.       CODEC_DATA_CONSTRAINT     =$00200000;
  587.       CODEC_HW_OVERLAY          =$00400000;
  588.       CODEC_MULTI_BUFFER        =$00800000;
  589.       CODEC_DITHER_OUTPUT       =$01000000;
  590.       CODEC_COMP_REALTIME       =$00020000;
  591.       CODEC_DECOMP_REALTIME     =$00040000;
  592.  
  593.       MMIO_SET_EXTENDEDINFO                   =$0001;
  594.       MMIO_QUERY_EXTENDEDINFO_BASE            =$0002;
  595.       MMIO_QUERY_EXTENDEDINFO_ALL             =$0004;
  596.  
  597. TYPE
  598.     PCODECASSOC=^CODECASSOC;
  599.     CODECASSOC=RECORD
  600.                      pCodecOpen:POINTER;
  601.                      pCodecIniFileInfo:PCODECINIFILEINFO;
  602.     END;
  603.  
  604.     PMMEXTENDINFO=^MMEXTENDINFO;
  605.     MMEXTENDINFO=RECORD
  606.                        ulStructLen:LONGWORD;
  607.                        ulBufSize:LONGWORD;
  608.                        ulFlags:LONGWORD;
  609.                        ulTrackID:LONGWORD;
  610.                        ulNumCODECs:LONGWORD;
  611.                        pCODECAssoc:PCODECASSOC;
  612.     END;
  613.  
  614. CONST
  615.       MMIO_TRACK                =$00000001;
  616.       MMIO_NORMAL_READ          =$00000002;
  617.       MMIO_SCAN_READ            =$00000004;
  618.       MMIO_REVERSE_READ         =$00000008;
  619.       MMIO_CODEC_ASSOC          =$00000100;
  620.  
  621. (*
  622. /* Audio Related defines */
  623.  
  624.       MMIO_REALTIME_CODEC       $00000200
  625. *)
  626. CONST
  627.       MMIO_RESETTRACKS          =-1;
  628. (*
  629.       CODEC_START              $0EC0
  630.       CODEC_END                $0EFF
  631.  
  632.       MMIOM_CODEC_CLOSE             CODEC_START + 1
  633.       MMIOM_CODEC_OPEN              CODEC_START + 2
  634.       MMIOM_CODEC_QUERYNAME         CODEC_START + 3
  635.       MMIOM_CODEC_QUERYNAMELENGTH   CODEC_START + 4
  636.       MMIOM_CODEC_COMPRESS          CODEC_START + 5
  637.       MMIOM_CODEC_DECOMPRESS        CODEC_START + 6
  638.  
  639.  
  640. #endif
  641. /* End CODEC include */
  642.  
  643. *)
  644. CONST
  645.       MMIO_CREATE     =$00000001;       /* Open */
  646.       MMIO_CTOCFIRST  =$00000002;       /* Open */
  647.       MMIO_READ       =$00000004;       /* Open */
  648.       MMIO_WRITE      =$00000008;       /* Open */
  649.       MMIO_READWRITE  =$00000010;       /* Open */
  650.       MMIO_COMPAT     =$00000020;       /* Open */
  651.       MMIO_EXCLUSIVE  =$00000040;       /* Open */
  652.       MMIO_DENYWRITE  =$00000080;       /* Open */
  653.       MMIO_DENYREAD   =$00000100;       /* Open */
  654.       MMIO_DENYNONE   =$00000200;       /* Open */
  655.       MMIO_ALLOCBUF   =$00000400;       /* Open */
  656.       MMIO_DELETE     =$00000800;       /* Open */
  657.  
  658.       MMIO_USE_TEMP   =$00001000;       /* Open/Close/Save */
  659.  
  660.       MMIO_INSERTON   =$00000001;       /* Insert */
  661.       MMIO_INSERTOFF  =$00000002;       /* Insert */
  662.  
  663.       MMIO_RWMODE     =$00001000;       /* Open */
  664.       MMIO_SHAREMODE  =$00002000;       /* Open */
  665.  
  666.       MMIO_DIRTY      =$00004000;       /* Write */
  667.  
  668.       MMIO_VERTBAR     =$00008000;       /* Open */
  669.       MMIO_BUFSHARED   =$00010000;       /* Open */
  670.       MMIO_APPEND      =$00020000;       /* Open */
  671.       MMIO_NOIDENTIFY  =$00040000;       /* Open */
  672.  
  673.  
  674.       MMIO_FINDFIRST   =$00000001;       /* CF Find Entry */
  675.       MMIO_FINDNEXT    =$00000002;       /* CF Find Entry */
  676.       MMIO_FINDUNUSED  =$00000004;       /* CF Find Entry */
  677.       MMIO_FINDDELETED =$00000008;       /* CF Find Entry */
  678.  
  679.       MMIO_CHANGEDELETED =$0001;        /* CF Change Entry */
  680.  
  681.       MMIO_CF_FQNAME     =$0001;        /* CF Compact      */
  682.  
  683.       MMIO_FHOPEN      =$0001;          /* Close */
  684.  
  685.       MMIO_EMPTYBUF    =$0001;          /* Flush */
  686.  
  687.       MMIO_CREATERIFF  =$0001;          /* CreateChunk */
  688.       MMIO_CREATELIST  =$0002;          /* CreateChunk */
  689.       MMIO_FINDCHUNK   =$0004;          /* Descend     */
  690.       MMIO_FINDRIFF    =$0008;          /* Descend     */
  691.       MMIO_FINDLIST    =$0010;          /* Descend     */
  692.  
  693.       CTOC_HF_SEQUENTIAL =$00000001;    /* CTOC dwHeaderFlags */
  694.       CTOC_HF_MEDSUBTYPE =$00000002;    /* CTOC dwHeaderFlags */
  695.  
  696.       CTOC_EFU_UNUSED          =$00000000; /* CTOC extra usage code */
  697.       CTOC_EFU_LASTMODTIME     =$00000001; /* CTOC extra usage code */
  698.       CTOC_EFU_CODEPAGE        =$00000002; /* CTOC extra usage code */
  699.       CTOC_EFU_LANGUAGE        =$00000003; /* CTOC extra usage code */
  700.       CTOC_EFU_COMPRESSPARAM0  =$00000005; /* CTOC extra usage code */
  701.       CTOC_EFU_COMPRESSPARAM1  =$00000006; /* CTOC extra usage code */
  702.       CTOC_EFU_COMPRESSPARAM2  =$00000007; /* CTOC extra usage code */
  703.       CTOC_EFU_COMPRESSPARAM3  =$00000008; /* CTOC extra usage code */
  704.       CTOC_EFU_COMPRESSPARAM4  =$00000009; /* CTOC extra usage code */
  705.       CTOC_EFU_COMPRESSPARAM5  =$0000000A; /* CTOC extra usage code */
  706.       CTOC_EFU_COMPRESSPARAM6  =$0000000B; /* CTOC extra usage code */
  707.       CTOC_EFU_COMPRESSPARAM7  =$0000000C; /* CTOC extra usage code */
  708.       CTOC_EFU_COMPRESSPARAM8  =$0000000D; /* CTOC extra usage code */
  709.       CTOC_EFU_COMPRESSPARAM9  =$0000000E; /* CTOC extra usage code */
  710.       CTOC_CHARSET_STANDARD    =$00000000; /* CTOC charset value    */
  711.  
  712.       MMIO_INSTALLPROC         =$00000001; /* Install IO Proc */
  713.       MMIO_REMOVEPROC          =$00000002; /* Install IO Proc */
  714.       MMIO_FINDPROC            =$00000004; /* Install IO Proc */
  715.  
  716.       MMIO_MATCHFIRST          =$00000010; /* Ini File Handler */
  717.       MMIO_MATCHNEXT           =$00000020; /* Ini File Handler */
  718.       MMIO_MATCHFOURCC         =$00000040; /* Ini File Handler */
  719.       MMIO_MATCHDLL            =$00000080; /* Ini File Handler */
  720.       MMIO_MATCHPROCEDURENAME  =$00000100; /* Ini File Handler */
  721.       MMIO_FULLPATH            =$00000200; /* Ini File Handler */
  722.       MMIO_NOVERIFY            =$00000400; /* Ini File Handler */
  723.       MMIO_MATCHCOMPRESSTYPE   =$00000800; /* Ini File Handler */
  724.       MMIO_EXTENDED_STRUCT     =$00001000; /* Ini File ulFlags */
  725.       MMIO_MATCHCOMPRESSSUBTYPE= $00002000; /* Ini File Handler */
  726.       MMIO_MATCHHWID           =$00004000; /* Ini File Handler */
  727.       MMIO_MATCHCAPSFLAGS      =$00008000; /* Ini File Handler */
  728.       MMIO_SKIPMATCH           =$00010000; /* Ini/Load Handler */
  729.  
  730.       MMIO_TOUPPER             =$0001;     /* StringToFourcc */
  731.  
  732.       MMIO_CF_ENTRY_EXISTS     =$00000001; /* Add CGRP element */
  733.  
  734.       MMIO_FORCE_IDENTIFY_SS   =$00000001; /* Identify */
  735.       MMIO_FORCE_IDENTIFY_FF   =$00000002; /* Identify */
  736.  
  737.       MMIO_NOTRANSLATE         =$00000000; /* Translation */
  738.       MMIO_TRANSLATEDATA       =$00000001; /* Translation */
  739.       MMIO_TRANSLATEHEADER     =$00000002; /* Translation */
  740.       MMIO_DECOMPRESS          =$00000004; /* CODEC Decompress */
  741.  
  742.       MMIO_DEFAULTBUFFER = 8192;   /* two pages under OS/2 2.0 */
  743.  
  744.       MMIO_SEEK_IFRAME         =$00010000; /* Seek to nearest previous IFRAME */
  745.  
  746. (*
  747.  
  748. /*
  749.  * Messages :
  750.  */
  751.  
  752.       MMIOM_START              $0E00
  753.       MMIOM_END                $0EFF
  754.  
  755.       MMIOM_GETCF              MMIOM_START + 1
  756.       MMIOM_GETCFENTRY         MMIOM_START + 2
  757.  
  758.       MMIOM_CLOSE              MMIOM_START + 3
  759.       MMIOM_OPEN               MMIOM_START + 4
  760.       MMIOM_READ               MMIOM_START + 5
  761.       MMIOM_SEEK               MMIOM_START + 6
  762.       MMIOM_WRITE              MMIOM_START + 7
  763.  
  764.       MMIOM_IDENTIFYFILE       MMIOM_START + 8
  765.       MMIOM_GETHEADER          MMIOM_START + 9
  766.       MMIOM_SETHEADER          MMIOM_START + 10
  767.       MMIOM_QUERYHEADERLENGTH  MMIOM_START + 11
  768.       MMIOM_GETFORMATNAME      MMIOM_START + 12
  769.       MMIOM_GETFORMATINFO      MMIOM_START + 13
  770.       MMIOM_SEEKBYTIME         MMIOM_START + 14
  771.       MMIOM_TEMPCHANGE         MMIOM_START + 15
  772.       MMIOM_BEGININSERT        MMIOM_START + 16
  773.       MMIOM_ENDINSERT          MMIOM_START + 17
  774.       MMIOM_SAVE               MMIOM_START + 18
  775.       MMIOM_SET                MMIOM_START + 19
  776.       MMIOM_COMPRESS           MMIOM_START + 20
  777.       MMIOM_DECOMPRESS         MMIOM_START + 21
  778.       MMIOM_MULTITRACKREAD     MMIOM_START + 22
  779.       MMIOM_MULTITRACKWRITE    MMIOM_START + 23
  780.       MMIOM_DELETE             MMIOM_START + 24
  781.       MMIOM_BEGINGROUP         MMIOM_START + 25
  782.       MMIOM_ENDGROUP           MMIOM_START + 26
  783.       MMIOM_UNDO               MMIOM_START + 27
  784.       MMIOM_REDO               MMIOM_START + 28
  785.       MMIOM_BEGINSTREAM        MMIOM_START + 29
  786.       MMIOM_ENDSTREAM          MMIOM_START + 30
  787.  
  788.  
  789.       MMIOM_CUT                MMIOM_START + 31
  790.       MMIOM_COPY               MMIOM_START + 32
  791.       MMIOM_PASTE              MMIOM_START + 33
  792.       MMIOM_CLEAR              MMIOM_START + 34
  793.       MMIOM_STATUS             MMIOM_START + 35
  794.       MMIOM_WINMSG             MMIOM_START + 36
  795.       MMIOM_BEGINRECORD        MMIOM_START + 37
  796.       MMIOM_ENDRECORD          MMIOM_START + 38
  797.  
  798. /* These 3 new messages were added with feature 11710 */
  799.  
  800.       MMIOM_QUERYIMAGE         MMIOM_START + 39
  801.       MMIOM_QUERYIMAGECOUNT    MMIOM_START + 40
  802.       MMIOM_SETIMAGE           MMIOM_START + 41
  803.  
  804.       MMIOM_USER                $0F00
  805.       MMIOM_USER_END            $0FFF
  806.  
  807.  
  808. /* Parameter structure for MMIOM_STATUS */
  809.  
  810. typedef struct _MMIO_STATUS_PARMS {       /* mmio_status_parms                */
  811.     HWND    hwndWindow;                   /* Some items require a window handle */
  812.     ULONG   ulReturn;                     /* Return field */
  813.     ULONG   ulItem;                       /* Use MCI_STATUS_... flags here */
  814.     ULONG   ulValue;                      /* Status value field */
  815.     ULONG   ulType;                       /* MCI_FORMAT_... of ulReturn */
  816. } MMIO_STATUS_PARMS;
  817.  
  818. typedef MMIO_STATUS_PARMS *PMMIO_STATUS_PARMS;
  819.  
  820. /* Parameter structure for MMIOM_COPY, MMIOM_CUT, MMIOM_CLEAR and MMIOM_PASTE */
  821.  
  822. typedef LONG USEC;                        /* microsecond time format */
  823.  
  824. typedef struct _MMIO_EDIT_PARMS {         /* mmio_medit_parms         */
  825.    ULONG    ulStrucLen;                   /* length of this structure */
  826.    HWND     hwndWindow;                   /* window handle */
  827.    USEC     ulStartTime;                  /* starting time in usec */
  828.    USEC     ulDuration;                   /* duration in usec */
  829.    ULONG    ulCurrentFilePosition;        /* current file position in usec */
  830.    ULONG    ulNewFilePosition;            /* returned by IO proc in usec, MCD will issue a seek */
  831.    ULONG    ulNewFileLength;              /* return by IO proc in usec, MCD updates its headers */
  832.    PVOID    pBuffer;                      /* optional buffer */
  833.    ULONG    ulBufferLength;               /* optional buffer's length */
  834.    PVOID    pHeader;                      /* optional pointer to header for buffer */
  835. } MMIO_EDIT_PARMS;
  836.  
  837. typedef MMIO_EDIT_PARMS *PMMIO_EDIT_PARMS;
  838.  
  839. /* Parameter structure for MMIOM_WINMSG */
  840.  
  841. typedef struct _MMIO_WINMSG {             /* this comment needed by h2inc */
  842.    HWND     hwndWindow;                   /* these are the parameters */
  843.    USHORT   usMessage;                    /*  ... passed to the       */
  844.    PVOID    pParam1;                      /*  ... window procedure    */
  845.    PVOID    pParam2;                      /*  ... by PM               */
  846. } MMIO_WINMSG;
  847.  
  848. typedef MMIO_WINMSG *PMMIO_WINMSG;
  849.  
  850.  
  851.  
  852.  
  853. /*
  854.  * Include error codes for MMIO only.
  855.  */
  856.  
  857. #ifndef _MEERROR_H_
  858.       INCL_MMIO_ERRORS
  859. #include <meerror.h>
  860. #endif
  861. *)
  862. CONST
  863.       MMIO_SUCCESS                   = 0;
  864.       MMIO_WARNING                   = 2;
  865.       MMIO_ERROR                     =-1;
  866.       MMIOERR_UNSUPPORTED_MESSAGE    =-2;
  867.  
  868.       MMIO_CF_SUCCESS                = 0;
  869.       MMIO_CF_FAILURE                = 1;
  870. (*
  871.       mmioFOURCC( ch0, ch1, ch2, ch3 )                         \
  872.                   ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) |    \
  873.                   ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
  874.  
  875.       FOURCC_RIFF   mmioFOURCC( 'R', 'I', 'F', 'F' )
  876.       FOURCC_LIST   mmioFOURCC( 'L', 'I', 'S', 'T' )
  877.       FOURCC_MEM    mmioFOURCC( 'M', 'E', 'M', ' ' )
  878.       FOURCC_DOS    mmioFOURCC( 'D', 'O', 'S', ' ' )
  879.       FOURCC_BND    mmioFOURCC( 'B', 'N', 'D', ' ' )
  880.       FOURCC_FREE   mmioFOURCC( 'F', 'R', 'E', 'E' )
  881.       FOURCC_DEL    mmioFOURCC( 'D', 'E', 'L', ' ' )
  882.       FOURCC_CTOC   mmioFOURCC( 'C', 'T', 'O', 'C' )
  883.       FOURCC_CGRP   mmioFOURCC( 'C', 'G', 'R', 'P' )
  884.       FOURCC_CF     mmioFOURCC( 'C', 'F', ' ', ' ' )
  885.  
  886.       MMIO_NLS_CHARSET_INFO    8000   /* RCDATA Name ID for NLS          */
  887.       MMIO_IOPROC_NAME_TABLE   8500   /* RCDATA Name ID for string table */
  888.       MMIO_CODEC_NAME_TABLE    9000   /* RCDATA Name ID for Codec  table */
  889.  
  890. /*
  891.  * Numeric equivalents of fourcc's.  These are needed for the resource
  892.  * compiler.
  893.  */
  894.  
  895.       HEX_FOURCC_DOS $20534f44L
  896.       HEX_FOURCC_MEM $204d454dL
  897.       HEX_FOURCC_BND $20444e42L
  898.       HEX_FOURCC_CF  $20204643L
  899.  
  900. /*
  901.  * Country codes (CC), languages (LC), and dialects (DC).
  902.  */
  903.  
  904.       MMIO_DEFAULT_CODE_PAGE            437
  905.  
  906.       MMIO_CC_NONE                      000
  907.       MMIO_CC_USA                       001
  908.       MMIO_CC_CANADA                    002
  909.       MMIO_CC_LATIN_AMERICA             003
  910.       MMIO_CC_GREECE                    030
  911.       MMIO_CC_NETHERLANDS               031
  912.       MMIO_CC_BELGIUM                   032
  913.       MMIO_CC_FRANCE                    033
  914.       MMIO_CC_SPAIN                     034
  915.       MMIO_CC_ITALY                     039
  916.       MMIO_CC_SWITZERLAND               041
  917.       MMIO_CC_AUSTRIA                   043
  918.       MMIO_CC_UNITED_KINGDOM            044
  919.       MMIO_CC_DENMARK                   045
  920.       MMIO_CC_SWEDEN                    046
  921.       MMIO_CC_NORWAY                    047
  922.       MMIO_CC_WEST_GERMANY              049
  923.       MMIO_CC_MEXICO                    052
  924.       MMIO_CC_BRAZIL                    055
  925.       MMIO_CC_AUSTRALIA                 061
  926.       MMIO_CC_NEW_ZEALAND               064
  927.       MMIO_CC_JAPAN                     081
  928.       MMIO_CC_KOREA                     082
  929.       MMIO_CC_CHINA                     086
  930.       MMIO_CC_TAIWAN                    088
  931.       MMIO_CC_TURKEY                    090
  932.       MMIO_CC_PORTUGAL                  351
  933.       MMIO_CC_LUXEMBOURG                352
  934.       MMIO_CC_ICELAND                   354
  935.       MMIO_CC_FINLAND                   358
  936.  
  937.       MMIO_LC_NONE                        0
  938.       MMIO_DC_NONE                        0
  939.       MMIO_LC_ARABIC                      1
  940.       MMIO_DC_ARABIC                      1
  941.       MMIO_LC_BULGARIAN                   2
  942.       MMIO_DC_BULGARIAN                   1
  943.       MMIO_LC_CATALAN                     3
  944.       MMIO_DC_CATALAN                     1
  945.       MMIO_LC_TRADITIONAL_CHINESE         4
  946.       MMIO_DC_TRADITIONAL_CHINESE         1
  947.       MMIO_LC_SIMPLE_CHINESE              4
  948.       MMIO_DC_SIMPLE_CHINESE              2
  949.       MMIO_LC_CZECH                       5
  950.       MMIO_DC_CZECH                       1
  951.       MMIO_LC_DANISH                      6
  952.       MMIO_DC_DANISH                      1
  953.       MMIO_LC_GERMAN                      7
  954.       MMIO_DC_GERMAN                      1
  955.       MMIO_LC_SWISS_GERMAN                7
  956.       MMIO_DC_SWISS_GERMAN                2
  957.       MMIO_LC_GREEK                       8
  958.       MMIO_DC_GREEK                       1
  959.       MMIO_LC_US_ENGLISH                  9
  960.       MMIO_DC_US_ENGLISH                  1
  961.       MMIO_LC_UK_ENGLISH                  9
  962.       MMIO_DC_UK_ENGLISH                  2
  963.       MMIO_LC_SPANISH                    10
  964.       MMIO_DC_SPANISH                     1
  965.       MMIO_LC_SPANISH_MEXICAN            10
  966.       MMIO_DC_SPANISH_MEXICAN             2
  967.       MMIO_LC_FINNISH                    11
  968.       MMIO_DC_FINNISH                     1
  969.       MMIO_LC_FRENCH                     12
  970.       MMIO_DC_FRENCH                      1
  971.       MMIO_LC_BELGIAN_FRENCH             12
  972.       MMIO_DC_BELGIAN_FRENCH              2
  973.       MMIO_LC_CANADIAN_FRENCH            12
  974.       MMIO_DC_CANADIAN_FRENCH             3
  975.       MMIO_LC_SWISS_FRENCH               12
  976.       MMIO_DC_SWISS_FRENCH                4
  977.       MMIO_LC_HEBREW                     13
  978.       MMIO_DC_HEBREW                      1
  979.       MMIO_LC_HUNGARIAN                  14
  980.       MMIO_DC_HUNGARIAN                   1
  981.       MMIO_LC_ICELANDIC                  15
  982.       MMIO_DC_ICELANDIC                   1
  983.       MMIO_LC_ITALIAN                    16
  984.       MMIO_DC_ITALIAN                     1
  985.       MMIO_LC_SWISS_ITALIAN              16
  986.       MMIO_DC_SWISS_ITALIAN               2
  987.       MMIO_LC_JAPANESE                   17
  988.       MMIO_DC_JAPANESE                    1
  989.       MMIO_LC_KOREAN                     18
  990.       MMIO_DC_KOREAN                      1
  991.       MMIO_LC_DUTCH                      19
  992.       MMIO_DC_DUTCH                       1
  993.       MMIO_LC_BELGIAN_DUTCH              19
  994.       MMIO_DC_BELGIAN_DUTCH               2
  995.       MMIO_LC_NORWEGIAN_BOKMAL           20
  996.       MMIO_DC_NORWEGIAN_BOKMAL            1
  997.       MMIO_LC_NORWEGIAN_NYNORSK          20
  998.       MMIO_DC_NORWEGIAN_NYNORSK           2
  999.       MMIO_LC_POLISH                     21
  1000.       MMIO_DC_POLISH                      1
  1001.       MMIO_LC_BRAZILIAN_PORTUGUESE       22
  1002.       MMIO_DC_BRAZILIAN_PORTUGUESE        1
  1003.       MMIO_LC_PORTUGUESE                 22
  1004.       MMIO_DC_PORTUGUESE                  2
  1005.       MMIO_LC_RHAETO_ROMANIC             23
  1006.       MMIO_DC_RHAETO_ROMANIC              1
  1007.       MMIO_LC_ROMANIAN                   24
  1008.       MMIO_DC_ROMANIAN                    1
  1009.       MMIO_LC_RUSSIAN                    25
  1010.       MMIO_DC_RUSSIAN                     1
  1011.       MMIO_LC_SERBO_CROATIAN_LATIN       26
  1012.       MMIO_DC_SERBO_CROATIAN_LATIN        1
  1013.       MMIO_LC_SERBO_CROATIAN_CYRILLIC    26
  1014.       MMIO_DC_SERBO_CROATIAN_CYRILLIC     2
  1015.       MMIO_LC_SLOVAK                     27
  1016.       MMIO_DC_SLOVAK                      1
  1017.       MMIO_LC_ALBANIAN                   28
  1018.       MMIO_DC_ALBANIAN                    1
  1019.       MMIO_LC_SWEDISH                    29
  1020.       MMIO_DC_SWEDISH                     1
  1021.       MMIO_LC_THAI                       30
  1022.       MMIO_DC_THAI                        1
  1023.       MMIO_LC_TURKISH                    31
  1024.       MMIO_DC_TURKISH                     1
  1025.       MMIO_LC_URDU                       32
  1026.       MMIO_DC_URDU                        1
  1027.       MMIO_LC_BAHASA                     33
  1028.       MMIO_DC_BAHASA                      1
  1029.  
  1030. /*
  1031.  * Base function prototypes:
  1032.  */
  1033.  
  1034. WORD APIENTRY mmioAdvance( HMMIO hmmio,
  1035.                            PMMIOINFO pmmioinfo,
  1036.                            WORD wFlags );
  1037.  
  1038. WORD APIENTRY mmioAscend( HMMIO hmmio,
  1039.                           PMMCKINFO pckinfo,
  1040.                           WORD wFlags );
  1041.  
  1042.  
  1043. WORD APIENTRY mmioCreateChunk( HMMIO hmmio,
  1044.                                PMMCKINFO pckinfo,
  1045.                                WORD wFlags );
  1046.  
  1047. WORD APIENTRY mmioDescend( HMMIO hmmio,
  1048.                            PMMCKINFO pckinfo,
  1049.                            PMMCKINFO pckinfoParent,
  1050.                            WORD wFlags );
  1051.  
  1052. WORD APIENTRY mmioFlush( HMMIO hmmio,
  1053.                          WORD wFlags );
  1054.  
  1055. WORD APIENTRY mmioGetInfo( HMMIO hmmio,
  1056.                            PMMIOINFO pmmioinfo,
  1057.                            WORD wFlags );
  1058.  
  1059. DWORD APIENTRY mmioGetLastError( HMMIO hmmio );
  1060.  
  1061. PMMIOPROC APIENTRY mmioInstallIOProc( FOURCC fccIOProc,
  1062.                                       PMMIOPROC pIOProc,
  1063.                                       DWORD dwflags );
  1064.  
  1065. LONG APIENTRY mmioIOProc( PMMIOINFO pmmioinfo,
  1066.                           WORD wMsg,
  1067.                           LONG lParam1,
  1068.                           LONG lParam2 );
  1069.  
  1070.  
  1071. LONG APIENTRY mmioRead( HMMIO hmmio,
  1072.                         PCHAR pchBuffer,
  1073.                         LONG cBytes );
  1074.  
  1075. LONG APIENTRY mmioSeek( HMMIO hmmio,
  1076.                         LONG lOffset,
  1077.                         LONG lOrigin );
  1078.  
  1079. LONG APIENTRY mmioSendMessage( HMMIO hmmio,
  1080.                                WORD wMsg,
  1081.                                LONG lParam1,
  1082.                                LONG lParam2 );
  1083.  
  1084. WORD APIENTRY mmioSetBuffer( HMMIO hmmio,
  1085.                              PCHAR pchBuffer,
  1086.                              LONG cBytes,
  1087.                              WORD wFlags );
  1088.  
  1089. WORD APIENTRY mmioSetInfo( HMMIO hmmio,
  1090.                            PMMIOINFO pmmioinfo,
  1091.                            WORD wFlags );
  1092.  
  1093. FOURCC APIENTRY mmioStringToFOURCC( PSZ pszString,
  1094.                                     WORD wFlags );
  1095.  
  1096. LONG APIENTRY mmioWrite( HMMIO hmmio,
  1097.                          PCHAR pchBuffer,
  1098.                          LONG cBytes );
  1099.  
  1100. /*
  1101.  * Compound File function prototypes:
  1102.  */
  1103.  
  1104. HMMCF APIENTRY mmioCFOpen( PSZ pszFileName,
  1105.                            PMMCFINFO pmmcfinfo,
  1106.                            PMMIOINFO pmmioinfo,
  1107.                            DWORD dwFlags );
  1108.  
  1109. DWORD APIENTRY mmioCFClose( HMMCF hmmcf,
  1110.                             DWORD dwFlags );
  1111.  
  1112. DWORD APIENTRY mmioCFGetInfo( HMMCF hmmcf,
  1113.                               PMMCFINFO pmmcfinfo,
  1114.                               DWORD cBytes );
  1115.  
  1116. DWORD APIENTRY mmioCFSetInfo( HMMCF hmmcf,
  1117.                               PMMCFINFO pmmcfinfo,
  1118.                               DWORD cBytes );
  1119.  
  1120. DWORD APIENTRY mmioCFFindEntry( HMMCF hmmcf,
  1121.                                 PMMCTOCENTRY pmmctocentry,
  1122.                                 DWORD dwFlags );
  1123.  
  1124. DWORD APIENTRY mmioCFAddEntry( HMMCF hmmcf,
  1125.                                PMMCTOCENTRY pmmctocentry,
  1126.                                DWORD dwFlags );
  1127.  
  1128. DWORD APIENTRY mmioCFChangeEntry( HMMCF hmmcf,
  1129.                                   PMMCTOCENTRY pmmctocentry,
  1130.                                   DWORD dwFlags );
  1131.  
  1132. DWORD APIENTRY mmioCFDeleteEntry( HMMCF hmmcf,
  1133.                                   PMMCTOCENTRY pmmctocentry,
  1134.                                   DWORD dwFlags );
  1135.  
  1136. DWORD APIENTRY mmioCFAddElement( HMMCF hmmcf,
  1137.                                  PSZ pszElementName,
  1138.                                  FOURCC fccType,
  1139.                                  PCHAR pchBuffer,
  1140.                                  LONG cchBytes,
  1141.                                  DWORD dwFlags );
  1142.  
  1143. DWORD APIENTRY mmioCFCopy( HMMCF hmmcfSource,
  1144.                            PSZ pszDestFileName,
  1145.                            DWORD dwFlags );
  1146.  
  1147. /*
  1148.  * Conversion Utility function prototypes:
  1149.  */
  1150.  
  1151. DWORD APIENTRY mmioQueryFormatCount( PMMFORMATINFO pmmformatinfo,
  1152.                                      PLONG plNumFormats,
  1153.                                      DWORD dwReserved,
  1154.                                      DWORD dwFlags );
  1155.  
  1156. DWORD APIENTRY mmioGetFormats( PMMFORMATINFO pmmformatinfo,
  1157.                                LONG lNumFormats,
  1158.                                PVOID pFormatInfoList,
  1159.                                PLONG plFormatsRead,
  1160.                                DWORD dwReserved,
  1161.                                DWORD dwFlags );
  1162.  
  1163. DWORD APIENTRY mmioGetFormatName( PMMFORMATINFO pmmformatinfo,
  1164.                                   PSZ pszFormatName,
  1165.                                   PLONG plBytesRead,
  1166.                                   DWORD dwReserved,
  1167.                                   DWORD dwFlags );
  1168.  
  1169. DWORD APIENTRY mmioIdentifyFile( PSZ pszFileName,
  1170.                                  PMMIOINFO pmmioinfo,
  1171.                                  PMMFORMATINFO pmmformatinfo,
  1172.                                  PFOURCC pfccStorageSystem,
  1173.                                  DWORD dwReserved,
  1174.                                  DWORD dwFlags );
  1175.  
  1176.  
  1177.  
  1178. DWORD APIENTRY mmioSetHeader( HMMIO hmmio,
  1179.                               PVOID pHeader,
  1180.                               LONG lHeaderLength,
  1181.                               PLONG plBytesWritten,
  1182.                               DWORD dwReserved,
  1183.                               DWORD dwFlags );
  1184.  
  1185. DWORD APIENTRY mmioIniFileHandler( PMMINIFILEINFO pmminifileinfo,
  1186.                                    DWORD dwFlags );
  1187.  
  1188. DWORD APIENTRY mmioIdentifyStorageSystem( PSZ pszFileName,
  1189.                                           PMMIOINFO pmmioinfo,
  1190.                                           PFOURCC pfccStorageSystem );
  1191.  
  1192. DWORD APIENTRY mmioDetermineSSIOProc( PSZ pszFileName,
  1193.                                       PMMIOINFO pmmioinfo,
  1194.                                       PFOURCC pfccStorageSystem,
  1195.                                       PSZ pszParsedRemainder );
  1196.  
  1197. DWORD APIENTRY mmioQueryIOProcModuleHandle( PMMIOPROC pIOProc,
  1198.                                             PHMODULE phmodIOProc );
  1199.  
  1200. ULONG APIENTRY mmioCFCompact( PSZ pszFileName, ULONG ulFlags );
  1201.  
  1202.  
  1203. /*
  1204.  * MMPMMMIO.INI file migration utility
  1205.  */
  1206.  
  1207. ULONG APIENTRY mmioMigrateIniFile( ULONG ulFlags );
  1208.  
  1209. /*
  1210.  * MMIO CODEC APIs
  1211.  */
  1212.  
  1213. #ifdef INCL_MMIO_CODEC
  1214.  
  1215. ULONG APIENTRY mmioIniFileCODEC( PCODECINIFILEINFO pCODECIniFileInfo,
  1216.                                  ULONG ulFlags );
  1217.  
  1218. ULONG APIENTRY mmioQueryCODECName( PCODECINIFILEINFO pCODECIniFileinfo,
  1219.                                   PSZ pszCODECName,
  1220.                                   PULONG pulBytesRead );
  1221.  
  1222. ULONG APIENTRY mmioQueryCODECNameLength( PCODECINIFILEINFO pCODECIniFileinfo,
  1223.                                          PULONG pulNameLength );
  1224.  
  1225.  
  1226. PCODECPROC  APIENTRY mmioLoadCODECProc( PCODECINIFILEINFO pCODECIniFileInfo,
  1227.                                       PHMODULE phMod, ULONG ulFlags );
  1228.  
  1229. USHORT APIENTRY mmioGetData( HMMIO hmmio,
  1230.                            PMMIOINFO pmmioinfo,
  1231.                            USHORT usFlags );
  1232.  
  1233. #endif
  1234.  
  1235. #pragma pack()
  1236.  
  1237. #endif /* _MMIO_H_ */
  1238.  
  1239.  
  1240. /******************
  1241.  * Defines:
  1242.  ******************/
  1243.  
  1244. /* Ultimotion CODEC type for CODECINIFILEINFO ulCompressType */
  1245.        FOURCC_ULTI       mmioFOURCC('U', 'L', 'T', 'I')
  1246.        HEX_FOURCC_ULTI   $49544C55L     /* ITLU */
  1247.  
  1248. /* Indeo CODEC type for CODECINIFILEINFO ulCompressType */
  1249.        FOURCC_RT21       mmioFOURCC('R', 'T', '2', '1')
  1250.        HEX_FOURCC_RT21   $31325452L     /* 12TR */
  1251.  
  1252. /* Mondo CODEC type for CODECINIFILEINFO ulCompressType */
  1253.        FOURCC_DIB        mmioFOURCC('D', 'I', 'B', ' ')
  1254.        HEX_FOURCC_DIB    $20424944L     /*  BID */
  1255.  
  1256. *)
  1257.  
  1258. TYPE
  1259.     PGENPAL=^GENPAL;
  1260.     GENPAL=RECORD
  1261.                  ulStartIndex:ULONG;
  1262.                  ulNumColors:ULONG;
  1263.                  prgb2Entries:PRGB2;
  1264.     END;
  1265.  
  1266. (*
  1267. /**********************************************
  1268.  *
  1269.  * CODECVIDEOHEADER - CODEC video Header
  1270.  *
  1271.  **********************************************/
  1272. typedef struct _CODECVIDEOHEADER {  /* codecvidhdr */
  1273.    ULONG  ulStructLen;
  1274.    ULONG  cx;
  1275.    ULONG  cy;
  1276.    USHORT cPlanes;
  1277.    USHORT cBitCount;
  1278.    ULONG  ulColorEncoding;
  1279.    GENPAL genpal;
  1280. } CODECVIDEOHEADER;
  1281. typedef CODECVIDEOHEADER *PCODECVIDEOHEADER;
  1282.  
  1283. /* ulColorEncoding defines: */
  1284.        MMIO_RGB_5_6_5    $0001L  /* Each pixel is a RGB_5_6_5 datatype */
  1285.        MMIO_RGB_24       $0002L  /* Each pixel is a RGB_24 datatype */
  1286.        MMIO_YUV_4_1_1    $0004L  /* Each pixel is a YUV_4_1_1 datatype */
  1287.        MMIO_COMPRESSED   $0008L  /* The data is compressed */
  1288.        MMIO_YUV_24       $0010L  /* Each pixel is a YUV_24 datatype */
  1289.        MMIO_PALETTIZED   $0020L  /* The data is palettized */
  1290.        MMIO_OS2_BITMAP24 $0020L  /* The data is palettized */
  1291.  
  1292.  
  1293. /**********************************************
  1294.  *
  1295.  * MMVIDEOOPEN - Video Open Structure
  1296.  *
  1297.  * This structure is passed on the CODEC open
  1298.  * message when video compression is being done
  1299.  * to indicate information such as quality,
  1300.  * frame rate, data rate, and key frame rate.
  1301.  *
  1302.  * Quality:
  1303.  *
  1304.  * The ulQuality field specifies a scalar value
  1305.  * in the range 0 - 10000, where 0 is the lowest
  1306.  * quality and 10000 is the highest quality.  A
  1307.  * value of -1 specifies the default quality level,
  1308.  * and the default quality level (e.g. 5000) is
  1309.  * returned in the ulQuality field.
  1310.  *
  1311.  *
  1312.  * Key Frame rate:
  1313.  *
  1314.  * The ulKeyFrameRate structure specifies the key
  1315.  * frame (aka I-frame, reference frame) frequency.
  1316.  * Every Nth frame is a key frame as specified.
  1317.  * A value of zero specifies that no periodic key
  1318.  * are to be compressed.  Additional key frames may
  1319.  * be inserted at any point by specifying
  1320.  * MMIO_IS_KEY_FRAME in the MMCOMPRESS structure.
  1321.  *
  1322.  * example:  ulKeyFrameRate = 5  results in:
  1323.  *
  1324.  *    key delta delta delta delta key delta delta delta delta key delta...
  1325.  *
  1326.  *
  1327.  * Frame rate:
  1328.  *
  1329.  * Rate = number of time units per second
  1330.  * Scale = number of time units per frame
  1331.  *
  1332.  * examples:  Rate = 30  Scale = 1     =>    30 FPS
  1333.  *            Rate = 15  Scale = 1     =>    15 FPS
  1334.  *            Rate = 25  Scale = 2     =>    12.5 FPS
  1335.  *
  1336.  *
  1337.  * Data Constraint:
  1338.  *
  1339.  * Compressors which are capable of constraining the
  1340.  * resultant compressed video data rate use the
  1341.  * information in the ulDataConstraint and
  1342.  * ulConstraintInterval fields.  A non-zero value
  1343.  * in ulDataConstraint specifies the number of bytes
  1344.  * which is not to be exceeded over an interval of
  1345.  * frames in the output data stream, regardless of
  1346.  * the requested quality level.  This value only
  1347.  * considers video data, i.e. audio data and file format
  1348.  * overhead must be considered seperately when determining
  1349.  * the final output file data rate.  The interval of
  1350.  * frames over which the data is constrained is specified
  1351.  * in ulConstraintInterval.  A value of zero for
  1352.  * ulDataContraint specifies that the data rate is not
  1353.  * to be constrained and is compressed according to
  1354.  * the requested quality level.
  1355.  *
  1356.  * example 1:  ulDataConstraint = 150000   ulConstraintInterval = 15
  1357.  *
  1358.  *             This results in an output stream wherein the sizes of any 15
  1359.  *             consecutive frames does not exceed 150000 bytes.  If the
  1360.  *             frame rate is 15 FPS, the resultant data rate will not
  1361.  *             exceed 150000 bytes per second.
  1362.  *
  1363.  * example 2:  ulDataConstraint = 10000    ulConstraintInterval = 1
  1364.  *
  1365.  *             This results in an output stream wherein any single frame
  1366.  *             does not exceed 10000 bytes.  If the frame rate is 15 FPS,
  1367.  *             the resultant data rate will not exceed 150000 bytes per
  1368.  *             second.  Note the difference between this case and example 1
  1369.  *             where individual frames may exceed 10000 bytes (the average)
  1370.  *             so long other frames in any 15 frame sequence are sufficiently
  1371.  *             smaller to satisfy the constraint within the constraint interval.
  1372.  *
  1373.  **********************************************/
  1374. typedef struct _MMVIDEOOPEN  {      /* mmvidopen */
  1375.    ULONG       ulStructLen;
  1376.    ULONG       ulQuality;
  1377.    ULONG       ulKeyFrameRate;
  1378.    ULONG       ulScale;
  1379.    ULONG       ulRate;
  1380.    ULONG       ulDataConstraint;
  1381.    ULONG       ulConstraintInterval;
  1382.    } MMVIDEOOPEN;
  1383. typedef MMVIDEOOPEN *PMMVIDEOOPEN;
  1384.  
  1385. #endif
  1386.  
  1387.  
  1388. typedef struct _MMAUDIOOPEN
  1389.   {
  1390.   ULONG   ulStructLen;         /* Length of struct */
  1391.   ULONG   ulSamplesPerBlock;   /* Samples in each block of compressed data */
  1392.   ULONG   ulBytesPerBlock;     /* uncompressed bytes in each block */
  1393.   ULONG   ulFlags;             /* Compression flags */
  1394.   ULONG   ulBestGuess;         /* Guess at avg. compression ratio */
  1395.   ULONG   ulBlockAlignment;    /* Block alignment of codec */
  1396.   ULONG   ulLength;            /* Length of the file */
  1397.   ULONG   hCodec;              /* Codec handle */
  1398.   PCODECPROC pfnCodec;
  1399.   } MMAUDIOOPEN;
  1400.  
  1401. typedef MMAUDIOOPEN    *PMMAUDIOOPEN;
  1402.  
  1403.  
  1404. /* defines for the ulFlags field of the BUFER_INFORMATION */
  1405.       BLOCK_ORIENTED        $00000001
  1406.       NON_LINEAR            $00000002
  1407.       INIT_CODEC            $00000004
  1408.  
  1409.  
  1410.  
  1411. /**********************************************
  1412.  *
  1413.  * CODECOPEN - CODEC open structure
  1414.  *
  1415.  **********************************************/
  1416. typedef struct _CODECOPEN  {        /* codecopen */
  1417.    ULONG       ulFlags;             /* flags & events - Refer to ulCapsFlags in CODECINIFILEINFO */
  1418.    PVOID       pControlHdr;         /* control header - (codec specific) */
  1419.    PVOID       pSrcHdr;             /* source header - Ptr CODECVIDEOHEADER */
  1420.    PVOID       pDstHdr;             /* destination header - Ptr CODECVIDEOHEADER */
  1421.    PVOID       pOtherInfo;          /* other information - Ptr MMVIDEOOPEN/MMAUDIOOPEN */
  1422.    } CODECOPEN;
  1423. typedef CODECOPEN *PCODECOPEN;
  1424.  
  1425.       VALID_CODECOPEN_INPUTFLAGS   (CODEC_DECOMPRESS |       \
  1426.                                       CODEC_WINDOW_CLIPPING |  \
  1427.                                       CODEC_PALETTE_TRANS |    \
  1428.                                       CODEC_SELFHEAL |         \
  1429.                                       CODEC_SCALE_PEL_DOUBLE | \
  1430.                                       CODEC_SCALE_PEL_HALVED | \
  1431.                                       CODEC_SCALE_CONTINUOUS | \
  1432.                                       CODEC_MULAPERTURE |      \
  1433.                                       CODEC_HARDWARE |         \
  1434.                                       CODEC_DIRECT_DISPLAY)
  1435.  
  1436.  
  1437. #ifdef INCL_AUDIO_CODEC
  1438.  
  1439.  
  1440. /* Stream handler communication */
  1441.  
  1442. typedef struct _AUDIO_CODEC_INFO
  1443.   {
  1444.   ULONG   ulStructLen;         /* Length of struct */
  1445.   ULONG   ulBytesPerBlock;     /* uncompressed bytes in each block */
  1446.   ULONG   ulBlockAlignment;    /* Block alignment of codec */
  1447.   ULONG   hCodec;              /* Codec handle */
  1448.   PCODECPROC  pfnCodec;
  1449. /*  LONG (* APIENTRY pfnCodec) (PVOID, SHORT, LONG, LONG); */
  1450.   } AUDIO_CODEC_INFO;
  1451.  
  1452.        AUDIO_CODEC_INF    1000
  1453.  
  1454. #endif
  1455.  
  1456. /**********************************************
  1457.  *
  1458.  * MMCOMPRESS - Compress structure
  1459.  *
  1460.  **********************************************/
  1461. typedef struct _MMCOMPRESS  {     /* mmcomp */
  1462.    ULONG       ulStructLen;       /* length of this structure */
  1463.    ULONG       ulFlags;           /* command and status flags */
  1464.    ULONG       ulSrcBufLen;       /* source buffer size */
  1465.    PVOID       pSrcBuf;           /* source buffer */
  1466.    ULONG       ulDstBufLen;       /* destination buffer length */
  1467.    PVOID       pDstBuf;           /* destination buffer */
  1468.    PVOID       pRunTimeInfo;      /* control information */
  1469.    } MMCOMPRESS;
  1470. typedef MMCOMPRESS *PMMCOMPRESS;
  1471.  
  1472. /* ulFlags Input values for MMCOMPRESS structure:                */
  1473. /* Note:  MMIO_IS_KEY_FRAME and MMIO_IS_PALETTE are defined      */
  1474. /* below, but are listed here for information purposes only.     */
  1475. /* MMIO_IS_KEY_FRAME         This bit is set by the application  */
  1476. /*                           to instruct the IOProc to compress  */
  1477. /*                           the pSrcBuf into a key or reference */
  1478. /*                           frame.  If the bit is not set, a    */
  1479. /*                           delta frame is compressed.          */
  1480. /* MMIO_IS_PALETTE           A video palette is provided.  This  */
  1481. /*                           is set by the application.          */
  1482.  
  1483.  
  1484. /**********************************************
  1485.  *
  1486.  * MMVIDEOCOMPRESS - Video Compress structure
  1487.  *
  1488.  **********************************************/
  1489. #ifndef INCL_AUDIO_CODEC_ONLY
  1490.  
  1491. typedef struct _MMVIDEOCOMPRESS { /* mmvidcomp */
  1492.    ULONG       ulStructLen;       /* Structure length */
  1493.    GENPAL      genpalVideo;       /* Video stream palette */
  1494.    PVOID       pControlHdr;       /* control header (codec specific) */
  1495.    } MMVIDEOCOMPRESS;
  1496. typedef MMVIDEOCOMPRESS *PMMVIDEOCOMPRESS;
  1497.  
  1498. #endif
  1499.  
  1500.  
  1501. #ifdef INCL_AUDIO_CODEC
  1502.  
  1503.         START_DECOMPRESSION     $00000001
  1504.         CONTINUE_DECOMPRESSION  $00000002
  1505.         START_SEEK              $00000004
  1506.         CONTINUE_SEEK           $00000008
  1507.  
  1508. #endif
  1509.  
  1510. /**********************************************
  1511.  *
  1512.  * MMDECOMPRESS - Decompress Structure
  1513.  *
  1514.  **********************************************/
  1515. typedef struct _MMDECOMPRESS  {   /* mmdec */
  1516.    ULONG       ulStructLen;       /* length of this structure */
  1517.    ULONG       ulFlags;           /* command and status flags */
  1518.    ULONG       ulSrcBufLen;       /* source buffer size */
  1519.    PVOID       pSrcBuf;           /* source buffer */
  1520.    ULONG       ulDstBufLen;       /* destination buffer length */
  1521.    PVOID       pDstBuf;           /* destination buffer */
  1522.    PVOID       pRunTimeInfo;      /* control information Ptr to MMVIDEODECOMPRESS */
  1523.    } MMDECOMPRESS;
  1524. typedef MMDECOMPRESS *PMMDECOMPRESS;
  1525.  
  1526. /* ulFlags defines: */
  1527.       MMIO_DROP_DELTA_FRAME $0001L /* Input/Output - Tells the IOProc to drop the delta */
  1528.                                       /* frame if the pSrcBuf contains a delta */
  1529.                                       /* frame.  On return, the bit is reset */
  1530.                                       /* if the delta frame is dropped. */
  1531.       MMIO_IS_KEY_FRAME     $0002L /* Output - This bit is set by the IOProc when */
  1532.                                       /* the data contained in the pSrcBuf is */
  1533.                                       /* a key or reference frame. */
  1534.       MMIO_IS_PALETTE       $0004L /* Output - A video palette has been found. */
  1535.                                       /* This is set by the IOProc. */
  1536.       MMIO_PALETTE_CHANGE   $0008L /* Input - The physical palette has been changed */
  1537.                                       /* in...  This is set by the application. */
  1538.       MMIO_ORIGIN_LOWERLEFT $0010L /* Input - The video frame origin */
  1539.       MMIO_RECTL_CHANGE     $0020L /* Input - The valid rectl list has changed. */
  1540.       MMIO_ORIGIN_UPPERLEFT $0040L /* Input - The video frame origin */
  1541.       MMIO_DROP_FRAME_DECODE $0080L /* Input - Tells the IOProc to drop decoding  */
  1542.       MMIO_HIGH_QUALITY      $0100L /* Input - Tells Codec to render best */
  1543.                                        /* quality image - not time critical */
  1544.       MMIO_IGNORE_CLIPPING   $0200L /* Ignore clipping rectangles used for bitmap capture */
  1545.                                        /* high performance */
  1546.       MMIO_OUTPUT_FULL_IMAGE $0400L /* Output a complete image on decompress, even if this*/
  1547.                                        /* is a delta frame */
  1548.                                       /* of the frame.                         */
  1549.  
  1550.       VALID_DECOMPRESS_INPUTFLAGS   (MMIO_DROP_DELTA_FRAME | \
  1551.                                        MMIO_PALETTE_CHANGE |   \
  1552.                                        MMIO_ORIGIN_LOWERLEFT | \
  1553.                                        MMIO_RECTL_CHANGE |     \
  1554.                                        MMIO_DROP_FRAME_DECODE | \
  1555.                                        MMIO_ORIGIN_UPPERLEFT | \
  1556.                                        MMIO_HIGH_QUALITY | \
  1557.                                        MMIO_IGNORE_CLIPPING | \
  1558.                                        MMIO_OUTPUT_FULL_IMAGE)
  1559.  
  1560.  
  1561. #ifdef INCL_AUDIO_CODEC
  1562.  
  1563.         START_COMPRESSION     $00000001
  1564.         CONTINUE_COMPRESSION  $00000002
  1565.         SOURCE_UNUSED         $00000004
  1566.         TARGET_UNUSED         $00000008
  1567.  
  1568.  
  1569. #endif
  1570.  
  1571.  
  1572. /**********************************************
  1573.  *
  1574.  * MMVIDEODECOMPRESS - Video Decompress structure
  1575.  *
  1576.  **********************************************/
  1577. #ifndef INCL_AUDIO_CODEC_ONLY
  1578. typedef struct _MMVIDEODECOMPRESS {    /* mmviddec */
  1579.    ULONG       ulStructLen;            /* Structure length */
  1580.    ULONG       ulRectlCount;           /* Valid rectangle count - for clipping */
  1581.    PRECTL      prectl;                 /* Valid rectangle array - for clipping */
  1582.    ULONG       ulSkipLength;           /* Skipped line length */
  1583.    ULONG       ulDecodeLines;          /* Num of lines to decompress */
  1584.    GENPAL      genpalPhysical;         /* Physical palette */
  1585.    GENPAL      genpalVideo;            /* Video stream palette */
  1586.    RECTL       rectlSrc;               /* Source window rectangle */
  1587.    RECTL       rectlDst;               /* Destination window rectangle */
  1588.    ULONG       ulDeltaCount;           /* Number of remaining delta frames before the next I-Frame */
  1589.    ULONG       ulParm1;                /* Codec specific parm */
  1590.    ULONG       ulParm2;                /* Codec specific parm */
  1591.    ULONG       ulParm3;                /* Codec specific parm */
  1592.    ULONG       ulParm4;                /* Codec specific parm */
  1593.    } MMVIDEODECOMPRESS;
  1594. typedef MMVIDEODECOMPRESS *PMMVIDEODECOMPRESS;
  1595.  
  1596. #endif
  1597. /*************************************************
  1598.  *
  1599.  * RECORDTAB - Record table
  1600.  *
  1601.  * NOTE: This structure maps to ESRCBUFTAB in ssm.h
  1602.  *************************************************/
  1603. typedef struct _RECORDTAB {       /* recordtab */
  1604.    ULONG       ulReserved1;       /* reserved for system */
  1605.    PVOID       pRecord;           /* ptr to record in buffer */
  1606.    ULONG       ulLength;          /* length of record */
  1607.    ULONG       ulReserved2;       /* reserved for system */
  1608.    ULONG       ulReserved3;       /* reserved for system */
  1609.    ULONG       ulParm1;           /* Record specific data */
  1610.    ULONG       ulParm2;           /* Record specific data */
  1611.    } RECORDTAB;
  1612. typedef RECORDTAB FAR *PRECORDTAB;/* Ptr to a buffer entry  */
  1613.  
  1614.  
  1615. /***************************************************
  1616.  *
  1617.  * RECORDTABWRITE - Record table for video write
  1618.  *
  1619.  * NOTE: This structure maps to ETGTBUFTAB in ssm.h
  1620.  ***************************************************/
  1621. typedef struct _RECORDTABWRITE {       /* recordtab */
  1622.    PVOID       pRecord;           /* ptr to record in buffer */
  1623.    ULONG       ulReserved1;       /* reserved for system */
  1624.    ULONG       ulLength;          /* length of record */
  1625.    ULONG       ulReserved2;       /* reserved for system */
  1626.    ULONG       ulReserved3;       /* reserved for system */
  1627.    ULONG       ulParm1;           /* Record specific data */
  1628.    ULONG       ulParm2;           /* Record specific data */
  1629.    } RECORDTABWRITE;
  1630. typedef RECORDTABWRITE FAR *PRECORDTABWRITE;/* Ptr to a buffer entry  */
  1631.  
  1632.  
  1633. /* ulParm1 Return values for MULTITRACK_READ only:               */
  1634. /* Note:  MMIO_IS_KEY_FRAME and MMIO_IS_PALETTE are defined      */
  1635. /* above, but are listed here for information purposes only      */
  1636. /* as they are valid ulParm1 Return values for MULTITRACK_READ.  */
  1637. /* MMIO_IS_KEY_FRAME         Frame is a Key frame                */
  1638. /* MMIO_IS_PALETTE           Buffer contains a video palette     */
  1639.       MMIO_INVISIBLE_FRAME   $1000L    /* Indicates a invisible video frame */
  1640.       MMIO_NULL_FRAME        $2000L    /* Indicates a null video frame (zero length) */
  1641.  
  1642. /* ulParm2 Return values for MULTITRACK_READ only:               */
  1643. /*    This field contains the frame number for this video frame  */
  1644. /*    if this track is a video track.                            */
  1645.  
  1646.  
  1647.  
  1648. /* ulParm1 Input values for MULTITRACK_WRITE only:               */
  1649. /* Note:  MMIO_IS_KEY_FRAME and MMIO_IS_PALETTE are defined      */
  1650. /* above, but are listed here for information purposes only      */
  1651. /* as they are valid ulParm1 Input values for MULTITRACK_WRITE.  */
  1652. /* MMIO_IS_KEY_FRAME         Frame is a Key frame                */
  1653. /* MMIO_IS_PALETTE           Buffer contains a video palette     */
  1654.  
  1655. /* ulParm2 Input values for MULTITRACK_WRITE only:               */
  1656. /*    This field contains the number of null frames              */
  1657. /*    that should be inserted before this frame                  */
  1658. /*    (this recordtab entry).                                    */
  1659.  
  1660.  
  1661. /************************************************
  1662.  *
  1663.  *  TRACKMAP - This structure maps a track to
  1664.  *             a record table.
  1665.  *
  1666.  ************************************************/
  1667. typedef struct _TRACKMAP {        /* trackmap */
  1668.    ULONG       ulTrackID;         /* Input - track ID */
  1669.    ULONG       ulNumEntries;      /* Input - number of record entries */
  1670.    PRECORDTAB  pRecordTabList;    /* Input/Output - Ptr to a record table */
  1671.    } TRACKMAP;
  1672. typedef TRACKMAP *PTRACKMAP;      /* Ptr to a track map table entry */
  1673.  
  1674.  
  1675.  
  1676. #ifndef INCL_AUDIO_CODEC_ONLY
  1677.  
  1678. /**********************************************
  1679.  *
  1680.  * MMMULTITRACKREAD - Multiple Track Read
  1681.  *
  1682.  **********************************************/
  1683. typedef struct _MMMULTITRACKREAD  {   /* mtread */
  1684.    ULONG       ulLength;          /* Input - Size of buffer to read.  The IO should be performed on this size of  */
  1685.                                   /*          buffer.  The actual buffer size may be bigger and is given in the   */
  1686.                                   /*          ulBufferLength field below.  Video frames can span pBuffer+ulLength */
  1687.                                   /*          as long as the frame is less than the ulBufferLength in size.       */
  1688.                                   /*          The purpose of this is to break the IO reads into smaller sizes     */
  1689.                                   /*          while still allowing large frame sizes.                             */
  1690.    PVOID       pBuffer;           /* Input - ptr to read buffer           */
  1691.    ULONG       ulFlags;           /* Input/Output - read flags            */
  1692.    ULONG       ulNumTracks;       /* Input - number of track entries      */
  1693.    PTRACKMAP   pTrackMapList;     /* Input - ptr to track-to-record list  */
  1694. /* End of old MMMULTITRACKREAD structure */
  1695.    ULONG       ulBufferLength;    /* Input - Actual length of read buffer */
  1696.    ULONG       ulReserved;        /* Input - Reserved (must be 0)         */
  1697.    } MMMULTITRACKREAD;
  1698. typedef MMMULTITRACKREAD *PMMMULTITRACKREAD;
  1699.  
  1700. /* ulFlags Input Values: */
  1701.       MULTITRACKREAD_EXTENDED       $0004L /* Indicates that the new extended multitrack   */
  1702.                                               /* read structure is passed from caller instead */
  1703.                                               /* of the previous multitrack read structure.   */
  1704.  
  1705. /* ulFlags Return Values: */
  1706.       MULTITRACKREAD_NOTDONE        $0001L /* Read is not done.  Another read of the same        */
  1707.                                               /* buffer is necessary.  There were not enough record */
  1708.                                               /* entries in the record table passed to this api.    */
  1709.       MULTITRACKREAD_EOF            $0002L /* End of File.  Used because # bytes read may not    */
  1710.                                               /* match the length of the buffer in cases of a       */
  1711.                                               /* record that spans in the next buffer.              */
  1712.  
  1713.  
  1714. /**********************************************
  1715.  *
  1716.  * MMMULTITRACKWRITE - Multiple Track Write
  1717.  *
  1718.  **********************************************/
  1719. typedef struct _MMMULTITRACKWRITE  {   /* mtwrite */
  1720.    ULONG       ulNumTracks;       /* Input - number of track entries     */
  1721.    PTRACKMAP   pTrackMapList;     /* Input - ptr to track-to-record list */
  1722.    ULONG       ulFlags;           /* Input - write flags (Default = 0)   */
  1723.    ULONG       ulReserved;        /* Input - Reserved (must be 0)        */
  1724.    } MMMULTITRACKWRITE;
  1725. typedef MMMULTITRACKWRITE *PMMMULTITRACKWRITE;
  1726.  
  1727. /* ulFlags Input Values: */
  1728.       MULTITRACKWRITE_MERGE        $0001L /* Attempt to interleave the data on the write. */
  1729.                                              /* The default (without this flag set) is to    */
  1730.                                              /* write all records for each track then write  */
  1731.                                              /* all records of the next track and so on.     */
  1732.  
  1733. *)
  1734. TYPE
  1735.     PMMMOVIEHEADER=^MMMOVIEHEADER;
  1736.     MMMOVIEHEADER=RECORD
  1737.                         ulStructLen:LONGWORD;
  1738.                         ulContentType:LONGWORD;
  1739.                         ulMediaType:LONGWORD;
  1740.                         ulMovieCapsFlags:LONGWORD;
  1741.                         ulMaxBytesPerSec:LONGWORD;
  1742.                         ulPaddingGranularity:LONGWORD;
  1743.                         ulSuggestedBufferSize:LONGWORD;
  1744.                         ulStart:LONGWORD;
  1745.                         ulLength:LONGWORD;
  1746.                         ulNextTrackID:LONGWORD;
  1747.                         ulNumEntries:LONGWORD;
  1748.                         pmmTrackInfoList:PMMTRACKINFO;
  1749.                         pszMovieTitle:PChar;
  1750.                         ulCountry:LONGWORD;
  1751.                         ulCodePage:LONGWORD;
  1752.                         ulAvgBytesPerSec:LONGWORD;
  1753.    END;
  1754.  
  1755. CONST
  1756.        MOVIE_HAS_VIDEO         =$0001;
  1757.        MOVIE_HAS_AUDIO         =$0002;
  1758.        MOVIE_CAN_SEEK          =$0004;
  1759.        MOVIE_CAN_SCAN          =$0008;
  1760.        MOVIE_HAS_COPYRIGHT     =$0010;
  1761.        MOVIE_WAS_CAPTUREFILE   =$0020;
  1762.  
  1763. TYPE
  1764.     PMMVIDEOHEADER=^MMVIDEOHEADER;
  1765.     MMVIDEOHEADER=RECORD
  1766.                         ulStructLen:LONGWORD;
  1767.                         ulContentType:LONGWORD;
  1768.                         ulMediaType:LONGWORD;
  1769.                         ulVideoCapsFlags:LONGWORD;
  1770.                         ulWidth:LONGWORD;
  1771.                         ulHeight:LONGWORD;
  1772.                         ulScale:LONGWORD;
  1773.                         ulRate:LONGWORD;
  1774.                         ulStart:LONGWORD;
  1775.                         ulLength:LONGWORD;
  1776.                         ulTotalFrames:LONGWORD;
  1777.                         ulInitialFrames:LONGWORD;
  1778.                         mmtimePerFrame:MMTIME;
  1779.                         ulSuggestedBufferSize:LONGWORD;
  1780.                         genpalVideo:GENPAL;
  1781.                         pmmXDIBHeader:PMMXDIBHEADER;
  1782.     END;
  1783.  
  1784. CONST
  1785.       MMIO_VIDEO_UNKNOWN          =$00000000;
  1786.       MMIO_VIDEO_DATA             =$00000001;
  1787.  
  1788.       MCI_TRUE                    =    1;
  1789.       MCI_FALSE                   =    0;
  1790.  
  1791.       MCI_OPEN                    =    1;
  1792.       MCI_CLOSE                   =    2;
  1793.       MCI_ESCAPE                  =    3;
  1794.       MCI_PLAY                    =    4;
  1795.       MCI_SEEK                    =    5;
  1796.       MCI_STOP                    =    6;
  1797.       MCI_PAUSE                   =    7;
  1798.       MCI_INFO                    =    8;
  1799.       MCI_GETDEVCAPS              =    9;
  1800.       MCI_STATUS                  =    10;
  1801.       MCI_SPIN                    =    11;
  1802.       MCI_SET                     =    12;
  1803.       MCI_STEP                    =    13;
  1804.       MCI_RECORD                  =    14;
  1805.       MCI_SYSINFO                 =    15;
  1806.       MCI_SAVE                    =    16;
  1807.       MCI_CUE                     =    17;
  1808.       MCI_UPDATE                  =    18;
  1809.       MCI_SET_CUEPOINT            =    19;
  1810.       MCI_SET_POSITION_ADVISE     =    20;
  1811.       MCI_SET_SYNC_OFFSET         =    21;
  1812.       MCI_LOAD                    =    22;
  1813.       MCI_ACQUIREDEVICE           =    23;
  1814.       MCI_RELEASEDEVICE           =    24;
  1815.       MCI_MASTERAUDIO             =    25;
  1816.       MCI_GETTOC                  =    26;
  1817.       MCI_DEVICESETTINGS          =    27;
  1818.       MCI_CONNECTOR               =    28;
  1819.       MCI_RESUME                  =    29;
  1820.       MCI_CONNECTORINFO           =    31;
  1821.       MCI_DEFAULT_CONNECTION      =    32;
  1822.       MCI_CONNECTION              =    33;
  1823.       MCI_GROUP                   =    34;
  1824.  
  1825.       MCI_CAPTURE                 =    40;
  1826.       MCI_FREEZE                  =    41;
  1827.       MCI_GETIMAGEBUFFER          =    42;
  1828.       MCI_GETIMAGEPALETTE         =    43;
  1829.       MCI_PUT                     =    44;
  1830.       MCI_REALIZE                 =    45;
  1831.       MCI_REWIND                  =    46;
  1832.       MCI_RESTORE                 =    47;
  1833.       MCI_SETIMAGEBUFFER          =    48;
  1834.       MCI_SETIMAGEPALETTE         =    49;
  1835.       MCI_UNFREEZE                =    50;
  1836.       MCI_WHERE                   =    51;
  1837.       MCI_WINDOW                  =    52;
  1838.  
  1839.       MCI_DELETE                  =    53;
  1840.       MCI_CUT                     =    54;
  1841.       MCI_PASTE                   =    55;
  1842.       MCI_COPY                    =    56;
  1843.       MCI_REDO                    =    57;
  1844.       MCI_UNDO                    =    58;
  1845.       MCI_MIXNOTIFY               =    59;
  1846.       MCI_SETTUNER                =    60;
  1847.       MCI_MAX_COMMAND             =    60;
  1848.  
  1849. (*
  1850.       RECT                            ULONG
  1851.       HDCT                            ULONG
  1852.  
  1853.       MCI_USER_MESSAGES               2000
  1854.  
  1855. /*********************************************************************/
  1856. /* Special Device ID for "all"                                       */
  1857. /*********************************************************************/
  1858.       MCI_ALL_DEVICE_ID               $FFFF
  1859.  
  1860. /*********************************************************************/
  1861. /* MCI implementation limits                                         */
  1862. /*********************************************************************/
  1863.       MAX_DEVICE_NAME                 20
  1864.       MAX_ALIAS_NAME                  20
  1865.       MAX_PRODINFO                    40
  1866.       MAX_EXTENSION_NAME              4
  1867.       MAX_DEV_PARAMS                  128
  1868.       MAX_VERSION_NUMBER              6
  1869.       MAX_PDD_NAME                    9
  1870.       MAX_DLL_NAME                    260
  1871.       MAX_CLASSES                     10
  1872.       MAX_CONNECTORS                  10
  1873.       MAX_EXTENSIONS                  25
  1874.       MAX_TYPEBUFFER                  256
  1875.  
  1876. #ifdef INCL_32
  1877. /*********************************************************************/
  1878. /* MCI Device Type Constants                                         */
  1879. /*********************************************************************/
  1880.       MCI_DEVTYPE_VIDEOTAPE           1
  1881.       MCI_DEVTYPE_VIDEODISC           2
  1882.       MCI_DEVTYPE_CD_AUDIO            3
  1883.       MCI_DEVTYPE_DAT                 4
  1884.       MCI_DEVTYPE_AUDIO_TAPE          5
  1885.       MCI_DEVTYPE_OTHER               6
  1886.       MCI_DEVTYPE_WAVEFORM_AUDIO      7
  1887.       MCI_DEVTYPE_SEQUENCER           8
  1888.       MCI_DEVTYPE_AUDIO_AMPMIX        9
  1889.       MCI_DEVTYPE_OVERLAY             10
  1890.       MCI_DEVTYPE_ANIMATION           11
  1891.       MCI_DEVTYPE_DIGITAL_VIDEO       12
  1892.       MCI_DEVTYPE_SPEAKER             13
  1893.       MCI_DEVTYPE_HEADPHONE           14
  1894.       MCI_DEVTYPE_MICROPHONE          15
  1895.       MCI_DEVTYPE_MONITOR             16
  1896.       MCI_DEVTYPE_CDXA                17
  1897.  
  1898. /*********************************************************************/
  1899. /* MCI Device Type Names                                             */
  1900. /*********************************************************************/
  1901.       MCI_DEVTYPE_VIDEOTAPE_NAME          "Videotape"
  1902.       MCI_DEVTYPE_VIDEODISC_NAME          "Videodisc"
  1903.       MCI_DEVTYPE_CD_AUDIO_NAME           "CDaudio"
  1904.       MCI_DEVTYPE_DAT_NAME                "DAT"
  1905.       MCI_DEVTYPE_AUDIO_TAPE_NAME         "Audiotape"
  1906.       MCI_DEVTYPE_OTHER_NAME              "Other"
  1907.       MCI_DEVTYPE_WAVEFORM_AUDIO_NAME     "Waveaudio"
  1908.       MCI_DEVTYPE_SEQUENCER_NAME          "Sequencer"
  1909.       MCI_DEVTYPE_AUDIO_AMPMIX_NAME       "Ampmix"
  1910.       MCI_DEVTYPE_OVERLAY_NAME            "Overlay"
  1911.       MCI_DEVTYPE_ANIMATION_NAME          "Animation"
  1912.       MCI_DEVTYPE_DIGITAL_VIDEO_NAME      "Digitalvideo"
  1913.       MCI_DEVTYPE_SPEAKER_NAME            "Speaker"
  1914.       MCI_DEVTYPE_HEADPHONE_NAME          "Headphone"
  1915.       MCI_DEVTYPE_MICROPHONE_NAME         "Microphone"
  1916.       MCI_DEVTYPE_MONITOR_NAME            "Monitor"
  1917.       MCI_DEVTYPE_CDXA_NAME               "CDXA"
  1918.  
  1919.       MCI_MAX_SYSTEM_DEVICE_NAMES         17
  1920.  
  1921. #endif                       /* INCL_32 */
  1922.  
  1923. /*********************************************************************/
  1924. /* Getdevcaps, set, and status item base values                      */
  1925. /*********************************************************************/
  1926.  
  1927.       MCI_AMP_ITEM_BASE                   $00001000L
  1928.       MCI_CD_ITEM_BASE                    $00002000L
  1929.       MCI_CDXA_ITEM_BASE                  $00003000L
  1930.       MCI_VD_ITEM_BASE                    $00004000L
  1931.       MCI_SEQ_ITEM_BASE                   $00005000L
  1932.       MCI_WAVE_ITEM_BASE                  $00006000L
  1933.       MCI_VID_ITEM_BASE                   $00007000L
  1934.       MCI_DGV_ITEM_BASE                   $00008000L
  1935.       MCI_OVLY_ITEM_BASE                  $00009000L
  1936. *)
  1937. CONST
  1938.       MCI_NOTIFY_SUCCESSFUL          =     $0000;
  1939.       MCI_NOTIFY_SUPERSEDED          =     $0001;
  1940.       MCI_NOTIFY_ABORTED             =     $0002;
  1941.       MCI_NOTIFY_ERROR               =     $0003;
  1942.  
  1943. CONST
  1944.       MM_MCINOTIFY                   =     $0500;
  1945.       MM_MCIPASSDEVICE               =     $0501;
  1946.       MM_MCIPOSITIONCHANGE           =     $0502;
  1947.       MM_MCICUEPOINT                 =     $0503;
  1948.       MM_MCIPLAYLISTMESSAGE          =     $0504;
  1949.       MM_MCIEVENT                    =     $0505;
  1950.       MM_MCISYNCH                    =     $0506;
  1951.  
  1952.       MCI_LOSING_USE                 =     $00000001;
  1953.       MCI_GAINING_USE                =     $00000002;
  1954.  
  1955.       MCI_NOTIFY                     =     $00000001;
  1956.       MCI_WAIT                       =     $00000002;
  1957.       MCI_FROM                       =     $00000004;
  1958.       MCI_TO                         =     $00000008;
  1959.       MCI_MILLISECONDS               =     $00000010;
  1960.       MCI_TRACK                      =     $00000020;
  1961.       MCI_OVER                       =     $00000040;
  1962.       MCI_TEST                       =     $00000080;
  1963.       MCI_TO_BUFFER                  =     $00000100;
  1964.       MCI_FROM_BUFFER                =     $00000200;
  1965.       MCI_CONVERT_FORMAT             =     $00000400;
  1966.  
  1967.  
  1968.       MCI_FORMAT_MILLISECONDS        =     $00000001;
  1969.       MCI_FORMAT_MMTIME              =     $00000002;
  1970.       MCI_FORMAT_MSF                 =     $00000005;
  1971.       MCI_FORMAT_TMSF                =     $00000006;
  1972.       MCI_FORMAT_CHAPTERS            =     $00000007;
  1973.       MCI_FORMAT_FRAMES              =     $00000008;
  1974.       MCI_FORMAT_HMS                 =     $00000009;
  1975.       MCI_FORMAT_TRACKS              =     $0000000A;
  1976.       MCI_FORMAT_BYTES               =     $0000000B;
  1977.       MCI_FORMAT_SAMPLES             =     $0000000C;
  1978.       MCI_FORMAT_HMSF                =     $0000000D;
  1979.       MCI_FORMAT_SET_SMPTE_24        =     $0000000E;
  1980.       MCI_FORMAT_SET_SMPTE_25        =     $0000000F;
  1981.       MCI_FORMAT_SET_SMPTE_30        =     $00000010;
  1982.       MCI_FORMAT_SET_SMPTE_30DROP    =     $00000011;
  1983.       MCI_FORMAT_SET_SONGPTR         =     $00000012;
  1984.       MCI_FORMAT_USEC                =     $00000013;
  1985.  
  1986.       MCI_FORMAT_PERCENTAGE          =     $00000003;
  1987.       MCI_FORMAT_FPS                 =     $00000004;
  1988.  
  1989. (*
  1990. /*********************************************************************/
  1991. /*                                                                   */
  1992. /*  Time format conversions macros                                   */
  1993. /*                                                                   */
  1994. /*********************************************************************/
  1995.       MSECTOMM(value)      (((value) > ($FFFFFFFF /3)) ? 0L : \
  1996.                               ((value) * 3))
  1997.  
  1998.       MSECFROMMM(value)    (((value)+1) / 3)
  1999.  
  2000.       REDBOOKTOMM(value)   ((((value) & $000000FF) * 60 * 3000) + \
  2001.                               (((value) & $0000FF00) / $100 * 3000) + \
  2002.                               (((value) & $00FF0000) / $10000 * 3000/75))
  2003.  
  2004.       FPS24TOMM(value) ((((value) & $000000FF) * 60 * 60 * 3000) + \
  2005.                           (((value) & $0000FF00) / $100 * 60 * 3000) + \
  2006.                           (((value) & $00FF0000) / $10000 * 3000) + \
  2007.                           (((value) & $FF000000) / $1000000 * 3000/24))
  2008.  
  2009.       FPS25TOMM(value) ((((value) & $000000FF) * 60 * 60 * 3000) + \
  2010.                           (((value) & $0000FF00) / $100 * 60 * 3000) + \
  2011.                           (((value) & $00FF0000) / $10000 * 3000) + \
  2012.                           (((value) & $FF000000) / $1000000 * 3000/25))
  2013.  
  2014.       FPS30TOMM(value) ((((value) & $000000FF) * 60 * 60 * 3000) + \
  2015.                           (((value) & $0000FF00) / $100 * 60 * 3000) + \
  2016.                           (((value) & $00FF0000) / $10000 * 3000) + \
  2017.                           (((value) & $FF000000) / $1000000 * 3000/30))
  2018.  
  2019.       HMSTOMM(value)   ((((value) & $000000FF) * 60 * 60 * 3000) + \
  2020.                           (((value) & $0000FF00) / $100 * 60 * 3000) + \
  2021.                           (((value) & $00FF0000) / $10000 * 3000))
  2022.  
  2023.  
  2024.   /* The +20 is used for rounding purposes.  It is derived by:           */
  2025.   /*   1/2 * ((300 MMTIME/SEC / (75 FRAMES/SEC)) = 20 MMTIME/HALF-FRAME  */
  2026.       REDBOOKFROMMM(value) ((((value)+20) >= $100*60*3000) ? 0L : \
  2027.                               ((((value)+20) / (60*3000)) + \
  2028.                                (((value)+20) % (60*3000) / 3000 << 8) + \
  2029.                                (((value)+20) / (3000/75) % 75 << 16)))
  2030.  
  2031.       FPS24FROMMM(value) ((((value)+63) >= $100*60*60*3000) ? 0L : \
  2032.                         (((((((value)+63) % 3000)/(3000/24)) << 24) & $FF000000) | \
  2033.                          ((((((value)+63) / 3000) % 60) << 16) & $00FF0000)      | \
  2034.                         (((((((value)+63) / 3000) / 60) % 60) << 8) & $0000FF00) | \
  2035.                          ((((((value)+63) / 3000) / 60) / 60)  & $000000FF)))
  2036.  
  2037.       FPS25FROMMM(value) ((((value)+60) >= $100*60*60*3000) ? 0L : \
  2038.                         (((((((value)+60) % 3000)/(3000/25)) << 24) & $FF000000) | \
  2039.                          ((((((value)+60) / 3000) % 60) << 16) & $00FF0000)      | \
  2040.                         (((((((value)+60) / 3000) / 60) % 60) << 8) & $0000FF00) | \
  2041.                          ((((((value)+60) / 3000) / 60) / 60)  & $000000FF)))
  2042.  
  2043.       FPS30FROMMM(value) ((((value)+50) >= $100*60*60*3000) ? 0L : \
  2044.                         (((((((value)+50) % 3000)/(3000/30)) << 24) & $FF000000) | \
  2045.                          ((((((value)+50) / 3000) % 60) << 16) & $00FF0000)      | \
  2046.                         (((((((value)+50) / 3000) / 60) % 60) << 8) & $0000FF00) | \
  2047.                          ((((((value)+50) / 3000) / 60) / 60)  & $000000FF)))
  2048.  
  2049.       HMSFROMMM(value) ((((value)+50) >= $100*60*60*3000) ? 0L : \
  2050.                         (((((((value)+50) / 3000) % 60) << 16) & $00FF0000)      | \
  2051.                         (((((((value)+50) / 3000) / 60) % 60) << 8) & $0000FF00) | \
  2052.                          ((((((value)+50) / 3000) / 60) / 60)  & $000000FF)))
  2053.  
  2054.       TMSF_TRACK(time)     (*(BYTE * )(&(time)))
  2055.       TMSF_MINUTE(time)    (*((BYTE * )(&(time))+1))
  2056.       TMSF_SECOND(time)    (*((BYTE * )(&(time))+2))
  2057.       TMSF_FRAME(time)     (*((BYTE * )(&(time))+3))
  2058.       MSF_MINUTE(time)     (*(BYTE * )(&(time)))
  2059.       MSF_SECOND(time)     (*((BYTE * )(&(time))+1))
  2060.       MSF_FRAME(time)      (*((BYTE * )(&(time))+2))
  2061.  
  2062. /*********************************************************************/
  2063. /*                                                                   */
  2064. /*  BYTE ACCESS WITH A DWORD MACROS                                  */
  2065. /*                                                                   */
  2066. /*********************************************************************/
  2067.       ULONG_LWLB(ul)  (*(BYTE * )((ULONG * )(&ul)))       /* Low  Word Low Byte  */
  2068.       ULONG_LWHB(ul)  (*((BYTE * )((ULONG * )(&ul))+1))   /* Low  Word High Byte */
  2069.       ULONG_HWLB(ul)  (*((BYTE * )((ULONG * )(&ul))+2))   /* High Word Low Byte  */
  2070.       ULONG_HWHB(ul)  (*((BYTE * )((ULONG * )(&ul))+3))   /* High Word High Byte */
  2071.       ULONG_LOWD(ul)  (*(USHORT * )((ULONG * )(&ul)))     /* Low  Word           */
  2072.       ULONG_HIWD(ul)  (*((USHORT * )((ULONG * )(&ul))+1)) /* High Word           */
  2073.  
  2074. #ifdef INCL_32
  2075.  
  2076. #pragma pack(1)
  2077.  
  2078. /*********************************************************************/
  2079. /* parameters for default command messages with empty parameter lists*/
  2080. /*********************************************************************/
  2081. typedef struct _MCI_GENERIC_PARMS {
  2082.     HWND   hwndCallback;      /* PM window handle for MCI notify message */
  2083. } MCI_GENERIC_PARMS;
  2084. typedef MCI_GENERIC_PARMS   *PMCI_GENERIC_PARMS;
  2085.  
  2086.  
  2087. /*********************************************************************/
  2088. /* flags for the MCI_ACQUIREDEVICE message                           */
  2089. /*     $0000$00 are reserved for MCI_ACQUIREDEVICE flags           */
  2090. /*********************************************************************/
  2091.       MCI_EXCLUSIVE                       $00000100L
  2092.       MCI_EXCLUSIVE_INSTANCE              $00000200L
  2093.       MCI_ACQUIRE_QUEUE                   $00000400L
  2094.  
  2095.  
  2096. /*********************************************************************/
  2097. /* flags for the MCI_CAPTURE message                                 */
  2098. /*     $000$X00 are reserved for MCI_CAPTURE flags                 */
  2099. /*     MCI_CONVERT is used by MCI_GETIMAGEBUFFER, MCI_SETIMAGEBUFFER */
  2100. /*                            MCI_CAPTURE, and MCI_RESTORE           */
  2101. /*********************************************************************/
  2102.       MCI_CAPTURE_RECT                    $00000100L
  2103.       MCI_CONVERT                         $00001000L
  2104.  
  2105. /*********************************************************************/
  2106. /* parameter structure for the MCI_CAPTURE message                   */
  2107. /*********************************************************************/
  2108. typedef struct _MCI_CAPTURE_PARMS {
  2109.     HWND    hwndCallback;    /* PM window handle for MCI notify message  */
  2110.     RECTL   rect;            /* Rectangle array specifying the area to   */
  2111.                              /* be captured                              */
  2112. } MCI_CAPTURE_PARMS;
  2113. typedef MCI_CAPTURE_PARMS   *PMCI_CAPTURE_PARMS;
  2114.  
  2115.  
  2116. /*********************************************************************/
  2117. /* flags for MCI_CONNECTOR and MCI_CONNECTION messages               */
  2118. /*********************************************************************/
  2119.       MCI_ENABLE_CONNECTOR                $00000100L
  2120.       MCI_DISABLE_CONNECTOR               $00000200L
  2121.       MCI_QUERY_CONNECTOR_STATUS          $00000400L
  2122.       MCI_CONNECTOR_TYPE                  $00000800L
  2123.       MCI_CONNECTOR_INDEX                 $00001000L
  2124.       MCI_TO_CONNECTOR_INDEX              $00002000L
  2125.       MCI_TO_CONNECTOR_TYPE               $00004000L
  2126.       MCI_QUERY_CONNECTION                $00008000L
  2127.       MCI_MAKE_CONNECTION                 $00010000L
  2128.       MCI_BREAK_CONNECTION                $00020000L
  2129.       MCI_ENUMERATE_CONNECTORS            $00040000L
  2130.       MCI_QUERY_CONNECTOR_TYPE            $00080000L
  2131.       MCI_QUERY_VALID_CONNECTION          $00100000L
  2132.       MCI_CONNECTOR_ALIAS                 $00200000L
  2133.  
  2134.  
  2135. /*********************************************************************/
  2136. /* Connector types                                                   */
  2137. /*********************************************************************/
  2138.       MCI_MIDI_STREAM_CONNECTOR           $00000001L
  2139.       MCI_CD_STREAM_CONNECTOR             $00000002L
  2140.       MCI_WAVE_STREAM_CONNECTOR           $00000003L
  2141.       MCI_AMP_STREAM_CONNECTOR            $00000004L
  2142.       MCI_XA_STREAM_CONNECTOR             $00000005L
  2143.       MCI_HEADPHONES_CONNECTOR            $00000006L
  2144.       MCI_SPEAKERS_CONNECTOR              $00000007L
  2145.       MCI_MICROPHONE_CONNECTOR            $00000008L
  2146.       MCI_LINE_IN_CONNECTOR               $00000009L
  2147.       MCI_LINE_OUT_CONNECTOR              $0000000aL
  2148.       MCI_VIDEO_IN_CONNECTOR              $0000000bL
  2149.       MCI_VIDEO_OUT_CONNECTOR             $0000000cL
  2150.       MCI_PHONE_SET_CONNECTOR             $0000000dL
  2151.       MCI_PHONE_LINE_CONNECTOR            $0000000eL
  2152.       MCI_AUDIO_IN_CONNECTOR              $0000000fL
  2153.       MCI_AUDIO_OUT_CONNECTOR             $00000010L
  2154.       MCI_UNIVERSAL_CONNECTOR             $00000011L
  2155.       MCI_INTERNAL_AUDIO_CONNECTOR        $00000012L
  2156.       MCI_MIDI_IN_CONNECTOR               $00000013L
  2157.       MCI_MIDI_OUT_CONNECTOR              $00000014L
  2158.       MCI_NULL_CONNECTOR                  $00000015L
  2159.  
  2160.  
  2161. /*********************************************************************/
  2162. /* parameter structure for the MCI_CONNECTION message                */
  2163. /*********************************************************************/
  2164. typedef struct _MCI_CONNECTION_PARMS {
  2165.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  2166.     ULONG   ulConnectorType; /* Connector type                          */
  2167.     ULONG   ulConnectorIndex;/* Connector index                         */
  2168.     PSZ     pszAlias;        /* Connection device alias                 */
  2169.     USHORT  usToDeviceID;    /* Connected to device ID                  */
  2170.     USHORT  usReserved0;     /* Reserved field                          */
  2171.     ULONG   ulReserved1;     /* Reserved field                          */
  2172.     ULONG   ulReserved2;     /* Reserved field                          */
  2173. } MCI_CONNECTION_PARMS;
  2174. typedef MCI_CONNECTION_PARMS   *PMCI_CONNECTION_PARMS;
  2175.  
  2176. /*********************************************************************/
  2177. /* parameter structure for the MCI_CONNECTOR message                 */
  2178. /*********************************************************************/
  2179. typedef struct _MCI_CONNECTOR_PARMS {
  2180.     HWND   hwndCallback;     /* PM window handle for MCI notify message    */
  2181.     ULONG  ulReturn;         /* Return information                         */
  2182.     ULONG  ulConnectorType;  /* If specified, ulConnectorIndex is relative */
  2183.                              /* to the specified connector type            */
  2184.     ULONG  ulConnectorIndex; /* Connector number                           */
  2185. } MCI_CONNECTOR_PARMS;
  2186. typedef MCI_CONNECTOR_PARMS   *PMCI_CONNECTOR_PARMS;
  2187.  
  2188. /*********************************************************************/
  2189. /* parameter structure for the MCI_CONNECTORINFO message             */
  2190. /*********************************************************************/
  2191. typedef struct _MCI_CONNECTORINFO_PARMS {
  2192.     HWND   hwndCallback;      /* PM window handle for MCI notify message    */
  2193.     ULONG  ulReturn;          /* Return information                         */
  2194.     ULONG  ulDeviceTypeID;    /* MCI device type                            */
  2195.     ULONG  ulConnectorType;   /* If specified, ulConnectorIndex is relative */
  2196.                               /* to the specified connector type            */
  2197.     ULONG  ulConnectorIndex;  /* Connector number                           */
  2198.     ULONG  ulToConnectorType; /* Connector type to test if                  */
  2199.                               /* MCI_QUERY_VALID_CONNECTION is specified    */
  2200. } MCI_CONNECTORINFO_PARMS;
  2201. typedef MCI_CONNECTORINFO_PARMS   *PMCI_CONNECTORINFO_PARMS;
  2202.  
  2203. /*********************************************************************/
  2204. /* flags for the MCI_CUE message                                     */
  2205. /*     $0000$00 are reserved for MCI_CUE flags                     */
  2206. /*********************************************************************/
  2207.       MCI_CUE_INPUT                       $00000100L
  2208.       MCI_CUE_OUTPUT                      $00000200L
  2209.  
  2210.     /*************************************************/
  2211.     /* Additional flags for Wave Audio for MCI_CUE   */
  2212.     /*************************************************/
  2213.       MCI_WAVE_INPUT                      $00001000L
  2214.       MCI_WAVE_OUTPUT                     $00002000L
  2215.  
  2216.  
  2217. /*********************************************************************/
  2218. /* parameter structure for the MCI_DEFAULT_CONNECTION message        */
  2219. /*********************************************************************/
  2220. typedef struct _MCI_DEFAULT_CONNECTION_PARMS  {
  2221.     HWND  hwndCallback;       /* PM window handle for MCI notify message    */
  2222.     PSZ   pszDevice;          /* Device name                                */
  2223.     ULONG ulConnectorType;    /* If specified, ulConnectorIndex is relative */
  2224.                               /* to the specified connector type            */
  2225.     ULONG ulConnectorIndex;   /* Connector number                           */
  2226.     PSZ   pszToDevice;        /* Return device name to which the connection */
  2227.                               /* exists                                     */
  2228.     ULONG ulToConnectorType;  /* Connector type                             */
  2229.     ULONG ulToConnectorIndex; /* Connector number                           */
  2230. } MCI_DEFAULT_CONNECTION_PARMS;
  2231. typedef MCI_DEFAULT_CONNECTION_PARMS    *PMCI_DEFAULT_CONNECTION_PARMS;
  2232.  
  2233. /*********************************************************************/
  2234. /* parameter structure for the MCI_DEVICESETTINGS message            */
  2235. /*********************************************************************/
  2236. typedef struct _MCI_DEVICESETTINGS_PARMS {
  2237.     HWND    hwndCallback;    /* PM window handle for MCI notify message    */
  2238.     HWND    hwndNotebook;    /* Hwhd to notebook window                    */
  2239.     USHORT  usDeviceType;    /* Device type                                */
  2240.     PSZ     pszDeviceName;   /* Device name                                */
  2241. } MCI_DEVICESETTINGS_PARMS;
  2242. typedef MCI_DEVICESETTINGS_PARMS   *PMCI_DEVICESETTINGS_PARMS;
  2243.  
  2244. /**********************************************************************/
  2245. /* parameter structure for the MCI_CUT / COPY / DELETE / UNDO / etc...*/
  2246. /**********************************************************************/
  2247. typedef struct _MCI_EDIT_PARMS {
  2248.     HWND    hwndCallback;    /* PM window handle for MCI notify message     */
  2249.     ULONG   ulStructLen;     /* Length of the Structure                     */
  2250.     ULONG   ulFrom;          /* Beginning Point of Range                    */
  2251.     ULONG   ulTo;            /* ending point of range                       */
  2252.     PVOID   pBuff;           /* user buffer                                 */
  2253.     ULONG   ulBufLen;        /* length of user buffer                       */
  2254.     PVOID   pHeader;         /* header which describes the buffer           */
  2255. } MCI_EDIT_PARMS;
  2256. typedef MCI_EDIT_PARMS   *PMCI_EDIT_PARMS;
  2257.  
  2258. /*********************************************************************/
  2259. /* flags and parameter structure for the MCI_ESCAPE message          */
  2260. /*     $0000$00 are reserved for MCI_ESCAPE flags                  */
  2261. /*********************************************************************/
  2262.       MCI_ESCAPE_STRING                   $00000100L
  2263.  
  2264. typedef struct _MCI_ESCAPE_PARMS {
  2265.     HWND    hwndCallback;    /* PM window handle for MCI notify message    */
  2266.     PSZ     pszCommand;      /* Command to send to the device              */
  2267. } MCI_ESCAPE_PARMS;
  2268. typedef MCI_ESCAPE_PARMS   *PMCI_ESCAPE_PARMS;
  2269.  
  2270. /*********************************************************************/
  2271. /* flags for the MCI_FREEZE message                                  */
  2272. /*     $000$X00 are reserved for MCI_FREEZE flags                  */
  2273. /*********************************************************************/
  2274.       MCI_OVLY_FREEZE_RECT                $00000100L
  2275.       MCI_OVLY_FREEZE_RECT_OUTSIDE        $00000200L
  2276.  
  2277. /*********************************************************************/
  2278. /* flags for the MCI_GETDEVCAPS message                              */
  2279. /*     $0$XXX00 are reserved for MCI_GETDEVCAPS flags              */
  2280. /*********************************************************************/
  2281.       MCI_GETDEVCAPS_MESSAGE              $00000100L
  2282.       MCI_GETDEVCAPS_ITEM                 $00000200L
  2283.       MCI_GETDEVCAPS_EXTENDED             $00000400L
  2284.  
  2285.    /*************************************************/
  2286.    /* General MCI_GETDEVCAPS item values            */
  2287.    /*************************************************/
  2288.       MCI_GETDEVCAPS_CAN_EJECT            $00000001L
  2289.       MCI_GETDEVCAPS_CAN_LOCKEJECT        $00000002L
  2290.       MCI_GETDEVCAPS_CAN_PLAY             $00000003L
  2291.       MCI_GETDEVCAPS_CAN_PROCESS_INTERNAL $00000004L
  2292.       MCI_GETDEVCAPS_CAN_RECORD           $00000005L
  2293.       MCI_GETDEVCAPS_CAN_RECORD_INSERT    $00000006L
  2294.       MCI_GETDEVCAPS_CAN_SAVE             $00000007L
  2295.       MCI_GETDEVCAPS_CAN_SETVOLUME        $00000008L
  2296.       MCI_GETDEVCAPS_CAN_STREAM           $00000009L
  2297.       MCI_GETDEVCAPS_DEVICE_TYPE          $0000000AL
  2298.       MCI_GETDEVCAPS_HAS_AUDIO            $0000000BL
  2299.       MCI_GETDEVCAPS_HAS_VIDEO            $0000000CL
  2300.       MCI_GETDEVCAPS_PREROLL_TIME         $0000000DL
  2301.       MCI_GETDEVCAPS_PREROLL_TYPE         $0000000EL
  2302.       MCI_GETDEVCAPS_USES_FILES           $0000000FL
  2303.       MCI_GETDEVCAPS_HAS_IMAGE            $00000010L
  2304.       MCI_GETDEVCAPS_WAVE_FORMAT          $00000011L
  2305.  
  2306.     /***********************************************/
  2307.     /* return ID's for videodisc MCI_GETDEVCAPS    */
  2308.     /***********************************************/
  2309.       MCI_VD_MEDIA_CLV                    $00000001L
  2310.       MCI_VD_MEDIA_CAV                    $00000002L
  2311.       MCI_VD_MEDIA_OTHER                  $00000003L
  2312.  
  2313.     /*************************************************/
  2314.     /* MCI_GETDEVCAPS item values for video devices  */
  2315.     /*************************************************/
  2316.       MCI_VID_GETDEVCAPS_CAN_STRETCH       MCI_VID_ITEM_BASE
  2317.       MCI_VID_GETDEVCAPS_CAN_DISTORT       (MCI_VID_ITEM_BASE+1)
  2318.       MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT    (MCI_VID_ITEM_BASE+2)
  2319.       MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT    (MCI_VID_ITEM_BASE+3)
  2320.       MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT    (MCI_VID_ITEM_BASE+4)
  2321.       MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT    (MCI_VID_ITEM_BASE+5)
  2322.       MCI_VID_GETDEVCAPS_MAX_WINDOWS       (MCI_VID_ITEM_BASE+6)
  2323.       MCI_VID_GETDEVCAPS_CAN_FREEZE        (MCI_VID_ITEM_BASE+7)
  2324.       MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS  (MCI_VID_ITEM_BASE+8)
  2325.  
  2326.       MCI_VID_GETDEVCAPS_CAN_REVERSE       (MCI_VID_ITEM_BASE+9)
  2327.       MCI_VID_GETDEVCAPS_FAST_RATE         (MCI_VID_ITEM_BASE+10)
  2328.       MCI_VID_GETDEVCAPS_SLOW_RATE         (MCI_VID_ITEM_BASE+11)
  2329.       MCI_VID_GETDEVCAPS_NORMAL_RATE       (MCI_VID_ITEM_BASE+12)
  2330.       MCI_VID_GETDEVCAPS_MINIMUM_RATE      (MCI_VID_ITEM_BASE+13)
  2331.       MCI_VID_GETDEVCAPS_MAXIMUM_RATE      (MCI_VID_ITEM_BASE+14)
  2332.  
  2333.     /*************************************************/
  2334.     /* MCI_GETDEVCAPS flag values for Videodisc      */
  2335.     /*************************************************/
  2336.       MCI_VD_GETDEVCAPS_CLV               $00000400L
  2337.       MCI_VD_GETDEVCAPS_CAV               $00000800L
  2338.  
  2339.     /*************************************************/
  2340.     /* MCI_GETDEVCAPS item values for Videodisc      */
  2341.     /*************************************************/
  2342.  
  2343.       MCI_VD_GETDEVCAPS_CAN_REVERSE       MCI_VID_GETDEVCAPS_CAN_REVERSE
  2344.       MCI_VD_GETDEVCAPS_FAST_RATE         MCI_VID_GETDEVCAPS_FAST_RATE
  2345.       MCI_VD_GETDEVCAPS_SLOW_RATE         MCI_VID_GETDEVCAPS_SLOW_RATE
  2346.       MCI_VD_GETDEVCAPS_NORMAL_RATE       MCI_VID_GETDEVCAPS_NORMAL_RATE
  2347.       MCI_VD_GETDEVCAPS_MINIMUM_RATE      MCI_VID_GETDEVCAPS_MINIMUM_RATE
  2348.       MCI_VD_GETDEVCAPS_MAXIMUM_RATE      MCI_VID_GETDEVCAPS_MAXIMUM_RATE
  2349.  
  2350.     /************************************************/
  2351.     /* MCI_GETDEVCAPS item values for Digital Video */
  2352.     /************************************************/
  2353.       MCI_DGV_GETDEVCAPS_CAN_REVERSE      MCI_VID_GETDEVCAPS_CAN_REVERSE
  2354.       MCI_DGV_GETDEVCAPS_CAN_STRETCH      MCI_VID_GETDEVCAPS_CAN_STRETCH
  2355.       MCI_DGV_GETDEVCAPS_CAN_DISTORT      MCI_VID_GETDEVCAPS_CAN_DISTORT
  2356.       MCI_DGV_GETDEVCAPS_FAST_RATE        MCI_VID_GETDEVCAPS_FAST_RATE
  2357.       MCI_DGV_GETDEVCAPS_SLOW_RATE        MCI_VID_GETDEVCAPS_SLOW_RATE
  2358.       MCI_DGV_GETDEVCAPS_NORMAL_RATE      MCI_VID_GETDEVCAPS_NORMAL_RATE
  2359.       MCI_DGV_GETDEVCAPS_MINIMUM_RATE     MCI_VID_GETDEVCAPS_MINIMUM_RATE
  2360.       MCI_DGV_GETDEVCAPS_MAXIMUM_RATE     MCI_VID_GETDEVCAPS_MAXIMUM_RATE
  2361.       MCI_DGV_GETDEVCAPS_VIDEO_X_EXTENT   MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT
  2362.       MCI_DGV_GETDEVCAPS_VIDEO_Y_EXTENT   MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT
  2363.       MCI_DGV_GETDEVCAPS_IMAGE_X_EXTENT   MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT
  2364.       MCI_DGV_GETDEVCAPS_IMAGE_Y_EXTENT   MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT
  2365.       MCI_DGV_GETDEVCAPS_MAX_WINDOWS      MCI_VID_GETDEVCAPS_MAX_WINDOWS
  2366.       MCI_DGV_GETDEVCAPS_OVERLAY_GRAPHICS MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS
  2367.       MCI_DGV_GETDEVCAPS_HAS_TUNER        (MCI_DGV_ITEM_BASE)
  2368.       MCI_DGV_GETDEVCAPS_HAS_TELETEX      (MCI_DGV_ITEM_BASE+1)
  2369.       MCI_DGV_GETDEVCAPS_HAS_AFC          (MCI_DGV_ITEM_BASE+2)
  2370.  
  2371.    /*************************************************/
  2372.    /* MCI_GETDEVCAPS item values for Video Overlay  */
  2373.    /*************************************************/
  2374.       MCI_OVLY_GETDEVCAPS_CAN_STRETCH     MCI_VID_GETDEVCAPS_CAN_STRETCH
  2375.       MCI_OVLY_GETDEVCAPS_CAN_DISTORT     MCI_VID_GETDEVCAPS_CAN_DISTORT
  2376.       MCI_OVLY_GETDEVCAPS_VIDEO_X_EXTENT  MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT
  2377.       MCI_OVLY_GETDEVCAPS_VIDEO_Y_EXTENT  MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT
  2378.       MCI_OVLY_GETDEVCAPS_IMAGE_X_EXTENT  MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT
  2379.       MCI_OVLY_GETDEVCAPS_IMAGE_Y_EXTENT  MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT
  2380.       MCI_OVLY_GETDEVCAPS_MAX_WINDOWS     MCI_VID_GETDEVCAPS_MAX_WINDOWS
  2381.       MCI_OVLY_GETDEVCAPS_CAN_FREEZE      MCI_VID_GETDEVCAPS_CAN_FREEZE
  2382.       MCI_OVLY_GETDEVCAPS_OVERLAY_GRAPHICS MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS
  2383.  
  2384.  
  2385.       MCI_PREROLL_NOTIFIED                $00000001L
  2386.       MCI_PREROLL_DETERMINISTIC           $00000002L
  2387.       MCI_PREROLL_NONE                    $00000003L
  2388.  
  2389. /*********************************************************************/
  2390. /* parameter structure for the MCI_GETDEVCAPS message                */
  2391. /*********************************************************************/
  2392. typedef struct _MCI_GETDEVCAPS_PARMS {
  2393.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  2394.     ULONG   ulReturn;        /* Return field                            */
  2395.     ULONG   ulItem;          /* Item field for GETDEVCAPS item to query */
  2396.     USHORT  usMessage;       /* Field to hold MCI message to query      */
  2397.     USHORT  usReserved0;     /* Reserved field                          */
  2398. } MCI_GETDEVCAPS_PARMS;
  2399. typedef MCI_GETDEVCAPS_PARMS   * PMCI_GETDEVCAPS_PARMS;
  2400.  
  2401. /*********************************************************************/
  2402. /* parameter structure for the MCI_WAVE_GETDEVCAPS                   */
  2403. /*********************************************************************/
  2404. typedef struct _MCI_WAVE_GETDEVCAPS_PARMS {
  2405.     HWND    hwndCallback;     /* PM window handle for MCI notify message */
  2406.     ULONG   ulReturn;         /* Return field                            */
  2407.     ULONG   ulItem;           /* Item field for GETDEVCAPS item to query */
  2408.     USHORT  usMessage;        /* Field to hold MCI message to query      */
  2409.     USHORT  usReserved0;      /* Reserved field                          */
  2410.     ULONG   ulLength;         /* Length of structure in ULONGS           */
  2411.     ULONG   ulBitsPerSample;  /* Number of Bits per Sample               */
  2412.     ULONG   ulFormatTag;      /* Format Tag                              */
  2413.     ULONG   ulSamplesPerSec;  /* Sampling Rate                           */
  2414.     ULONG   ulChannels;       /* Number of channels                      */
  2415.     ULONG   ulFormatMode;     /* Either MCI_RECORD or MCI_PLAY           */
  2416. } MCI_WAVE_GETDEVCAPS_PARMS;
  2417. typedef MCI_WAVE_GETDEVCAPS_PARMS   * PMCI_WAVE_GETDEVCAPS_PARMS;
  2418.  
  2419. /*********************************************************************/
  2420. /* potential values for the ulValue field of MCI_AMP_GETDEVCAPS  */
  2421. /*********************************************************************/
  2422.        MCI_AMP_CAN_SET_MONITOR           MCI_AMP_SET_MONITOR
  2423.        MCI_AMP_CAN_SET_BALANCE           MCI_AMP_SET_BALANCE
  2424.        MCI_AMP_CAN_SET_ALC               MCI_AMP_SET_ALC
  2425.        MCI_AMP_CAN_SET_MONITOR           MCI_AMP_SET_MONITOR
  2426.        MCI_AMP_CAN_SET_CROSSOVER         MCI_AMP_SET_CROSSOVER
  2427.        MCI_AMP_CAN_SET_LOUDNESS          MCI_AMP_SET_LOUDNESS
  2428.        MCI_AMP_CAN_SET_MUTE              MCI_AMP_SET_MUTE
  2429.        MCI_AMP_CAN_SET_REVERB            MCI_AMP_SET_REVERB
  2430.        MCI_AMP_CAN_SET_STEREOENHANCE     MCI_AMP_SET_STEREOENHANCE
  2431.        MCI_AMP_CAN_SET_CUSTOM1           MCI_AMP_SET_CUSTOM1
  2432.        MCI_AMP_CAN_SET_CUSTOM2           MCI_AMP_SET_CUSTOM2
  2433.        MCI_AMP_CAN_SET_CUSTOM3           MCI_AMP_SET_CUSTOM3
  2434.        MCI_AMP_CAN_SET_LRVOLUME          MCI_AMP_SET_LRVOLUME
  2435.        MCI_AMP_CAN_SET_BASS              MCI_AMP_SET_BASS
  2436.        MCI_AMP_CAN_SET_MID               MCI_AMP_SET_MID
  2437.        MCI_AMP_CAN_SET_TREBLE            MCI_AMP_SET_TREBLE
  2438.        MCI_AMP_CAN_SET_PITCH             MCI_AMP_SET_PITCH
  2439.        MCI_AMP_CAN_SET_GAIN              MCI_AMP_SET_GAIN
  2440.        MCI_AMP_CAN_SET_CHORUS            MCI_AMP_SET_CHORUS
  2441.        MCI_AMP_CAN_SET_VOLUME            MCI_AMP_SET_VOLUME
  2442.  
  2443.  
  2444. /*********************************************************************/
  2445. /* potential values for the ulExtended field of MCI_AMP_GETDEVCAPS_PARMS*/
  2446. /*********************************************************************/
  2447.       MCI_MIXER_LINE    $00000001L
  2448.  
  2449. /*********************************************************************/
  2450. /* parameter structure for the MCI_AMP_GETDEVCAPS                    */
  2451. /*********************************************************************/
  2452. typedef struct _MCI_AMP_GETDEVCAPS_PARMS {
  2453.     ULONG   hwndCallback;     /* PM window handle for MCI notify message */
  2454.     ULONG   ulReturn;         /* Return field                            */
  2455.     ULONG   ulItem;           /* Item field for GETDEVCAPS item to query */
  2456.     USHORT  usMessage;        /* Field to hold MCI message to query      */
  2457.     USHORT  usReserved0;      /* Reserved field                          */
  2458.     ULONG   ulLength;         /* Length of structure in ULONGS           */
  2459.     ULONG   ulValue;          /* Value to determine caps                 */
  2460.     ULONG   ulAttribute;      /* Flags to modified the extended parms    */
  2461.     ULONG   ulExtended;       /* Extended flags field                    */
  2462. } MCI_AMP_GETDEVCAPS_PARMS;
  2463. typedef MCI_AMP_GETDEVCAPS_PARMS   * PMCI_AMP_GETDEVCAPS_PARMS;
  2464.  
  2465. /*********************************************************************/
  2466. /* values for the ulFlags field of MCI_MIXEVENT_PARMS                */
  2467. /*********************************************************************/
  2468.       MCI_MIX_ATTRIBUTE       $00000001L
  2469.       MCI_MIX_CONNECTOR       $00000002L
  2470.  
  2471. /*********************************************************************/
  2472. /* values for the lParam field for mix_notify                        */
  2473. /*********************************************************************/
  2474.  
  2475.       MCI_MIXNOTIFY_ON        $00000004L
  2476.       MCI_MIXNOTIFY_OFF       $00000008L
  2477.  
  2478. /*********************************************************************/
  2479. /* value to indicate type of MM_MCIEVENT                             */
  2480. /*********************************************************************/
  2481.  
  2482.       MCI_MIXEVENT            $00000001L
  2483.  
  2484.  
  2485.  
  2486. /*********************************************************************/
  2487. /* parameter structure for the MCI_MIXEVENT_PARMS                    */
  2488. /*********************************************************************/
  2489. typedef struct _MCI_MIXEVENT_PARMS
  2490.    {
  2491.    ULONG  ulLength;        /* Length of struct                          */
  2492.    HWND   hwndMixer;       /* window to inform of mixer changes         */
  2493.    ULONG  ulFlags;         /* Either MCI_MIX_ATTRIBUTE                  */
  2494.                            /*      or MCI_MIX_CONNECTOR                 */
  2495.    USHORT usDeviceID;      /* device id to notify of the change         */
  2496.    ULONG  ulDeviceType;    /* Device Type which generated the change    */
  2497.    ULONG  ulDeviceOrdinal; /* Ordinal of device Type                    */
  2498.    ULONG  ulAttribute;     /* Attribute that changed(volume, bass etc.) */
  2499.    ULONG  ulValue;         /* new value of the attribute which changed  */
  2500.    ULONG  ulConnectorType; /* Connector Type                            */
  2501.    ULONG  ulConnectorIndex;/* Connector Index                           */
  2502.    ULONG  ulConnStatus;    /* Is connector enabled/disabled.            */
  2503.  
  2504.    } MCI_MIXEVENT_PARMS;
  2505.  
  2506. typedef MCI_MIXEVENT_PARMS *PMCI_MIXEVENT_PARMS;
  2507.  
  2508.  
  2509. /*********************************************************************/
  2510. /* flag values for the MCI_GETIMAGEBUFFER and MCI_SETIMAGEBUFFER msg */
  2511. /*     $000$X00 are reserved for MCI_GETIMAGEBUFFER and            */
  2512. /*       MCI_SETIMAGEBUFFER Flags                                    */
  2513. /*     MCI_CONVERT is defined by MCI_CAPTURE message as $00001000L  */
  2514. /*********************************************************************/
  2515.       MCI_USE_HW_BUFFER                   $00000400L
  2516.       MCI_GET_HW_BUFFER_PTR               $00000800L
  2517.  
  2518.    /***************************************************/
  2519.    /* parm structure for MCI_GETIMAGEBUFFER and       */
  2520.    /*                    MCI_SETIMAGEBUFFER messages  */
  2521.    /***************************************************/
  2522. typedef  struct _MCI_IMAGE_PARMS {
  2523.     HWND    hwndCallback;       /* PM window handle for MCI notify message */
  2524.     ULONG   ulPelFormat;        /* Format of the image data returned       */
  2525.     USHORT  usBitCount;         /* Number of bitsimage data returned       */
  2526.     USHORT  usReserved0;        /* Reserved field                          */
  2527.     ULONG   ulImageCompression; /*                                         */
  2528.     RECTL   rect;               /* Image area to get/set                   */
  2529.     PVOID   pPelBuffer;         /* Pel data buffer                         */
  2530.     ULONG   ulPelBufferHeight;  /* Number of rows in buffer                */
  2531.     ULONG   ulPelBufferWidth;   /* Pels per row in buffer                  */
  2532.     ULONG   ulBufLen;           /* Pel data buffer length in bytes         */
  2533.  
  2534. } MCI_IMAGE_PARMS;
  2535. typedef MCI_IMAGE_PARMS   *PMCI_IMAGE_PARMS;
  2536.  
  2537. /*********************************************************************/
  2538. /* flags for the MCI_GETIMAGEPALETTE message                         */
  2539. /*     $000$X00 are reserved for MCI_GETIMAGEPALETTE flags         */
  2540. /*********************************************************************/
  2541.       MCI_FIND_BEST_REGISTERED            $00000100L
  2542.       MCI_QUERY_REGISTERED_MAP            $00000200L
  2543.       MCI_QUERY_REGISTERED_MAP_SIZE       $00000400L
  2544.  
  2545.  
  2546.    /***************************************************/
  2547.    /* parameter structure for MCI_GETIMAGEPALETTE and */
  2548.    /*    MCI_SETIMAGEPALETTE messages                 */
  2549.    /***************************************************/
  2550. typedef  struct _MCI_PALETTE_PARMS {
  2551.     HWND    hwndCallback;    /* PM window handle for MCI notify message   */
  2552.     USHORT  usRegisteredMap; /* Id of the palette from the registed color */
  2553.                              /* map                                       */
  2554.     USHORT  usReserved0;     /* Reserved field                            */
  2555.     ULONG   ulPalEntries;    /* size of the palette returned              */
  2556.     PVOID   pPalette;        /* pointer to the palette                    */
  2557. } MCI_PALETTE_PARMS;
  2558. typedef MCI_PALETTE_PARMS   *PMCI_PALETTE_PARMS;
  2559.  
  2560.  
  2561. /*********************************************************************/
  2562. /* Parameter structure for the MCI_GETTOC message                    */
  2563. /*********************************************************************/
  2564. typedef struct _MCI_TOC_REC {
  2565.     BYTE      TrackNum;      /* Returned Track Number                          */
  2566.     ULONG     ulStartAddr;   /* Starting address of the track in MMTIME format */
  2567.     ULONG     ulEndAddr;     /* Ending address of the track in MMTIME format   */
  2568.     BYTE      Control;       /* Track Control information                      */
  2569.     USHORT    usCountry;     /* Country                                        */
  2570.     ULONG     ulOwner;       /* Owner                                          */
  2571.     ULONG     ulSerialNum;   /* Serial Number                                  */
  2572. } MCI_TOC_REC;
  2573. typedef MCI_TOC_REC   *PTOCREC;
  2574.  
  2575. typedef struct _MCI_TOC_PARMS {
  2576.     HWND      hwndCallback;  /* PM window handle for MCI notify message    */
  2577.     PTOCREC   pBuf;          /* Pointer to array MCI_TOC_REC structures to */
  2578.                              /* be filled in by the mci device             */
  2579.     ULONG     ulBufSize;     /* Size of the array                          */
  2580. } MCI_TOC_PARMS;
  2581. typedef MCI_TOC_PARMS   * PMCI_TOC_PARMS;
  2582.  
  2583. /*********************************************************************/
  2584. /* parameters for the MCI_GROUP message                              */
  2585. /*     $0$XXX00 are reserved for MCI_GROUP flags                   */
  2586. /*********************************************************************/
  2587.       MCI_SYNCHRONIZE                     $00000100L
  2588.       MCI_NOPIECEMEAL                     $00000200L
  2589.       MCI_GROUP_MAKE                      $00000400L
  2590.       MCI_GROUP_DELETE                    $00000800L
  2591.       MCI_GROUP_ALIAS                     $00001000L
  2592.       MCI_GROUP_MASTER                    $00002000L
  2593.  
  2594. typedef struct _MCI_GROUP_PARMS {
  2595.     HWND    hwndCallback;    /* PM window handle for MCI notify message.    */
  2596.     USHORT  usGroupID;       /* GroupID                                     */
  2597.     USHORT  usReserved0;     /* RESERVED                                    */
  2598.     ULONG   ulStructLength;  /* Length of Structure in ULONGS.              */
  2599.     USHORT  usMasterID;      /* ID of Master device in Synchrounous groups. */
  2600.     USHORT  usReserved1;     /* RESERVED                                    */
  2601.     PSZ     pszGroupAlias;   /* Pointer to Alias Name.                      */
  2602.     ULONG   ulNumDevices;    /* Number of Devices in group.                 */
  2603.     PULONG  paulDeviceID;    /* Array of Device ids in the group.           */
  2604. } MCI_GROUP_PARMS;
  2605. typedef MCI_GROUP_PARMS *PMCI_GROUP_PARMS;
  2606.  
  2607.  
  2608. /*********************************************************************/
  2609. /* flags for the MCI_INFO message                                    */
  2610. /*     $0000$00 are reserved for MCI_INFO flags                    */
  2611. /*********************************************************************/
  2612.       MCI_INFO_PRODUCT                    $00000100L
  2613.       MCI_INFO_FILE                       $00000200L
  2614.  
  2615.     /************************************************/
  2616.     /* CD Audio                MCI_INFO             */
  2617.     /************************************************/
  2618.       MCI_CD_INFO_ID                      $00010000L
  2619.       MCI_CD_INFO_UPC                     $00020000L
  2620.  
  2621.     /************************************************/
  2622.     /* Videodisc               MCI_INFO             */
  2623.     /************************************************/
  2624.       MCI_VD_INFO_LABEL                   $00001000L
  2625.  
  2626.     /************************************************/
  2627.     /* Digital Video           MCI_INFO             */
  2628.     /************************************************/
  2629.       MCI_DGV_INFO_VIDEO_FILE             $00001000L
  2630.       MCI_DGV_INFO_IMAGE_FILE             $00002000L
  2631.       MCI_DGV_INFO_REGION                 $00004000L
  2632.       MCI_DGV_INFO_REGION_TEXT            $00008000L
  2633.       MCI_DGV_INFO_TEXT                   $00010000L
  2634.  
  2635.     /************************************************/
  2636.     /* Video Overlay           MCI_INFO             */
  2637.     /************************************************/
  2638.       MCI_OVLY_INFO_TEXT                  $00010000L
  2639.  
  2640.  
  2641. typedef struct _MCI_INFO_PARMS {
  2642.     HWND      hwndCallback;  /* PM window handle for MCI notify message */
  2643.     PSZ       pszReturn;     /* Pointer to return buffer                */
  2644.     ULONG     ulRetSize;     /* Return buffer size                      */
  2645. } MCI_INFO_PARMS;
  2646. typedef MCI_INFO_PARMS   *PMCI_INFO_PARMS;
  2647.  
  2648. /*********************************************************************/
  2649. /* parameters and flags for the MCI_LOAD message                     */
  2650. /*     $0000$00 are reserved for MCI_LOAD flags                    */
  2651. /*********************************************************************/
  2652. typedef struct _MCI_LOAD_PARMS {
  2653.     HWND   hwndCallback;     /* PM window handle for MCI notify message */
  2654.     PSZ    pszElementName;   /* File name to loads                      */
  2655. } MCI_LOAD_PARMS;
  2656. typedef MCI_LOAD_PARMS   *PMCI_LOAD_PARMS;
  2657.  
  2658. /*********************************************************************/
  2659. /* parameters and flags for the MCI_MASTERAUDIO                      */
  2660. /*     $00$XX00 are reserved for MCI_MASTERAUDIO  flags            */
  2661. /*********************************************************************/
  2662.       MCI_ON                              $00000100L
  2663.       MCI_OFF                             $00000200L
  2664.       MCI_HEADPHONES                      $00000400L
  2665.       MCI_SPEAKERS                        $00000800L
  2666.       MCI_MASTERVOL                       $00001000L
  2667.       MCI_SAVESETTING                     $00002000L
  2668.       MCI_QUERYSAVEDSETTING               $00004000L
  2669.       MCI_QUERYCURRENTSETTING             $00008000L
  2670.  
  2671.  
  2672. typedef struct _MCI_MASTERAUDIO_PARMS {
  2673.     HWND    hwndDummyCallback; /* Notify not allowed for this message     */
  2674.     ULONG   ulReturn;          /* Return field for query information      */
  2675.     ULONG   ulMasterVolume;    /* Master volume field                     */
  2676. } MCI_MASTERAUDIO_PARMS;
  2677. typedef MCI_MASTERAUDIO_PARMS   *PMCI_MASTERAUDIO_PARMS;
  2678.  
  2679. /*********************************************************************/
  2680. /* parameters and flags for the MCI_OPEN message                     */
  2681. /*     $000$X00 are reserved for MCI_OPEN flags                    */
  2682. /*********************************************************************/
  2683.       MCI_OPEN_ELEMENT                    $00000100L
  2684.       MCI_OPEN_ALIAS                      $00000200L
  2685.       MCI_OPEN_ELEMENT_ID                 $00000400L
  2686.       MCI_OPEN_PLAYLIST                   $00000800L
  2687.       MCI_OPEN_TYPE_ID                    $00001000L
  2688.       MCI_OPEN_SHAREABLE                  $00002000L
  2689.       MCI_OPEN_MMIO                       $00004000L
  2690.       MCI_READONLY                        $00008000L
  2691.  
  2692.     /***************************************************/
  2693.     /* parameters and flags for the MCI_OPEN message   */
  2694.     /* Digital Video, Video Overlay specific           */
  2695.     /***************************************************/
  2696.       MCI_VID_OPEN_PARENT                 $01000000L
  2697.       MCI_DGV_OPEN_PARENT                 MCI_VID_OPEN_PARENT
  2698.       MCI_OVLY_OPEN_PARENT                MCI_VID_OPEN_PARENT
  2699.  
  2700. typedef struct _MCI_OPEN_PARMS {
  2701.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  2702.     USHORT  usDeviceID;      /* Device ID returned to user              */
  2703.     USHORT  usReserved0;     /* Reserved                                */
  2704.     PSZ     pszDeviceType;   /* Device name from SYSTEM.INI             */
  2705.     PSZ     pszElementName;  /* Typically a file name or NULL           */
  2706.     PSZ     pszAlias;        /* Optional device alias                   */
  2707. } MCI_OPEN_PARMS;
  2708. typedef MCI_OPEN_PARMS   *PMCI_OPEN_PARMS;
  2709.  
  2710.     /**********************************************************/
  2711.     /* parameters for the AMP MCI_OPEN message                */
  2712.     /**********************************************************/
  2713. typedef struct _MCI_AMP_OPEN_PARMS {
  2714.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  2715.     USHORT  usDeviceID;      /* Device ID returned to user              */
  2716.     USHORT  usReserved0;     /* Reserved field                          */
  2717.     PSZ     pszDeviceType;   /* Device name from SYSTEM.INI             */
  2718.     PSZ     pszElementName;  /* Typically a file name or NULL           */
  2719.     PSZ     pszAlias;        /* Optional device alias                   */
  2720.     PVOID   pDevDataPtr;     /* Pointer to device data                  */
  2721. } MCI_AMP_OPEN_PARMS;
  2722. typedef MCI_AMP_OPEN_PARMS   *PMCI_AMP_OPEN_PARMS;
  2723.  
  2724.     /**********************************************************/
  2725.     /* parameters for MCI_OPEN message for video devices      */
  2726.     /**********************************************************/
  2727.  
  2728. typedef  struct _MCI_VID_OPEN_PARMS{
  2729.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  2730.     USHORT  usDeviceID;      /* Device ID returned to user              */
  2731.     USHORT  usReserved0;     /* Reserved field                          */
  2732.     PSZ     pszDeviceType;   /* Device name from SYSTEM.INI             */
  2733.     PSZ     pszElementName;  /* Typically a file name or NULL           */
  2734.     PSZ     pszAlias;        /* Optional device alias                   */
  2735.     HWND    hwndParent;      /* Parent window handle                    */
  2736. } MCI_VID_OPEN_PARMS;
  2737.  
  2738. typedef MCI_VID_OPEN_PARMS   MCI_DGV_OPEN_PARMS;
  2739. typedef MCI_DGV_OPEN_PARMS   *PMCI_DGV_OPEN_PARMS;
  2740.  
  2741. typedef MCI_VID_OPEN_PARMS    MCI_OVLY_OPEN_PARMS;
  2742. typedef MCI_OVLY_OPEN_PARMS   *PMCI_OVLY_OPEN_PARMS;
  2743.  
  2744.     /***************************************************/
  2745.     /* MCI_PLAY flag values for videodisc              */
  2746.     /***************************************************/
  2747.       MCI_VD_PLAY_REVERSE                 $00001000L
  2748.       MCI_VD_PLAY_FAST                    $00002000L
  2749.       MCI_VD_PLAY_SPEED                   $00004000L
  2750.       MCI_VD_PLAY_SCAN                    $00008000L
  2751.       MCI_VD_PLAY_SLOW                    $00010000L
  2752.  
  2753.     /***************************************************/
  2754.     /* MCI_PLAY flag values for digital video          */
  2755.     /***************************************************/
  2756.       MCI_DGV_PLAY_REVERSE                $00001000L
  2757.       MCI_DGV_PLAY_FAST                   $00002000L
  2758.       MCI_DGV_PLAY_SPEED                  $00004000L
  2759.       MCI_DGV_PLAY_SCAN                   $00008000L
  2760.       MCI_DGV_PLAY_SLOW                   $00010000L
  2761.       MCI_DGV_PLAY_REPEAT                 $00020000L
  2762.  
  2763. typedef struct _MCI_PLAY_PARMS {
  2764.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  2765.     ULONG   ulFrom;          /* Play from this position                 */
  2766.     ULONG   ulTo;            /* Play to this position                   */
  2767. } MCI_PLAY_PARMS;
  2768. typedef MCI_PLAY_PARMS   *PMCI_PLAY_PARMS;
  2769.  
  2770. typedef struct _MCI_VD_PLAY_PARMS {
  2771.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  2772.     ULONG   ulFrom;          /* Play from this position                 */
  2773.     ULONG   ulTo;            /* Play to this position                   */
  2774.     ULONG   ulFactor;        /* Play at this speed factor               */
  2775. } MCI_VD_PLAY_PARMS;
  2776. typedef MCI_VD_PLAY_PARMS   *PMCI_VD_PLAY_PARMS;
  2777.  
  2778. typedef  struct _MCI_DGV_PLAY_PARMS {
  2779.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  2780.     ULONG   ulFrom;          /* Play from this position                 */
  2781.     ULONG   ulTo;            /* Play to this position                   */
  2782.     ULONG   ulSpeed;         /* Specifies the play rate in frames per second */
  2783. } MCI_DGV_PLAY_PARMS;
  2784. typedef MCI_DGV_PLAY_PARMS   *PMCI_DGV_PLAY_PARMS;
  2785.  
  2786. /*********************************************************************/
  2787. /* parameters for the MCI_PUT  message                               */
  2788. /*     $0000$00 are reserved for MCI_PUT  flags                    */
  2789. /*********************************************************************/
  2790.       MCI_VID_PUT_RECT                    $00000100L
  2791.       MCI_VID_PUT_DESTINATION             $00000200L
  2792.       MCI_VID_PUT_SOURCE                  $00000400L
  2793.       MCI_VID_PUT_WINDOW_MOVE             $00000800L
  2794.       MCI_VID_PUT_WINDOW_SIZE             $00001000L
  2795.  
  2796.       MCI_DGV_PUT_RECT                    MCI_VID_PUT_RECT
  2797.       MCI_DGV_PUT_DESTINATION             MCI_VID_PUT_DESTINATION
  2798.       MCI_DGV_PUT_SOURCE                  MCI_VID_PUT_SOURCE
  2799.       MCI_DGV_PUT_WINDOW_MOVE             MCI_VID_PUT_WINDOW_MOVE
  2800.       MCI_DGV_PUT_WINDOW_SIZE             MCI_VID_PUT_WINDOW_SIZE
  2801.       MCI_DGV_MONITOR                     $00010000L
  2802.       MCI_DGV_RECORD                      $00020000L
  2803.  
  2804.       MCI_OVLY_PUT_RECT                   MCI_VID_PUT_RECT
  2805.       MCI_OVLY_PUT_DESTINATION            MCI_VID_PUT_DESTINATION
  2806.       MCI_OVLY_PUT_SOURCE                 MCI_VID_PUT_SOURCE
  2807.       MCI_OVLY_PUT_WINDOW_MOVE            MCI_VID_PUT_WINDOW_MOVE
  2808.       MCI_OVLY_PUT_WINDOW_SIZE            MCI_VID_PUT_WINDOW_SIZE
  2809.  
  2810.     /***************************************************/
  2811.     /* Rectangle parameters for MCI_PUT, MCI_WHERE,    */
  2812.     /* MCI_FREEZE, and MCI_UNFREEZE                    */
  2813.     /***************************************************/
  2814.  
  2815. typedef  struct _MCI_VID_RECT_PARMS {
  2816.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  2817.     RECTL   rc;              /* rectangle array specifying the offset   */
  2818.                              /* and size of a rectangle                 */
  2819. } MCI_VID_RECT_PARMS;
  2820.  
  2821. typedef MCI_VID_RECT_PARMS   MCI_DGV_RECT_PARMS;
  2822. typedef MCI_DGV_RECT_PARMS   *PMCI_DGV_RECT_PARMS;
  2823.  
  2824. typedef MCI_VID_RECT_PARMS   MCI_OVLY_RECT_PARMS;
  2825. typedef MCI_OVLY_RECT_PARMS  *PMCI_OVLY_RECT_PARMS;
  2826.  
  2827. /*********************************************************************/
  2828. /* parameters for the MCI_RECORD message                             */
  2829. /*     $0000$00 are reserved for MCI_RECORD flags                  */
  2830. /*********************************************************************/
  2831.       MCI_RECORD_INSERT                   $00000100L
  2832.       MCI_RECORD_OVERWRITE                $00000200L
  2833.  
  2834.       MCI_DGV_RECORD_RECT                 $00000400L
  2835.  
  2836. typedef struct _MCI_RECORD_PARMS {
  2837.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  2838.     ULONG   ulFrom;          /* Record from position                    */
  2839.     ULONG   ulTo;            /* Record to position                      */
  2840. } MCI_RECORD_PARMS;
  2841. typedef MCI_RECORD_PARMS   *PMCI_RECORD_PARMS;
  2842.  
  2843. /*********************************************************************/
  2844. /* parameters for the MCI_RELEASEDEVICE message                      */
  2845. /*     $XXXXXX00 are reserved for MCI_RELEASEDEVICE message         */
  2846. /*********************************************************************/
  2847.       MCI_RETURN_RESOURCE                 $00000100L
  2848.  
  2849. /*********************************************************************/
  2850. /* parameters for the MCI_RESTORE message                            */
  2851. /*     $000$X00 are reserved for MCI_RESTORE flags                 */
  2852. /*     MCI_CONVERT is defined by MCI_CAPTURE message as $00001000L  */
  2853. /*********************************************************************/
  2854.       MCI_RESTORE_SRC_RECT                $00000100L
  2855.       MCI_RESTORE_DEST_RECT               $00000200L
  2856.  
  2857. typedef struct _MCI_RESTORE_PARMS {
  2858.     HWND    hwndCallback;    /* PM window handle for MCI notify message     */
  2859.     RECTL   SrcRect;         /* Rectangle array specifying the source       */
  2860.                              /* area to be restored                                 */
  2861.     RECTL   DestRect;        /* Rectangle array specifying the destination  */
  2862.                              /* area to be restored                         */
  2863. } MCI_RESTORE_PARMS;
  2864. typedef MCI_RESTORE_PARMS   *PMCI_RESTORE_PARMS;
  2865.  
  2866. /*********************************************************************/
  2867. /* parameters for the MCI_SAVE  message                              */
  2868. /*     $0000$00 are reserved for MCI_SAVE  flags                   */
  2869. /*********************************************************************/
  2870.       MCI_SAVE_FILE                       $00000100L
  2871.  
  2872.     /*************************************************/
  2873.     /* Digital Video               MCI_SAVE          */
  2874.     /*************************************************/
  2875.  
  2876.       MCI_DGV_SAVE_VIDEO_FILE             $00001000L
  2877.       MCI_DGV_SAVE_IMAGE_FILE             $00002000L
  2878.  
  2879. typedef struct _MCI_SAVE_PARMS {
  2880.     HWND    hwndCallback;    /* PM window handle for MCI notify message     */
  2881.     PSZ     pszFileName;     /* Filename to save data to                    */
  2882. } MCI_SAVE_PARMS;
  2883. typedef MCI_SAVE_PARMS   *PMCI_SAVE_PARMS;
  2884.  
  2885. /*********************************************************************/
  2886. /* parameters for the MCI_SEEK message                               */
  2887. /*     $0000$00 are reserved for MCI_SEEK flags                    */
  2888. /*********************************************************************/
  2889.       MCI_TO_START                        $00000100L
  2890.       MCI_TO_END                          $00000200L
  2891.  
  2892.     /*************************************************/
  2893.     /* Digital Video               MCI_SEEK          */
  2894.     /*************************************************/
  2895.  
  2896.       MCI_DGV_SEEK_TO_NEAREST_IFRAME      $00100000L
  2897.  
  2898.     /*************************************************/
  2899.     /* Videodisc                   MCI_SEEK          */
  2900.     /*************************************************/
  2901.       MCI_VD_SEEK_REVERSE                 $00001000L
  2902.  
  2903. typedef struct _MCI_SEEK_PARMS {
  2904.     HWND    hwndCallback;    /* PM window handle for MCI notify message     */
  2905.     ULONG   ulTo;            /* Seek to this position                       */
  2906. } MCI_SEEK_PARMS;
  2907. typedef MCI_SEEK_PARMS   *PMCI_SEEK_PARMS;
  2908.  
  2909. /*********************************************************************/
  2910. /* Flags for the MCI_SET message                                     */
  2911. /*     $0$XXX00 are reserved for MCI_SET  flags                    */
  2912. /*********************************************************************/
  2913.       MCI_SET_ITEM                        $00000100L
  2914.       MCI_SET_ON                          $00000200L
  2915.       MCI_SET_OFF                         $00000400L
  2916.       MCI_SET_VIDEO                       $00000800L
  2917.       MCI_SET_AUDIO                       $00001000L
  2918.       MCI_SET_DOOR_OPEN                   $00002000L
  2919.       MCI_SET_DOOR_CLOSED                 $00004000L
  2920.       MCI_SET_SPEED_FORMAT                $00008000L
  2921.       MCI_SET_TIME_FORMAT                 $00010000L
  2922.       MCI_SET_DOOR_LOCK                   $00020000L
  2923.       MCI_SET_DOOR_UNLOCK                 $00040000L
  2924.       MCI_SET_VOLUME                      $00080000L
  2925.       MCI_SET_ITEM_FOURCC                 $00100000L
  2926.       MCI_SET_REVERSE                     $00200000L
  2927.  
  2928. /*******************************************************/
  2929. /* Values for the ulAudio field                        */
  2930. /*******************************************************/
  2931.       MCI_SET_AUDIO_ALL                   $00000000L
  2932.       MCI_SET_AUDIO_LEFT                  $00000001L
  2933.       MCI_SET_AUDIO_RIGHT                 $00000002L
  2934.  
  2935. /*******************************************************/
  2936. /* MCI_SET flags for amp/mixer                         */
  2937. /*******************************************************/
  2938.       MCI_AMP_SET_BALANCE                 $00100000L
  2939.       MCI_AMP_SET_PITCH                   $00200000L
  2940.       MCI_AMP_SET_TREBLE                  $00400000L
  2941.       MCI_AMP_SET_BASS                    $00800000L
  2942.       MCI_AMP_SET_GAIN                    $01000000L
  2943.  
  2944.       MCI_AMP_SET_ALC                     $00000004L
  2945.       MCI_AMP_SET_CROSSOVER               $00000010L
  2946.       MCI_AMP_SET_LOUDNESS                $00000020L
  2947.       MCI_AMP_SET_MUTE                    $00000040L
  2948.       MCI_AMP_SET_REVERB                  $00000080L
  2949.       MCI_AMP_SET_STEREOENHANCE           $00000100L
  2950.       MCI_AMP_SET_CUSTOM1                 $00000200L
  2951.       MCI_AMP_SET_CUSTOM2                 $00000400L
  2952.       MCI_AMP_SET_CUSTOM3                 $00000800L
  2953.       MCI_AMP_SET_LRVOLUME                $00001000L
  2954.       MCI_AMP_SET_MID                     $00020000L
  2955.       MCI_AMP_SET_CHORUS                  $00004000L
  2956.       MCI_AMP_SET_VOLUME                  MCI_SET_VOLUME
  2957.  
  2958. /*******************************************************/
  2959. /* General MCI_SET item values                         */
  2960. /*******************************************************/
  2961.       MCI_SET_MONITOR                     $00000001L
  2962.       MCI_SET_MONITOR_AUDIO               $00000002L
  2963.       MCI_SET_MONITOR_VIDEO               $00000003L
  2964.       MCI_SET_RECORD                      $00000004L
  2965.  
  2966. /*******************************************************/
  2967. /* MCI_SET item values for amp/mixer                   */
  2968. /*******************************************************/
  2969.       MCI_AMP_SET_MONITOR                 MCI_SET_MONITOR_AUDIO
  2970.       MCI_AMP_SET_AUDIO                   $00000008
  2971.  
  2972.  
  2973. /*******************************************************/
  2974. /* MCI_SET flags for CDXA                              */
  2975. /*******************************************************/
  2976.       MCI_CDXA_SET_CHANNEL                $01000000L
  2977.       MCI_CDXA_AUDIO_DEVICE               $10000000L
  2978.       MCI_CDXA_AUDIO_BUFFER               $02000000L
  2979.       MCI_CDXA_VIDEO_BUFFER               $04000000L
  2980.       MCI_CDXA_DATA_BUFFER                $08000000L
  2981.  
  2982. /*******************************************************/
  2983. /* MCI_SET flags for videodisc                         */
  2984. /*******************************************************/
  2985.       MCI_VD_SET_ON                       MCI_SET_ON
  2986.       MCI_VD_SET_OFF                      MCI_SET_OFF
  2987.       MCI_VD_SET_VIDEO                    MCI_SET_VIDEO
  2988.       MCI_VD_SET_CHANNEL                  $00100000L
  2989.       MCI_VD_SET_DISPLAY                  $00200000L
  2990.  
  2991. /*******************************************************/
  2992. /* Generic MCI_SET item values for video devices       */
  2993. /*******************************************************/
  2994.       MCI_VID_SET_VIDEO_COMPRESSION           MCI_VID_ITEM_BASE
  2995.       MCI_VID_SET_IMAGE_COMPRESSION           (MCI_VID_ITEM_BASE+1)
  2996.       MCI_VID_SET_IMAGE_BITSPERPEL            (MCI_VID_ITEM_BASE+2)
  2997.       MCI_VID_SET_IMAGE_PELFORMAT             (MCI_VID_ITEM_BASE+3)
  2998.       MCI_VID_SET_BRIGHTNESS                  (MCI_VID_ITEM_BASE+4)
  2999.       MCI_VID_SET_CONTRAST                    (MCI_VID_ITEM_BASE+5)
  3000.       MCI_VID_SET_HUE                         (MCI_VID_ITEM_BASE+6)
  3001.       MCI_VID_SET_SATURATION                  (MCI_VID_ITEM_BASE+7)
  3002.       MCI_VID_SET_SHARPNESS                   (MCI_VID_ITEM_BASE+8)
  3003.       MCI_VID_SET_GREYSCALE                   (MCI_VID_ITEM_BASE+9)
  3004.       MCI_VID_SET_IMAGE_QUALITY               (MCI_VID_ITEM_BASE+10)
  3005.       MCI_VID_SET_VIDEO_QUALITY               (MCI_VID_ITEM_BASE+11)
  3006.       MCI_VID_SET_IMAGE_COMPRESSION_METHOD    (MCI_VID_ITEM_BASE+12)
  3007.       MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE  (MCI_VID_ITEM_BASE+13)
  3008.       MCI_VID_SET_IMAGE_FILE_FORMAT           (MCI_VID_ITEM_BASE+14)
  3009.       MCI_VID_SET_REF_INTERVAL                (MCI_VID_ITEM_BASE+15)
  3010.       MCI_VID_SET_MAXDATARATE                 (MCI_VID_ITEM_BASE+16)
  3011.       MCI_VID_SET_VIDEO_FILE_FORMAT           (MCI_VID_ITEM_BASE+17)
  3012.  
  3013. /*******************************************************/
  3014. /* MCI_SET item values for video overlay               */
  3015. /*******************************************************/
  3016.       MCI_OVLY_SET_IMAGE_COMPRESSION          MCI_VID_SET_IMAGE_COMPRESSION
  3017.       MCI_OVLY_SET_IMAGE_BITSPERPEL           MCI_VID_SET_IMAGE_BITSPERPEL
  3018.       MCI_OVLY_SET_IMAGE_PELFORMAT            MCI_VID_SET_IMAGE_PELFORMAT
  3019.       MCI_OVLY_SET_BRIGHTNESS                 MCI_VID_SET_BRIGHTNESS
  3020.       MCI_OVLY_SET_CONTRAST                   MCI_VID_SET_CONTRAST
  3021.       MCI_OVLY_SET_HUE                        MCI_VID_SET_HUE
  3022.       MCI_OVLY_SET_SATURATION                 MCI_VID_SET_SATURATION
  3023.       MCI_OVLY_SET_SHARPNESS                  MCI_VID_SET_SHARPNESS
  3024.       MCI_OVLY_SET_GREYSCALE                  MCI_VID_SET_GREYSCALE
  3025.       MCI_OVLY_SET_IMAGE_QUALITY              MCI_VID_SET_IMAGE_QUALITY
  3026.       MCI_OVLY_SET_IMAGE_COMPRESSION_METHOD   MCI_VID_SET_IMAGE_COMPRESSION_METHOD
  3027.       MCI_OVLY_SET_MINIMUM_VIDEO_REFRESH_RATE MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE
  3028.       MCI_OVLY_SET_IMAGE_FILE_FORMAT          MCI_VID_SET_IMAGE_FILE_FORMAT
  3029.  
  3030. /*******************************************************/
  3031. /* MCI_SET item values for digital video               */
  3032. /*******************************************************/
  3033.       MCI_DGV_SET_VIDEO_COMPRESSION           MCI_VID_SET_VIDEO_COMPRESSION
  3034.       MCI_DGV_SET_IMAGE_COMPRESSION           MCI_VID_SET_IMAGE_COMPRESSION
  3035.       MCI_DGV_SET_IMAGE_BITSPERPEL            MCI_VID_SET_IMAGE_BITSPERPEL
  3036.       MCI_DGV_SET_IMAGE_PELFORMAT             MCI_VID_SET_IMAGE_PELFORMAT
  3037.       MCI_DGV_SET_BRIGHTNESS                  MCI_VID_SET_BRIGHTNESS
  3038.       MCI_DGV_SET_CONTRAST                    MCI_VID_SET_CONTRAST
  3039.       MCI_DGV_SET_HUE                         MCI_VID_SET_HUE
  3040.       MCI_DGV_SET_SATURATION                  MCI_VID_SET_SATURATION
  3041.       MCI_DGV_SET_SHARPNESS                   MCI_VID_SET_SHARPNESS
  3042.       MCI_DGV_SET_GREYSCALE                   MCI_VID_SET_GREYSCALE
  3043.       MCI_DGV_SET_IMAGE_QUALITY               MCI_VID_SET_IMAGE_QUALITY
  3044.       MCI_DGV_SET_VIDEO_QUALITY               MCI_VID_SET_VIDEO_QUALITY
  3045.       MCI_DGV_SET_IMAGE_COMPRESSION_METHOD    MCI_VID_SET_IMAGE_COMPRESSION_METHOD
  3046.       MCI_DGV_SET_MONITOR                     MCI_SET_MONITOR
  3047.       MCI_DGV_SET_MINIMUM_VIDEO_REFRESH_RATE  MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE
  3048.       MCI_DGV_SET_IMAGE_FILE_FORMAT           MCI_VID_SET_IMAGE_FILE_FORMAT
  3049.       MCI_DGV_SET_REF_INTERVAL                MCI_VID_SET_REF_INTERVAL
  3050.       MCI_DGV_SET_MAXDATARATE                 MCI_VID_SET_MAXDATARATE
  3051.       MCI_DGV_SET_VIDEO_FILE_FORMAT           MCI_VID_SET_VIDEO_FILE_FORMAT
  3052.  
  3053.       MCI_DGV_SET_AUDIO_COMPRESSION           MCI_DGV_ITEM_BASE
  3054.       MCI_DGV_SET_AUDIO_QUALITY               (MCI_DGV_ITEM_BASE+1)
  3055.       MCI_DGV_SET_CHANNELS                    (MCI_DGV_ITEM_BASE+2)
  3056.       MCI_DGV_SET_BITSPERSAMPLE               (MCI_DGV_ITEM_BASE+3)
  3057.       MCI_DGV_SET_SAMPLESPERSEC               (MCI_DGV_ITEM_BASE+4)
  3058.       MCI_DGV_SET_FORMATTAG                   (MCI_DGV_ITEM_BASE+5)
  3059.       MCI_DGV_SET_BLOCKALIGN                  (MCI_DGV_ITEM_BASE+6)
  3060.       MCI_DGV_SET_AVGBYTESPERSEC              (MCI_DGV_ITEM_BASE+7)
  3061.  
  3062.       MCI_DGV_SET_VIDEO_COMPRESSION_SUBTYPE   (MCI_DGV_ITEM_BASE+8)
  3063.       MCI_DGV_SET_VIDEO_RECORD_RATE           (MCI_DGV_ITEM_BASE+9)
  3064.       MCI_DGV_SET_VIDEO_RECORD_FRAME_DURATION (MCI_DGV_ITEM_BASE+10)
  3065.       MCI_DGV_SET_RECORD_AUDIO                (MCI_DGV_ITEM_BASE+11)
  3066.       MCI_DGV_SET_TRANSPARENT_COLOR           (MCI_DGV_ITEM_BASE+12)
  3067.       MCI_DGV_SET_GRAPHIC_TRANSPARENT_COLOR   (MCI_DGV_ITEM_BASE+12)
  3068.       MCI_DGV_SET_AUDIOSYNC                   (MCI_DGV_ITEM_BASE+13)
  3069.       MCI_DGV_SET_VIDEO_TRANSPARENT_COLOR     (MCI_DGV_ITEM_BASE+14)
  3070.  
  3071. /*******************************************************/
  3072. /* Video file format                                   */
  3073. /*******************************************************/
  3074.       MCI_VID_FILE_FORMAT_AVI       $20495641L
  3075.  
  3076. /*******************************************************/
  3077. /* Audio/video/image compression types                 */
  3078. /*******************************************************/
  3079.       MCI_AUD_COMP_ADPCM4          $00000001L
  3080.       MCI_AUD_COMP_PCM8            $00000002L
  3081.  
  3082.       MCI_VID_COMP_RTV_2_0         $00000101L
  3083.       MCI_VID_COMP_RTV_2_1         $00000102L
  3084.       MCI_VID_COMP_ULTI            $49544C55L
  3085.       MCI_VID_COMP_RT21            $31325452L
  3086.       MCI_VID_COMP_NONE            $20424944L   /* This is 'DIB ' now.    */
  3087.  
  3088.       MCI_IMG_COMP_NONE            $00000201L
  3089.       MCI_IMG_COMP_PIC9_1_0        $00000202L
  3090.       MCI_IMG_COMP_PIC16_1_0       $00000203L
  3091.       MCI_IMG_COMP_JPEG9           $00000204L
  3092.       MCI_IMG_COMP_JPEG9_1_0       MCI_IMG_COMP_JPEG9
  3093.       MCI_IMG_COMP_BMP_RLE4        $00000205L
  3094.       MCI_IMG_COMP_BMP_RLE8        $00000206L
  3095.       MCI_IMG_COMP_JPEGN           $00000207L
  3096.  
  3097. /*******************************************************/
  3098. /* PEL Formats (video/image)                           */
  3099. /*******************************************************/
  3100.       MCI_VID_PALETTE              $00000001L
  3101.       MCI_VID_RGB                  $00000002L
  3102.       MCI_VID_YUV                  $00000003L
  3103.  
  3104.       MCI_IMG_PALETTE              MCI_VID_PALETTE
  3105.       MCI_IMG_RGB                  MCI_VID_RGB
  3106.       MCI_IMG_YUV                  MCI_VID_YUV
  3107.  
  3108.  
  3109. /*******************************************************/
  3110. /* Audio/video/image quality levels                    */
  3111. /*******************************************************/
  3112.       MCI_AUD_QUALITY_HIGH         $00000001L
  3113.       MCI_AUD_QUALITY_MED          $00000002L
  3114.       MCI_AUD_QUALITY_LOW          $00000003L
  3115.  
  3116.       MCI_VID_QUALITY_HIGH         $00000101L
  3117.       MCI_VID_QUALITY_MED          $00000102L
  3118.       MCI_VID_QUALITY_LOW          $00000103L
  3119.       MCI_VID_QUALITY_BEST         MCI_VID_QUALITY_HIGH
  3120.       MCI_VID_QUALITY_CDROM        MCI_VID_QUALITY_MED
  3121.       MCI_VID_QUALITY_COMPACT      MCI_VID_QUALITY_LOW
  3122.       MCI_VID_QUALITY_BETTER       MCI_VID_QUALITY_MED
  3123.       MCI_VID_QUALITY_GOOD         MCI_VID_QUALITY_LOW
  3124.  
  3125.       MCI_IMG_QUALITY_HIGH         $00000201L
  3126.       MCI_IMG_QUALITY_MED          $00000202L
  3127.       MCI_IMG_QUALITY_LOW          $00000203L
  3128.  
  3129. /*******************************************************/
  3130. /* MCI_SET flags for wave audio                        */
  3131. /*******************************************************/
  3132.       MCI_WAVE_SET_SAMPLESPERSEC          $01000000L
  3133.       MCI_WAVE_SET_AVGBYTESPERSEC         $02000000L
  3134.       MCI_WAVE_SET_BLOCKALIGN             $04000000L
  3135.       MCI_WAVE_SET_FORMATTAG              $08000000L
  3136.       MCI_WAVE_SET_CHANNELS               $10000000L
  3137.       MCI_WAVE_SET_BITSPERSAMPLE          $80000000L
  3138.  
  3139. /*******************************************************/
  3140. /* Wave format tag defines                             */
  3141. /*******************************************************/
  3142.       MCI_WAVE_FORMAT_PCM                 DATATYPE_WAVEFORM
  3143.       MCI_WAVE_FORMAT_ADPCM               $0002L
  3144.       MCI_WAVE_FORMAT_IBM_CVSD            $0005L
  3145.       MCI_WAVE_FORMAT_ALAW                DATATYPE_RIFF_ALAW
  3146.       MCI_WAVE_FORMAT_MULAW               DATATYPE_RIFF_MULAW
  3147.       MCI_WAVE_FORMAT_OKI_ADPCM           $0010L
  3148.       MCI_WAVE_FORMAT_DVI_ADPCM           $0011L
  3149.       MCI_WAVE_FORMAT_DIGISTD             $0015L
  3150.       MCI_WAVE_FORMAT_DIGIFIX             $0016L
  3151.       MCI_WAVE_FORMAT_AVC_ADPCM           DATATYPE_ADPCM_AVC
  3152.       MCI_WAVE_FORMAT_IBM_ADPCM           DATATYPE_ADPCM_AVC
  3153.       MCI_WAVE_FORMAT_IBM_MULAW           DATATYPE_MULAW
  3154.       MCI_WAVE_FORMAT_IBM_ALAW            DATATYPE_ALAW
  3155.       MCI_WAVE_FORMAT_CT_ADPCM            DATATYPE_CT_ADPCM
  3156.       MCI_WAVE_FORMAT_MPEG1               DATATYPE_MPEG1AUDIO
  3157.  
  3158. /*******************************************************/
  3159. /* MCI_SET flags for sequencer                         */
  3160. /*******************************************************/
  3161.       MCI_SEQ_SET_TEMPO                   $00100000L
  3162.       MCI_SEQ_SET_PORT                    $00200000L
  3163.       MCI_SEQ_ENABLE_PORT_MAPPER          $00400000L
  3164.       MCI_SEQ_DISABLE_PORT_MAPPER         $00800000L
  3165.       MCI_SEQ_SET_OFFSET                  $01000000L
  3166.       MCI_SEQ_SET_MASTER                  $02000000L
  3167.       MCI_SEQ_SET_SLAVE                   $04000000L
  3168.  
  3169.    /**********************************************/
  3170.    /* SEQ time formats                           */
  3171.    /**********************************************/
  3172.          MCI_SEQ_SET_SMPTE_24             $00000100L
  3173.          MCI_SEQ_SET_SMPTE_25             $00000200L
  3174.          MCI_SEQ_SET_SMPTE_30             $00000300L
  3175.          MCI_SEQ_SET_SMPTE_30DROP         $00000400L
  3176.          MCI_SEQ_SET_SONGPTR              $00000500L
  3177.  
  3178.    /**********************************************/
  3179.    /* SEQ synchronization types                  */
  3180.    /**********************************************/
  3181.          MCI_SEQ_MIDI                     $00000001L
  3182.          MCI_SEQ_SMPTE                    $00000002L
  3183.          MCI_SEQ_FILE                     $00000003L
  3184.          MCI_SEQ_NONE                     $00000004L
  3185.  
  3186.    /**********************************************/
  3187.    /* SEQ PORT TYPES                             */
  3188.    /**********************************************/
  3189.          MCI_SET_NONE                     $10000000L
  3190.          MIDI_MAPPER                      $20000000L
  3191.          MCI_MIDI_MAPPER                  MIDI_MAPPER
  3192.  
  3193. typedef struct _MCI_SET_PARMS {
  3194.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  3195.     ULONG   ulTimeFormat;    /* Time format to be used by the device           */
  3196.     ULONG   ulSpeedFormat;   /* Speed format used by this device               */
  3197.     ULONG   ulAudio;         /* Channel number for this operation              */
  3198.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  3199.                              /*  MCI_SET_AUDIO_ALL)                            */
  3200.     ULONG   ulLevel;         /* Volume, treble or bass level as % of max.      */
  3201.     ULONG   ulOver;          /* Delay time for vectored change in milliseconds */
  3202.     ULONG   ulItem;          /* Item field for set item flags                  */
  3203.     ULONG   ulValue;         /* Value associated with item flag                */
  3204. } MCI_SET_PARMS;
  3205. typedef MCI_SET_PARMS       *PMCI_SET_PARMS;
  3206.  
  3207. typedef MCI_SET_PARMS       MCI_AMP_SET_PARMS;
  3208. typedef MCI_AMP_SET_PARMS   *PMCI_AMP_SET_PARMS;
  3209.  
  3210. typedef MCI_SET_PARMS       MCI_DGV_SET_PARMS;
  3211. typedef MCI_DGV_SET_PARMS   *PMCI_DGV_SET_PARMS;
  3212.  
  3213. typedef MCI_SET_PARMS       MCI_OVLY_SET_PARMS;
  3214. typedef MCI_OVLY_SET_PARMS  *PMCI_OVLY_SET_PARMS;
  3215.  
  3216. typedef struct _MCI_CDXA_SET_PARMS {
  3217.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  3218.     ULONG   ulTimeFormat;    /* Time format to be used by the device           */
  3219.     ULONG   ulSpeedFormat;   /* Speed format used by this device               */
  3220.     ULONG   ulAudio;         /* Channel number for this operation              */
  3221.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  3222.                              /*  MCI_SET_AUDIO_ALL)                            */
  3223.     ULONG   ulLevel;         /* Volume, treble or bass level as % of max.      */
  3224.     ULONG   ulOver;          /* Delay time for vectored change in milliseconds */
  3225.     ULONG   ulItem;          /* Item field for set item flags                  */
  3226.     ULONG   ulValue;         /* Value associated with item flag                */
  3227.     ULONG   ulChannel;       /* Channel number                                 */
  3228.     PVOID   pPlayList;       /* Pointer to play list                           */
  3229.     ULONG   ulPlayListSize;  /* Play list size                                 */
  3230. } MCI_CDXA_SET_PARMS;
  3231. typedef MCI_CDXA_SET_PARMS   *PMCI_CDXA_SET_PARMS;
  3232.  
  3233. typedef struct _MCI_VD_SET_PARMS {
  3234.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  3235.     ULONG   ulTimeFormat;    /* Time format to be used by the device           */
  3236.     ULONG   ulSpeedFormat;   /* Speed format used by this device               */
  3237.     ULONG   ulAudio;         /* Channel number for this operation              */
  3238.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  3239.                              /*  MCI_SET_AUDIO_ALL)                            */
  3240.     ULONG   ulLevel;         /* Volume, treble or bass level as % of max.      */
  3241.     ULONG   ulOver;          /* Delay time for vectored change in milliseconds */
  3242.     ULONG   ulItem;          /* Item field for set item flags                  */
  3243.     ULONG   ulValue;         /* Value associated with item flag                */
  3244.     ULONG   ulChannel;       /* Videodisc channel                              */
  3245. } MCI_VD_SET_PARMS;
  3246. typedef MCI_VD_SET_PARMS   *PMCI_VD_SET_PARMS;
  3247.  
  3248. typedef struct _MCI_WAVE_SET_PARMS {
  3249.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  3250.     ULONG   ulTimeFormat;    /* Time format to be used by the device           */
  3251.     ULONG   ulSpeedFormat;   /* Speed format used by this device               */
  3252.     ULONG   ulAudio;         /* Channel number for this operation              */
  3253.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  3254.                              /*  MCI_SET_AUDIO_ALL)                            */
  3255.     ULONG   ulLevel;         /* Volume, trebble or bass level as % of max.     */
  3256.     ULONG   ulOver;          /* Delay time for vectored change in milliseconds */
  3257.     ULONG   ulItem;          /* Item field for set item flags                  */
  3258.     ULONG   ulValue;         /* Value associated with item flag                */
  3259.     USHORT  usInput;         /* Channel for input                              */
  3260.     USHORT  usReserved0;     /* Reserved field                                 */
  3261.     USHORT  usOutput;        /* Channel for output                             */
  3262.     USHORT  usReserved1;     /* Reserved field                                 */
  3263.     USHORT  usFormatTag;     /* Format tag                                     */
  3264.     USHORT  usReserved2;     /* Reserved field                                 */
  3265.     USHORT  usChannels;      /* mono(1) or stereo(2)                           */
  3266.     USHORT  usReserved3;     /* Reserved field                                 */
  3267.     ULONG   ulSamplesPerSec; /* Samples per seconds                            */
  3268.     ULONG   ulAvgBytesPerSec;/* Bytes per seconds                              */
  3269.     USHORT  usBlockAlign;    /* Block alignment of data                        */
  3270.     USHORT  usReserved4;     /* Reserved field                                 */
  3271.     USHORT  usBitsPerSample; /* Bits per seconds                               */
  3272.     USHORT  usReserved5;     /* Reserved field                                 */
  3273. } MCI_WAVE_SET_PARMS;
  3274. typedef MCI_WAVE_SET_PARMS   *PMCI_WAVE_SET_PARMS;
  3275.  
  3276. typedef struct _MCI_SEQ_SET_PARMS {
  3277.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  3278.     ULONG   ulTimeFormat;    /* Time format to be used by the device           */
  3279.     ULONG   ulSpeedFormat;   /* Speed format used by this device               */
  3280.     ULONG   ulAudio;         /* Channel number for this operation              */
  3281.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  3282.                              /*  MCI_SET_AUDIO_ALL)                            */
  3283.     ULONG   ulLevel;         /* Volume, trebble or bass level as % of max.     */
  3284.     ULONG   ulOver;          /* Delay time for vectored change in milliseconds */
  3285.     ULONG   ulItem;          /* Item field for set item flags                  */
  3286.     ULONG   ulValue;         /* Value associated with item flag                */
  3287.     ULONG   ulTempo;         /* Specified the tempo                            */
  3288.     ULONG   ulPort;          /* Output port                                    */
  3289.     ULONG   ulSlave;         /* Unused field                                   */
  3290.     ULONG   ulMaster;        /* Unused field                                   */
  3291.     ULONG   ulOffset;        /* Specified the data offset                      */
  3292. } MCI_SEQ_SET_PARMS;
  3293. typedef MCI_SEQ_SET_PARMS   *PMCI_SEQ_SET_PARMS;
  3294.  
  3295.  
  3296. /*********************************************************************/
  3297. /* parameters for the MCI_SET_CUEPOINT message                       */
  3298. /*     $0000$00 are reserved for MCI_SET_CUEPOINT flags            */
  3299. /*********************************************************************/
  3300.       MCI_SET_CUEPOINT_ON                 $00000100L
  3301.       MCI_SET_CUEPOINT_OFF                $00000200L
  3302.  
  3303. typedef struct _MCI_CUEPOINT_PARMS {
  3304.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  3305.     ULONG   ulCuepoint;      /* Specifies the cuepoint location                */
  3306.     USHORT  usUserParm;      /* User parmameter returned on cuepoint           */
  3307.                              /* notify message                                 */
  3308.     USHORT  usReserved0;     /* Reserved field                                 */
  3309. } MCI_CUEPOINT_PARMS;
  3310. typedef MCI_CUEPOINT_PARMS   *PMCI_CUEPOINT_PARMS;
  3311.  
  3312. /*********************************************************************/
  3313. /* parameters for the MCI_SETIMAGEPALETTE message                    */
  3314. /*     $00$XX00 are reserved for MCI_SETIMAGEPALETTE flags         */
  3315. /*********************************************************************/
  3316.       MCI_SET_REGISTERED                  $00000100L
  3317.  
  3318. /*********************************************************************/
  3319. /* flags and parameter structure for the MCI_SET_POSITION_ADVISE msg */
  3320. /*     $0000$00 are reserved for MCI_SET_POSITION_ADVISE flags     */
  3321. /*********************************************************************/
  3322.       MCI_SET_POSITION_ADVISE_ON          $00000100L
  3323.       MCI_SET_POSITION_ADVISE_OFF         $00000200L
  3324.  
  3325. typedef struct _MCI_POSITION_PARMS {
  3326.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  3327.     ULONG   ulUnits;         /* Specifies position change notifiication        */
  3328.                              /* granularity                                    */
  3329.     USHORT  usUserParm;      /* User parameter returned on position change     */
  3330.                              /* notification message.                          */
  3331.     USHORT  Reserved0;       /* Reserved field                                 */
  3332.     ULONG   Reserved1;       /* Reserved field                                 */
  3333.     } MCI_POSITION_PARMS;
  3334. typedef MCI_POSITION_PARMS   *PMCI_POSITION_PARMS;
  3335.  
  3336. /*********************************************************************/
  3337. /* parameter structure for the MCI_SET_SYNC_OFFSET message           */
  3338. /*********************************************************************/
  3339. typedef struct _MCI_SYNC_OFFSET_PARMS {
  3340.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  3341.     ULONG   ulOffset;        /* Specifies the device media position offset     */
  3342.                              /* in the currently specified device units.       */
  3343. } MCI_SYNC_OFFSET_PARMS;
  3344. typedef MCI_SYNC_OFFSET_PARMS   *PMCI_SYNC_OFFSET_PARMS;
  3345.  
  3346. /*********************************************************************/
  3347. /* flags for the MCI_SPIN message                                    */
  3348. /*     $0000$00 are reserved for MCI_SPIN flags                    */
  3349. /*********************************************************************/
  3350.       MCI_SPIN_UP                         $00000100L
  3351.       MCI_SPIN_DOWN                       $00000200L
  3352.  
  3353. /*********************************************************************/
  3354. /* MCI_STATUS message flags                                          */
  3355. /*     $00$XX00 are reserved for MCI_STATUS flags                  */
  3356. /*     MCI_VOLUME and MCI_VOLUME_DELAY are $00000100 and $00000200 */
  3357. /*********************************************************************/
  3358.       MCI_STATUS_ITEM                     $00000100L
  3359.       MCI_STATUS_START                    $00000200L
  3360.       MCI_STATUS_CONNECTOR                $00000400L
  3361.  
  3362. /*************************************************/
  3363. /* General MCI_STATUS item values                */
  3364. /*************************************************/
  3365.       MCI_STATUS_CURRENT_TRACK            $00000001L
  3366.       MCI_STATUS_LENGTH                   $00000002L
  3367.       MCI_STATUS_MODE                     $00000003L
  3368.       MCI_STATUS_NUMBER_OF_TRACKS         $00000004L
  3369.       MCI_STATUS_POSITION                 $00000005L
  3370.       MCI_STATUS_POSITION_IN_TRACK        $00000006L
  3371.       MCI_STATUS_MEDIA_PRESENT            $00000007L
  3372.       MCI_STATUS_VOLUME                   $00000008L
  3373.       MCI_STATUS_READY                    $00000009L
  3374.       MCI_STATUS_TIME_FORMAT              $0000000AL
  3375.       MCI_STATUS_SPEED_FORMAT             $0000000BL
  3376.       MCI_STATUS_MONITOR                  $0000000CL
  3377.       MCI_STATUS_AUDIO                    $0000000DL
  3378.       MCI_STATUS_VIDEO                    $0000000EL
  3379.       MCI_STATUS_CLIPBOARD                $0000000FL
  3380.       MCI_STATUS_CAN_PASTE                $00000010L
  3381.       MCI_STATUS_CAN_REDO                 $00000020L
  3382.       MCI_STATUS_CAN_UNDO                 $00000030L
  3383.  
  3384.    /*************************************************/
  3385.    /* ulValue field values for MCI_STATUS_AUDIO     */
  3386.    /*************************************************/
  3387.       MCI_STATUS_AUDIO_ALL                   $00000000L
  3388.       MCI_STATUS_AUDIO_LEFT                  $00000001L
  3389.       MCI_STATUS_AUDIO_RIGHT                 $00000002L
  3390.  
  3391. /*************************************************/
  3392. /* MCI_STATUS item values for amp/mixer          */
  3393. /*************************************************/
  3394.       MCI_AMP_STATUS_PITCH                MCI_AMP_ITEM_BASE
  3395.       MCI_AMP_STATUS_TREBLE               (MCI_AMP_ITEM_BASE+1)
  3396.       MCI_AMP_STATUS_BASS                 (MCI_AMP_ITEM_BASE+2)
  3397.       MCI_AMP_STATUS_BALANCE              (MCI_AMP_ITEM_BASE+3)
  3398.       MCI_AMP_STATUS_GAIN                 (MCI_AMP_ITEM_BASE+4)
  3399.       MCI_AMP_STATUS_MONITOR              (MCI_AMP_ITEM_BASE+5)
  3400.       MCI_AMP_STATUS_MID                  (MCI_AMP_ITEM_BASE+6)
  3401.       MCI_AMP_STATUS_VOLUME               MCI_STATUS_VOLUME
  3402.       MCI_AMP_STATUS_LOUDNESS             (MCI_AMP_ITEM_BASE+7)
  3403.       MCI_AMP_STATUS_CROSSOVER            (MCI_AMP_ITEM_BASE+8)
  3404.       MCI_AMP_STATUS_REVERB               (MCI_AMP_ITEM_BASE+9)
  3405.       MCI_AMP_STATUS_ALC                  (MCI_AMP_ITEM_BASE+10)
  3406.       MCI_AMP_STATUS_CHORUS               (MCI_AMP_ITEM_BASE+11)
  3407.       MCI_AMP_STATUS_CUSTOM1              (MCI_AMP_ITEM_BASE+12)
  3408.       MCI_AMP_STATUS_CUSTOM2              (MCI_AMP_ITEM_BASE+13)
  3409.       MCI_AMP_STATUS_CUSTOM3              (MCI_AMP_ITEM_BASE+14)
  3410.  
  3411.  
  3412. /*************************************************/
  3413. /* MCI_STATUS item values for cd audio           */
  3414. /*************************************************/
  3415.       MCI_CD_STATUS_TRACK_TYPE            MCI_CD_ITEM_BASE
  3416.       MCI_CD_STATUS_TRACK_COPYPERMITTED   (MCI_CD_ITEM_BASE+1)
  3417.       MCI_CD_STATUS_TRACK_CHANNELS        (MCI_CD_ITEM_BASE+2)
  3418.       MCI_CD_STATUS_TRACK_PREEMPHASIS     (MCI_CD_ITEM_BASE+3)
  3419.  
  3420.     /************************************************/
  3421.     /* return values for CD MCI_STATUS message with */
  3422.     /*   MCI_CD_STATUS_TRACK_TYPE set               */
  3423.     /************************************************/
  3424.       MCI_CD_TRACK_AUDIO                  $00000001L
  3425.       MCI_CD_TRACK_DATA                   $00000002L
  3426.       MCI_CD_TRACK_OTHER                  $00000003L
  3427.  
  3428. /*************************************************/
  3429. /* MCI_STATUS item values for CDXA               */
  3430. /*************************************************/
  3431.       MCI_CDXA_STATUS_CHANNEL             MCI_CDXA_ITEM_BASE
  3432.  
  3433.     /************************************************/
  3434.     /*returned from call for MCI_CDXA_STATUS_CHANNEL*/
  3435.     /************************************************/
  3436.       MCI_CDXA_NONE                       $00000000L
  3437.  
  3438.  
  3439. /*************************************************/
  3440. /* MCI_STATUS item values for sequencer          */
  3441. /*************************************************/
  3442.       MCI_SEQ_STATUS_TEMPO                MCI_SEQ_ITEM_BASE
  3443.       MCI_SEQ_STATUS_OFFSET               (MCI_SEQ_ITEM_BASE+1)
  3444.       MCI_SEQ_STATUS_DIVTYPE              (MCI_SEQ_ITEM_BASE+2)
  3445.       MCI_SEQ_STATUS_MASTER               (MCI_SEQ_ITEM_BASE+3)
  3446.       MCI_SEQ_STATUS_PORT                 (MCI_SEQ_ITEM_BASE+4)
  3447.       MCI_SEQ_STATUS_SLAVE                (MCI_SEQ_ITEM_BASE+5)
  3448.  
  3449.    /**********************************************/
  3450.    /* Return value for current division type     */
  3451.    /**********************************************/
  3452.       MCI_SEQ_DIV_PPQN                    $00000001L
  3453.       MCI_SEQ_DIV_SMPTE_24                $00000002L
  3454.       MCI_SEQ_DIV_SMPTE_25                $00000003L
  3455.       MCI_SEQ_DIV_SMPTE_30DROP            $00000004L
  3456.       MCI_SEQ_DIV_SMPTE_30                $00000005L
  3457.  
  3458.    /*************************************************/
  3459.    /* MCI_STATUS items for videodisc                */
  3460.    /*************************************************/
  3461.       MCI_VD_STATUS_SPEED                 MCI_VD_ITEM_BASE
  3462.       MCI_VD_STATUS_FORWARD               (MCI_VD_ITEM_BASE+1)
  3463.       MCI_VD_MEDIA_TYPE                   (MCI_VD_ITEM_BASE+2)
  3464.       MCI_VD_STATUS_SIDE                  (MCI_VD_ITEM_BASE+3)
  3465.       MCI_VD_STATUS_DISC_SIZE             (MCI_VD_ITEM_BASE+4)
  3466.  
  3467.     /***********************************************/
  3468.     /* return values for videodisc status command  */
  3469.     /***********************************************/
  3470.       MCI_VD_SPEED_NORMAL                 $00000000L
  3471.       MCI_VD_SPEED_FAST                   $00000001L
  3472.       MCI_VD_SPEED_SLOW                   $00000002L
  3473.  
  3474. /*************************************************/
  3475. /* MCI_STATUS items for wave audio               */
  3476. /*************************************************/
  3477.       MCI_WAVE_STATUS_LEVEL               MCI_WAVE_ITEM_BASE
  3478.       MCI_WAVE_STATUS_SAMPLESPERSEC       (MCI_WAVE_ITEM_BASE+1)
  3479.       MCI_WAVE_STATUS_AVGBYTESPERSEC      (MCI_WAVE_ITEM_BASE+2)
  3480.       MCI_WAVE_STATUS_BLOCKALIGN          (MCI_WAVE_ITEM_BASE+3)
  3481.       MCI_WAVE_STATUS_FORMATTAG           (MCI_WAVE_ITEM_BASE+4)
  3482.       MCI_WAVE_STATUS_CHANNELS            (MCI_WAVE_ITEM_BASE+5)
  3483.       MCI_WAVE_STATUS_BITSPERSAMPLE       (MCI_WAVE_ITEM_BASE+6)
  3484.  
  3485. /*************************************************/
  3486. /* Common video MCI_STATUS items                 */
  3487. /*************************************************/
  3488.       MCI_VID_STATUS_HWND                 MCI_VID_ITEM_BASE
  3489.       MCI_VID_STATUS_AUDIO_COMPRESSION    (MCI_VID_ITEM_BASE+1)
  3490.       MCI_VID_STATUS_VIDEO_COMPRESSION    (MCI_VID_ITEM_BASE+2)
  3491.       MCI_VID_STATUS_IMAGE_COMPRESSION    (MCI_VID_ITEM_BASE+3)
  3492.       MCI_VID_STATUS_AUDIO_QUALITY        (MCI_VID_ITEM_BASE+4)
  3493.       MCI_VID_STATUS_VIDEO_QUALITY        (MCI_VID_ITEM_BASE+5)
  3494.       MCI_VID_STATUS_IMAGE_QUALITY        (MCI_VID_ITEM_BASE+6)
  3495.       MCI_VID_STATUS_IMAGE_BITSPERPEL     (MCI_VID_ITEM_BASE+7)
  3496.       MCI_VID_STATUS_IMAGE_PELFORMAT      (MCI_VID_ITEM_BASE+8)
  3497.       MCI_VID_STATUS_FORWARD              (MCI_VID_ITEM_BASE+9)
  3498.       MCI_VID_STATUS_NORMAL_RATE          (MCI_VID_ITEM_BASE+10)
  3499.       MCI_VID_STATUS_VIDEO_X_EXTENT       (MCI_VID_ITEM_BASE+11)
  3500.       MCI_VID_STATUS_VIDEO_Y_EXTENT       (MCI_VID_ITEM_BASE+12)
  3501.       MCI_VID_STATUS_IMAGE_X_EXTENT       (MCI_VID_ITEM_BASE+13)
  3502.       MCI_VID_STATUS_IMAGE_Y_EXTENT       (MCI_VID_ITEM_BASE+14)
  3503.       MCI_VID_STATUS_BRIGHTNESS           (MCI_VID_ITEM_BASE+15)
  3504.       MCI_VID_STATUS_CONTRAST             (MCI_VID_ITEM_BASE+16)
  3505.       MCI_VID_STATUS_HUE                  (MCI_VID_ITEM_BASE+17)
  3506.       MCI_VID_STATUS_SATURATION           (MCI_VID_ITEM_BASE+18)
  3507.       MCI_VID_STATUS_GREYSCALE            (MCI_VID_ITEM_BASE+19)
  3508.       MCI_VID_STATUS_SHARPNESS            (MCI_VID_ITEM_BASE+20)
  3509.       MCI_VID_STATUS_SPEED                (MCI_VID_ITEM_BASE+21)
  3510.       MCI_VID_STATUS_IMAGE_FILE_FORMAT    (MCI_VID_ITEM_BASE+22)
  3511.       MCI_VID_STATUS_TRANSPARENT_TYPE     (MCI_VID_ITEM_BASE+23)
  3512.       MCI_VID_STATUS_REF_INTERVAL         (MCI_VID_ITEM_BASE+24)
  3513.       MCI_VID_STATUS_MAXDATARATE          (MCI_VID_ITEM_BASE+25)
  3514.       MCI_VID_STATUS_VIDEO_FILE_FORMAT    (MCI_VID_ITEM_BASE+26)
  3515.  
  3516.    /*************************************************/
  3517.    /* Status Transparent Type returns               */
  3518.    /* MCI_VID_PALETTE                               */
  3519.    /* MCI_VID_RGB                                   */
  3520.    /* MCI_VID_YUV                                   */
  3521.    /*************************************************/
  3522.       MCI_VID_STATUS_TRANSPARENT_COLOR    (MCI_VID_ITEM_BASE+24)
  3523.  
  3524. /*************************************************/
  3525. /* MCI_STATUS items for digital video            */
  3526. /*************************************************/
  3527.       MCI_DGV_STATUS_HWND                 MCI_VID_STATUS_HWND
  3528.       MCI_DGV_STATUS_AUDIO_COMPRESSION    MCI_VID_STATUS_AUDIO_COMPRESSION
  3529.       MCI_DGV_STATUS_VIDEO_COMPRESSION    MCI_VID_STATUS_VIDEO_COMPRESSION
  3530.       MCI_DGV_STATUS_IMAGE_COMPRESSION    MCI_VID_STATUS_IMAGE_COMPRESSION
  3531.       MCI_DGV_STATUS_AUDIO_QUALITY        MCI_VID_STATUS_AUDIO_QUALITY
  3532.       MCI_DGV_STATUS_VIDEO_QUALITY        MCI_VID_STATUS_VIDEO_QUALITY
  3533.       MCI_DGV_STATUS_IMAGE_QUALITY        MCI_VID_STATUS_IMAGE_QUALITY
  3534.       MCI_DGV_STATUS_IMAGE_BITSPERPEL     MCI_VID_STATUS_IMAGE_BITSPERPEL
  3535.       MCI_DGV_STATUS_IMAGE_PELFORMAT      MCI_VID_STATUS_IMAGE_PELFORMAT
  3536.       MCI_DGV_STATUS_FORWARD              MCI_VID_STATUS_FORWARD
  3537.       MCI_DGV_STATUS_NORMAL_RATE          MCI_VID_STATUS_NORMAL_RATE
  3538.       MCI_DGV_STATUS_VIDEO_X_EXTENT       MCI_VID_STATUS_VIDEO_X_EXTENT
  3539.       MCI_DGV_STATUS_VIDEO_Y_EXTENT       MCI_VID_STATUS_VIDEO_Y_EXTENT
  3540.       MCI_DGV_STATUS_IMAGE_X_EXTENT       MCI_VID_STATUS_IMAGE_X_EXTENT
  3541.       MCI_DGV_STATUS_IMAGE_Y_EXTENT       MCI_VID_STATUS_IMAGE_Y_EXTENT
  3542.       MCI_DGV_STATUS_BRIGHTNESS           MCI_VID_STATUS_BRIGHTNESS
  3543.       MCI_DGV_STATUS_CONTRAST             MCI_VID_STATUS_CONTRAST
  3544.       MCI_DGV_STATUS_HUE                  MCI_VID_STATUS_HUE
  3545.       MCI_DGV_STATUS_SATURATION           MCI_VID_STATUS_SATURATION
  3546.       MCI_DGV_STATUS_SPEED                MCI_VID_STATUS_SPEED
  3547.       MCI_DGV_STATUS_SHARPNESS            MCI_VID_STATUS_SHARPNESS
  3548.       MCI_DGV_STATUS_REF_INTERVAL         MCI_VID_STATUS_REF_INTERVAL
  3549.       MCI_DGV_STATUS_MAXDATARATE          MCI_VID_STATUS_MAXDATARATE
  3550.       MCI_DGV_STATUS_VIDEO_FILE_FORMAT    MCI_VID_STATUS_VIDEO_FILE_FORMAT
  3551.  
  3552.       MCI_DGV_STATUS_CHANNELS             (MCI_DGV_ITEM_BASE+13)
  3553.       MCI_DGV_STATUS_BITSPERSAMPLE        (MCI_DGV_ITEM_BASE+14)
  3554.       MCI_DGV_STATUS_SAMPLESPERSEC        (MCI_DGV_ITEM_BASE+15)
  3555.       MCI_DGV_STATUS_FORMATTAG            (MCI_DGV_ITEM_BASE+16)
  3556.       MCI_DGV_STATUS_BLOCKALIGN           (MCI_DGV_ITEM_BASE+17)
  3557.       MCI_DGV_STATUS_AVGBYTESPERSEC       (MCI_DGV_ITEM_BASE+18)
  3558.       MCI_DGV_STATUS_VIDEO_COMPRESSION_SUBTYPE   (MCI_DGV_ITEM_BASE+19)
  3559.       MCI_DGV_STATUS_VIDEO_RECORD_RATE           (MCI_DGV_ITEM_BASE+20)
  3560.       MCI_DGV_STATUS_VIDEO_RECORD_FRAME_DURATION (MCI_DGV_ITEM_BASE+21)
  3561.       MCI_DGV_STATUS_RECORD_AUDIO         (MCI_DGV_ITEM_BASE+22)
  3562.       MCI_DGV_STATUS_TRANSPARENT_COLOR    (MCI_DGV_ITEM_BASE+23)
  3563.       MCI_DGV_STATUS_GRAPHIC_TRANSPARENT_COLOR (MCI_DGV_ITEM_BASE+23)  /* MUST BE SAME AS TRANSPARENT COLOR */
  3564.       MCI_DGV_STATUS_HWND_MONITOR         (MCI_DGV_ITEM_BASE+24)
  3565.       MCI_DGV_STATUS_DROPPED_FRAME_PCT    (MCI_DGV_ITEM_BASE+25)
  3566.       MCI_DGV_STATUS_AUDIOSYNC            (MCI_DGV_ITEM_BASE+26)
  3567.       MCI_DGV_STATUS_AUDIOSYNC_DIRECTION  (MCI_DGV_ITEM_BASE+27)
  3568.       MCI_DGV_STATUS_VIDEO_TRANSPARENT_COLOR (MCI_DGV_ITEM_BASE+28)  /* MUST BE SAME AS TRANSPARENT COLOR */
  3569.       MCI_DGV_STATUS_TUNER_TV_CHANNEL     (MCI_DGV_ITEM_BASE+29)
  3570.       MCI_DGV_STATUS_TUNER_LOW_TV_CHANNEL (MCI_DGV_ITEM_BASE+29)
  3571.       MCI_DGV_STATUS_TUNER_HIGH_TV_CHANNEL (MCI_DGV_ITEM_BASE+29)
  3572.       MCI_DGV_STATUS_TUNER_REGION          (MCI_DGV_ITEM_BASE+30)
  3573.       MCI_DGV_STATUS_TUNER_FINETUNE        (MCI_DGV_ITEM_BASE+31)
  3574.       MCI_DGV_STATUS_TUNER_FREQUENCY       (MCI_DGV_ITEM_BASE+32)
  3575.       MCI_DGV_STATUS_TUNER_AUDIO_CHANNEL   (MCI_DGV_ITEM_BASE+33)
  3576.       MCI_DGV_STATUS_TUNER_AFC             (MCI_DGV_ITEM_BASE+34)
  3577.       MCI_DGV_STATUS_VALID_SIGNAL          (MCI_DGV_ITEM_BASE+35)
  3578.  
  3579. /*************************************************/
  3580. /* MCI_STATUS item values for video overlay      */
  3581. /*************************************************/
  3582.       MCI_OVLY_STATUS_HWND                 MCI_VID_STATUS_HWND
  3583.       MCI_OVLY_STATUS_IMAGE_COMPRESSION    MCI_VID_STATUS_IMAGE_COMPRESSION
  3584.       MCI_OVLY_STATUS_IMAGE_BITSPERPEL     MCI_VID_STATUS_IMAGE_BITSPERPEL
  3585.       MCI_OVLY_STATUS_IMAGE_PELFORMAT      MCI_VID_STATUS_IMAGE_PELFORMAT
  3586.       MCI_OVLY_STATUS_IMAGE_X_EXTENT       MCI_VID_STATUS_IMAGE_X_EXTENT
  3587.       MCI_OVLY_STATUS_IMAGE_Y_EXTENT       MCI_VID_STATUS_IMAGE_Y_EXTENT
  3588.       MCI_OVLY_STATUS_BRIGHTNESS           MCI_VID_STATUS_BRIGHTNESS
  3589.       MCI_OVLY_STATUS_CONTRAST             MCI_VID_STATUS_CONTRAST
  3590.       MCI_OVLY_STATUS_HUE                  MCI_VID_STATUS_HUE
  3591.       MCI_OVLY_STATUS_SATURATION           MCI_VID_STATUS_SATURATION
  3592.       MCI_OVLY_STATUS_GREYSCALE            MCI_VID_STATUS_GREYSCALE
  3593.       MCI_OVLY_STATUS_IMAGE_QUALITY        MCI_VID_STATUS_IMAGE_QUALITY
  3594.       MCI_OVLY_STATUS_SHARPNESS            MCI_VID_STATUS_SHARPNESS
  3595.       MCI_OVLY_STATUS_IMAGE_FILE_FORMAT    MCI_VID_STATUS_IMAGE_FILE_FORMAT
  3596.       MCI_OVLY_STATUS_TRANSPARENT_TYPE     MCI_VID_STATUS_TRANSPARENT_TYPE
  3597.       MCI_OVLY_STATUS_TRANSPARENT_COLOR    MCI_VID_STATUS_TRANSPARENT_COLOR
  3598.  
  3599.    /*************************************************/
  3600.    /* Status Mode return values                     */
  3601.    /*************************************************/
  3602.       MCI_MODE_NOT_READY                  $00000001L
  3603.       MCI_MODE_PAUSE                      $00000002L
  3604.       MCI_MODE_PLAY                       $00000003L
  3605.       MCI_MODE_STOP                       $00000004L
  3606.       MCI_MODE_RECORD                     $00000005L
  3607.       MCI_MODE_SEEK                       $00000006L
  3608.  
  3609.    /*************************************************/
  3610.    /* Status Direction return values                */
  3611.    /*************************************************/
  3612.       MCI_FORWARD                         $00000000L
  3613.       MCI_REVERSE                         $00000001L
  3614.  
  3615. typedef struct _MCI_STATUS_PARMS {
  3616.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  3617.     ULONG   ulReturn;        /* Return field                            */
  3618.     ULONG   ulItem;          /* Item field for STATUS item to query     */
  3619.     ULONG   ulValue;         /* Status value field (this used to be)    */
  3620.                              /*  ulTrack but was changed in Rel 1.1     */
  3621.                              /*  to extend the status structure.        */
  3622.                              /*  See the programming reference on when  */
  3623.                              /*  ulValue is used and how...             */
  3624. } MCI_STATUS_PARMS;
  3625. typedef MCI_STATUS_PARMS   *PMCI_STATUS_PARMS;
  3626.  
  3627.  
  3628. typedef struct _MCI_CDXA_STATUS_PARMS {
  3629.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  3630.     ULONG   ulReturn;        /* Return field                            */
  3631.     ULONG   ulItem;          /* Item field for STATUS item to query     */
  3632.     ULONG   ulValue;         /* Status value field (this used to be)    */
  3633.                              /*  ulTrack but was changed in Rel 1.1     */
  3634.                              /*  to extend the status structure.        */
  3635.                              /*  See the programming reference on when  */
  3636.                              /*  ulValue is used and how...             */
  3637.     ULONG   ulChannel;       /* Channel                                 */
  3638. } MCI_CDXA_STATUS_PARMS;
  3639. typedef MCI_CDXA_STATUS_PARMS   *PMCI_CDXA_STATUS_PARMS;
  3640.  
  3641. /*********************************************************************/
  3642. /* flags and parameter structure for the MCI_STEP message            */
  3643. /*     $0000$00 are reserved for MCI_STEP flags                    */
  3644. /*********************************************************************/
  3645.       MCI_STEP_FRAMES                     $00000100L
  3646.       MCI_STEP_REVERSE                    $00000200L
  3647.  
  3648. typedef struct _MCI_STEP_PARMS {
  3649.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  3650.     ULONG   ulStep;          /* amount to step in current time format   */
  3651. } MCI_STEP_PARMS;
  3652. typedef MCI_STEP_PARMS   *PMCI_STEP_PARMS;
  3653.  
  3654. /*********************************************************************/
  3655. /* flags for the MCI_SYSINFO message                                 */
  3656. /*     $XXXXXX00 are reserved for MCI_SYSINFO flags                 */
  3657. /*********************************************************************/
  3658.       MCI_SYSINFO_QUANTITY                $00000100L
  3659.       MCI_SYSINFO_OPEN                    $00000200L
  3660.       MCI_SYSINFO_NAME                    $00000400L
  3661.       MCI_SYSINFO_INSTALLNAME             $00000800L
  3662.       MCI_SYSINFO_ITEM                    $00001000L
  3663.       MCI_SYSINFO_INI_LOCK                $00002000L
  3664.  
  3665.     /********************************************************/
  3666.     /* Extended SYSINFO functions                           */
  3667.     /********************************************************/
  3668.           MCI_SYSINFO_INSTALL_DRIVER      $00000001L
  3669.           MCI_SYSINFO_QUERY_DRIVER        $00000002L
  3670.           MCI_SYSINFO_DELETE_DRIVER       $00000004L
  3671.           MCI_SYSINFO_SET_PARAMS          $00000008L
  3672.           MCI_SYSINFO_QUERY_PARAMS        $00000010L
  3673.           MCI_SYSINFO_SET_CONNECTORS      $00000020L
  3674.           MCI_SYSINFO_QUERY_CONNECTORS    $00000040L
  3675.           MCI_SYSINFO_SET_EXTENSIONS      $00000080L
  3676.           MCI_SYSINFO_QUERY_EXTENSIONS    $00000100L
  3677.           MCI_SYSINFO_SET_ALIAS           $00000200L
  3678.           MCI_SYSINFO_QUERY_NAMES         $00000400L
  3679.           MCI_SYSINFO_SET_DEFAULT         $00000800L
  3680.           MCI_SYSINFO_QUERY_DEFAULT       $00001000L
  3681.           MCI_SYSINFO_SET_TYPES           $00002000L
  3682.           MCI_SYSINFO_QUERY_TYPES         $00004000L
  3683.  
  3684.     /********************************************************/
  3685.     /* Device Flags                                         */
  3686.     /********************************************************/
  3687.           MCI_SYSINFO_DEV_CONTROLLABLE    $00000001L
  3688.           MCI_SYSINFO_DEV_NONCONTROLLABLE $00000002L
  3689.           MCI_SYSINFO_DEVICESETTINGS      $00000004L
  3690.  
  3691. /*********************************************************************/
  3692. /* parameter structures for the MCI_SYSINFO message                  */
  3693. /*********************************************************************/
  3694. typedef struct _MCI_SYSINFO_PARMS {
  3695.     HWND    hwndDummyCallback; /* NOTIFY not allowed for SYSINFO          */
  3696.     PSZ     pszReturn;         /* Pointer to return buffer                */
  3697.     ULONG   ulRetSize;         /* Return buffer size                      */
  3698.     ULONG   ulNumber;          /* Ordinal Number                          */
  3699.     USHORT  usDeviceType;      /* MCI device type number                  */
  3700.     USHORT  usReserved0;       /* Reserved field                          */
  3701.     ULONG   ulItem;            /* Used to indicate the MCI_SYSINFO        */
  3702.                                /* extended function to perform            */
  3703.     PVOID   pSysInfoParm;
  3704. } MCI_SYSINFO_PARMS;
  3705. typedef MCI_SYSINFO_PARMS   *PMCI_SYSINFO_PARMS;
  3706.  
  3707. typedef struct _MCI_SYSINFO_LOGDEVICE {
  3708.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  3709.     USHORT  usDeviceType;                         /* Device type number             */
  3710.     ULONG   ulDeviceFlag;                         /* Flag indicating whether device */
  3711.                                                   /*  device is controllable or not */
  3712.     CHAR    szVersionNumber[MAX_VERSION_NUMBER];  /* INI file version number        */
  3713.     CHAR    szProductInfo[MAX_PRODINFO];          /* Textual product description    */
  3714.     CHAR    szMCDDriver[MAX_DEVICE_NAME];         /* MCI Driver dll name            */
  3715.     CHAR    szVSDDriver[MAX_DEVICE_NAME];         /* VSD dll name                   */
  3716.     CHAR    szPDDName[MAX_PDD_NAME];              /* Device PDD name                */
  3717.     CHAR    szMCDTable[MAX_DEVICE_NAME];          /* Device type command table      */
  3718.     CHAR    szVSDTable[MAX_DEVICE_NAME];          /* Device specific command table  */
  3719.     USHORT  usShareType;                          /* Device sharing mode            */
  3720.     CHAR    szResourceName[MAX_DEVICE_NAME];      /* Resource name                  */
  3721.     USHORT  usResourceUnits;                      /* Total resource units available */
  3722.                                                   /*  for this device               */
  3723.     USHORT  usResourceClasses;                    /* Number of resource classes for */
  3724.                                                   /*  this device                   */
  3725.     USHORT  ausClassArray[MAX_CLASSES];           /* Maximum number of resource     */
  3726.                                                   /*  units for each class          */
  3727.     USHORT  ausValidClassArray[MAX_CLASSES][MAX_CLASSES]; /* Valid class combinations */
  3728. } MCI_SYSINFO_LOGDEVICE;
  3729. typedef MCI_SYSINFO_LOGDEVICE  *PMCI_SYSINFO_LOGDEVICE;
  3730.  
  3731.  
  3732. typedef struct _MCI_SYSINFO_DEVPARAMS {
  3733.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  3734.     CHAR    szDevParams[MAX_DEV_PARAMS];          /* Device specific parameters     */
  3735. } MCI_SYSINFO_DEVPARAMS;
  3736. typedef MCI_SYSINFO_DEVPARAMS *PMCI_SYSINFO_DEVPARAMS;
  3737.  
  3738. typedef struct _CONNECT {
  3739.     USHORT usConnectType;                         /* Connector type                 */
  3740.     CHAR   szToInstallName[MAX_DEVICE_NAME];      /* Install name this connector    */
  3741.                                                   /*  is connected to               */
  3742.     USHORT usToConnectIndex;                      /* Connector index this connector */
  3743.                                                   /*  is connected to               */
  3744. } CONNECT;
  3745. typedef CONNECT *PCONNECT;
  3746.  
  3747.  
  3748. typedef struct _MCI_SYSINFO_CONPARAMS {
  3749.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  3750.     USHORT  usNumConnectors;                      /* Number of device connectors    */
  3751.     CONNECT ConnectorList[MAX_CONNECTORS];        /* Connector list array           */
  3752. } MCI_SYSINFO_CONPARAMS;
  3753. typedef MCI_SYSINFO_CONPARAMS *PMCI_SYSINFO_CONPARAMS;
  3754.  
  3755. typedef struct _MCI_SYSINFO_EXTENSION {
  3756.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  3757.     USHORT  usNumExtensions;                      /* Number of extensions           */
  3758.     CHAR    szExtension[MAX_EXTENSIONS][MAX_EXTENSION_NAME];
  3759.                                                   /* Extension name array           */
  3760. } MCI_SYSINFO_EXTENSION;
  3761. typedef MCI_SYSINFO_EXTENSION *PMCI_SYSINFO_EXTENSION;
  3762.  
  3763. typedef struct _MCI_SYSINFO_ALIAS {
  3764.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  3765.     CHAR    szAliasName[MAX_ALIAS_NAME];          /* Alias name           */
  3766. } MCI_SYSINFO_ALIAS;
  3767. typedef MCI_SYSINFO_ALIAS *PMCI_SYSINFO_ALIAS;
  3768.  
  3769. typedef struct _MCI_SYSINFO_DEFAULTDEVICE {
  3770.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  3771.     USHORT  usDeviceType;                         /* Device type number   */
  3772. } MCI_SYSINFO_DEFAULTDEVICE;
  3773. typedef MCI_SYSINFO_DEFAULTDEVICE *PMCI_SYSINFO_DEFAULTDEVICE;
  3774.  
  3775. typedef struct _MCI_SYSINFO_QUERY_NAME {
  3776.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  3777.     CHAR    szLogicalName[MAX_DEVICE_NAME];       /* Logical device name  */
  3778.     CHAR    szAliasName[MAX_ALIAS_NAME];          /* Alias name           */
  3779.     USHORT  usDeviceType;                         /* Device type number   */
  3780.     USHORT  usDeviceOrd;                          /* Device type ordinal  */
  3781. } MCI_SYSINFO_QUERY_NAME;
  3782. typedef MCI_SYSINFO_QUERY_NAME *PMCI_SYSINFO_QUERY_NAME;
  3783.  
  3784. typedef struct _MCI_SYSINFO_TYPES {
  3785.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  3786.     CHAR    szTypes[MAX_TYPEBUFFER+1];            /* EA types             */
  3787. } MCI_SYSINFO_TYPES;
  3788. typedef MCI_SYSINFO_TYPES *PMCI_SYSINFO_TYPES;
  3789.  
  3790.  
  3791. /*********************************************************************/
  3792. /* flags for the MCI_UNFREEZE message                                */
  3793. /*     $0000$00 are reserved for MCI_UNFREEZE flags                */
  3794. /*********************************************************************/
  3795.       MCI_OVLY_UNFREEZE_RECT              $00000100L
  3796.       MCI_OVLY_UNFREEZE_RECT_OUTSIDE      $00000200L
  3797.  
  3798. /*********************************************************************/
  3799. /* flags for the MCI_WHERE message                                   */
  3800. /*     $000$X00 are reserved for MCI_WHERE flags                   */
  3801. /*********************************************************************/
  3802.       MCI_VID_WHERE_DESTINATION           $00000100L
  3803.       MCI_VID_WHERE_SOURCE                $00000200L
  3804.       MCI_VID_WHERE_WINDOW                $00000400L
  3805.  
  3806.       MCI_DGV_WHERE_DESTINATION           MCI_VID_WHERE_DESTINATION
  3807.       MCI_DGV_WHERE_SOURCE                MCI_VID_WHERE_SOURCE
  3808.       MCI_DGV_WHERE_WINDOW                MCI_VID_WHERE_WINDOW
  3809.       MCI_DGV_WHERE_ADJUSTED              $00000800L
  3810.  
  3811.       MCI_OVLY_WHERE_DESTINATION          MCI_VID_WHERE_DESTINATION
  3812.       MCI_OVLY_WHERE_SOURCE               MCI_VID_WHERE_SOURCE
  3813.       MCI_OVLY_WHERE_WINDOW               MCI_VID_WHERE_WINDOW
  3814.  
  3815. /*********************************************************************/
  3816. /* flags and parameter structure for the MCI_WINDOW message          */
  3817. /*     $000$X00   are reserved for MCI_WINDOW flags                */
  3818. /*********************************************************************/
  3819.       MCI_VID_WINDOW_HWND                 $00000100L
  3820.       MCI_VID_WINDOW_STATE                $00000200L
  3821.       MCI_VID_WINDOW_TEXT                 $00000400L
  3822.       MCI_VID_WINDOW_DEFAULT              $00000800L
  3823.  
  3824.       MCI_DGV_WINDOW_HWND                 MCI_VID_WINDOW_HWND
  3825.       MCI_DGV_WINDOW_STATE                MCI_VID_WINDOW_STATE
  3826.       MCI_DGV_WINDOW_TEXT                 MCI_VID_WINDOW_TEXT
  3827.       MCI_DGV_WINDOW_DEFAULT              MCI_VID_WINDOW_DEFAULT
  3828.  
  3829.       MCI_OVLY_WINDOW_HWND                MCI_VID_WINDOW_HWND
  3830.       MCI_OVLY_WINDOW_STATE               MCI_VID_WINDOW_STATE
  3831.       MCI_OVLY_WINDOW_TEXT                MCI_VID_WINDOW_TEXT
  3832.       MCI_OVLY_WINDOW_DEFAULT             MCI_VID_WINDOW_DEFAULT
  3833.  
  3834. typedef  struct _MCI_VID_WINDOW_PARMS {
  3835.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  3836.     HWND    hwndDest;        /* Handle to the client window used for    */
  3837.                              /* the destination of the video image      */
  3838.     USHORT  usCmdShow;       /* Specifies how the window is displayed   */
  3839.     USHORT  usReserved1;     /* Reserved                                */
  3840.     PSZ     pszText;         /* The text to use as the window caption   */
  3841.     PSZ     pszAlias;        /* The window alias for the display window */
  3842. } MCI_VID_WINDOW_PARMS;
  3843.  
  3844. typedef MCI_VID_WINDOW_PARMS   MCI_DGV_WINDOW_PARMS;
  3845. typedef MCI_DGV_WINDOW_PARMS   *PMCI_DGV_WINDOW_PARMS;
  3846.  
  3847. typedef MCI_VID_WINDOW_PARMS   MCI_OVLY_WINDOW_PARMS;
  3848. typedef MCI_OVLY_WINDOW_PARMS  *PMCI_OVLY_WINDOW_PARMS;
  3849.  
  3850.  
  3851. /*********************************************************************/
  3852. /* flags and parameter structure for the MCI_TUNER  message          */
  3853. /*********************************************************************/
  3854.       MCI_DGV_AUDIO_CHANNEL               $00010000L
  3855.       MCI_DGV_TV_CHANNEL                  $00020000L
  3856.       MCI_DGV_FREQUENCY                   $00040000L
  3857.       MCI_DGV_FINETUNE_PLUS               $00080000L
  3858.       MCI_DGV_FINETUNE_MINUS              $00100000L
  3859.       MCI_DGV_REGION                      $00200000L
  3860.       MCI_DGV_AFC_ON                      $00400000L
  3861.       MCI_DGV_AFC_OFF                     $00800000L
  3862.  
  3863. typedef struct _MCI_DGV_TUNER_PARMS {
  3864.     HWND   hwndCallback;     /* PM window handle for MCI notify message    */
  3865.     ULONG  ulFrequency;      /* Tuner Frequency                            */
  3866.     ULONG  ulReserved0;      /* Reserved 0                                 */
  3867.     ULONG  ulTVChannel;      /* TV Channel                                 */
  3868.     LONG   lFineTune;        /* Fine tuning adjustments.                   */
  3869.     PSZ    pszRegion;        /* TV Channel Region                          */
  3870.     ULONG  ulReserved1;      /* Reserved 1                                 */
  3871.     ULONG  ulReserved2;      /* Reserved 2                                 */
  3872. } MCI_DGV_TUNER_PARMS;
  3873. typedef MCI_DGV_TUNER_PARMS   *LPMCI_DGV_TUNER_PARMS;
  3874.  
  3875.  
  3876. #pragma pack()
  3877. /*********************************************************************/
  3878. /*                                                                   */
  3879. /*  MCI system value defines                                         */
  3880. /*                                                                   */
  3881. /*********************************************************************/
  3882.       MSV_CLOSEDCAPTION                   $0
  3883.       MSV_MASTERVOLUME                    $1
  3884.       MSV_HEADPHONES                      $2
  3885.       MSV_SPEAKERS                        $3
  3886.       MSV_WORKPATH                        $4
  3887.       MSV_SYSQOSVALUE                     $5
  3888.       MSV_SYSQOSERRORFLAG                 $6
  3889.  
  3890.       MSV_MAX                             $7
  3891.  
  3892. #endif                       /* INCL_32 */
  3893.  
  3894. /*********************************************************************/
  3895. /* Playlist defines                                                  */
  3896. /*********************************************************************/
  3897.       DATA_OPERATION                      0
  3898.       BRANCH_OPERATION                    1
  3899.       LOOP_OPERATION                      2
  3900.       CALL_OPERATION                      3
  3901.       RETURN_OPERATION                    4
  3902.       EXIT_OPERATION                      5
  3903.       NOP_OPERATION                       6
  3904.       MESSAGE_OPERATION                   7
  3905.       CUEPOINT_OPERATION                  8
  3906.  
  3907. /*********************************************************************/
  3908. /*                                                                   */
  3909. /*  MCI Function prototypes                                          */
  3910. /*                                                                   */
  3911. /*********************************************************************/
  3912.  
  3913. #ifdef INCL_32
  3914.  
  3915. ULONG APIENTRY mciSendCommand   (USHORT   usDeviceID,
  3916.                                  USHORT   usMessage,
  3917.                                  ULONG    ulParam1,
  3918.                                  PVOID    pParam2,
  3919.                                  USHORT   usUserParm);
  3920.  
  3921. ULONG APIENTRY mciMakeGroup     (PUSHORT pusDeviceGroupID,
  3922.                                  USHORT  usDeviceCount,
  3923.                                  PUSHORT pausDeviceList,
  3924.                                  ULONG   ulFlags,
  3925.                                  ULONG   ulMMTime);
  3926.  
  3927.  
  3928. ULONG APIENTRY mciDeleteGroup   (USHORT   usGroupID);
  3929.  
  3930.  
  3931.  
  3932. BOOL APIENTRY mciSetSysValue (USHORT iSysValue, PVOID pValue);
  3933.  
  3934. BOOL  APIENTRY mciQuerySysValue (USHORT iSysValue, PVOID pValue);
  3935.  
  3936. ULONG  APIENTRY mciGetDeviceID  (PSZ  pszName);
  3937.  
  3938. #else                        /* INCL_32 */
  3939.  
  3940.       mciSendString mci16SendString
  3941.       mciGetErrorString mci16GetErrorString
  3942.       mciGetDeviceID mci16GetDeviceID
  3943.  
  3944. ULONG APIENTRY  mciSendString   (PSZ     pszCommandBuf,
  3945.                                  PSZ     pszReturnString,
  3946.                                  USHORT  usReturnLength,
  3947.                                  HWND    hwndCallBack,
  3948.                                  USHORT  usUserParm );
  3949.  
  3950. ULONG APIENTRY mciGetErrorString    (ULONG    usError,
  3951.                                      PSZ      pszBuffer,
  3952.                                      USHORT   usLength);
  3953.  
  3954. ULONG APIENTRY mciGetDeviceID  (PSZ  pszName);
  3955.  
  3956.  
  3957. #endif                       /* INCL_32 */
  3958.  
  3959.  
  3960. #ifndef _MEERROR_H_
  3961.      _MEERROR_H_
  3962. #endif
  3963.  
  3964. #ifndef NO_ERROR
  3965.      NO_ERROR                          0
  3966. #endif
  3967. *)
  3968. CONST
  3969.      MCIERR_BASE                      =5000;
  3970.      MCIERR_SUCCESS                   =0;
  3971.      MCIERR_INVALID_DEVICE_ID         =(MCIERR_BASE + 1);
  3972.      MCIERR_NO_MASTER                 =(MCIERR_BASE + 2);
  3973.      MCIERR_UNRECOGNIZED_KEYWORD      =(MCIERR_BASE + 3);
  3974.      MCIERR_MASTER_CONFLICT           =(MCIERR_BASE + 4);
  3975.      MCIERR_UNRECOGNIZED_COMMAND      =(MCIERR_BASE + 5);
  3976.      MCIERR_HARDWARE                  =(MCIERR_BASE + 6);
  3977.      MCIERR_INVALID_DEVICE_NAME       =(MCIERR_BASE + 7);
  3978.      MCIERR_OUT_OF_MEMORY             =(MCIERR_BASE + 8);
  3979.      MCIERR_DEVICE_OPEN               =(MCIERR_BASE + 9);
  3980.      MCIERR_CANNOT_LOAD_DRIVER        =(MCIERR_BASE + 10);
  3981.      MCIERR_MISSING_COMMAND_STRING    =(MCIERR_BASE + 11);
  3982.      MCIERR_PARAM_OVERFLOW            =(MCIERR_BASE + 12);
  3983.      MCIERR_MISSING_STRING_ARGUMENT   =(MCIERR_BASE + 13);
  3984.      MCIERR_BAD_INTEGER               =(MCIERR_BASE + 14);
  3985.      MCIERR_PARSER_INTERNAL           =(MCIERR_BASE + 15);
  3986.      MCIERR_DRIVER_INTERNAL           =(MCIERR_BASE + 16);
  3987.      MCIERR_MISSING_PARAMETER         =(MCIERR_BASE + 17);
  3988.      MCIERR_UNSUPPORTED_FUNCTION      =(MCIERR_BASE + 18);
  3989.      MCIERR_FILE_NOT_FOUND            =(MCIERR_BASE + 19);
  3990.      MCIERR_DEVICE_NOT_READY          =(MCIERR_BASE + 20);
  3991.      MCIERR_INTERNAL                  =(MCIERR_BASE + 21);
  3992.      MCIERR_DRIVER                    =(MCIERR_BASE + 22);
  3993.      MCIERR_CANNOT_USE_ALL            =(MCIERR_BASE + 23);
  3994.      MCIERR_MULTIPLE                  =(MCIERR_BASE + 24);
  3995.      MCIERR_EXTENSION_NOT_FOUND       =(MCIERR_BASE + 25);
  3996.      MCIERR_OUTOFRANGE                =(MCIERR_BASE + 26);
  3997.      MCIERR_CANNOT_ADD_ALIAS          =(MCIERR_BASE + 27);
  3998.      MCIERR_FLAGS_NOT_COMPATIBLE      =(MCIERR_BASE + 28);
  3999.      MCIERR_CANNOT_USE_NOUNLOAD       =(MCIERR_BASE + 29);
  4000.      MCIERR_FILE_NOT_SAVED            =(MCIERR_BASE + 30);
  4001.      MCIERR_DEVICE_TYPE_REQUIRED      =(MCIERR_BASE + 31);
  4002.      MCIERR_DEVICE_LOCKED             =(MCIERR_BASE + 32);
  4003.      MCIERR_DUPLICATE_ALIAS           =(MCIERR_BASE + 33);
  4004.      MCIERR_INSTANCE_INACTIVE         =(MCIERR_BASE + 34);
  4005.  
  4006.      MCIERR_COMMAND_TABLE             =(MCIERR_BASE + 35);
  4007.      MCIERR_INI_FILE_LOCKED           =(MCIERR_BASE + 37);
  4008.  
  4009.      MCIERR_NO_AUDIO_SUPPORT          =(MCIERR_BASE + 40);
  4010.      MCIERR_NOT_IN_PM_SESSION         =(MCIERR_BASE + 41);
  4011.      MCIERR_DUPLICATE_KEYWORD         =(MCIERR_BASE + 42);
  4012.      MCIERR_COMMAND_STRING_OVERFLOW   =(MCIERR_BASE + 43);
  4013.      MCIERR_DRIVER_PROC_NOT_FOUND     =(MCIERR_BASE + 44);
  4014.      MCIERR_INVALID_DEVICE_TYPE       =(MCIERR_BASE + 45);
  4015.      MCIERR_INVALID_DEVICE_ORDINAL    =(MCIERR_BASE + 46);
  4016.      MCIERR_HEADPHONES_NOT_SET        =(MCIERR_BASE + 47);
  4017.      MCIERR_SPEAKERS_NOT_SET          =(MCIERR_BASE + 48);
  4018.      MCIERR_SOUND_NOT_SET             =(MCIERR_BASE + 49);
  4019.      MCIERR_INVALID_BUFFER            =(MCIERR_BASE + 50);
  4020.      MCIERR_INVALID_MEDIA_TYPE        =(MCIERR_BASE + 51);
  4021.      MCIERR_INVALID_CONNECTOR_INDEX   =(MCIERR_BASE + 52);
  4022.      MCIERR_NO_CONNECTION             =(MCIERR_BASE + 53);
  4023.      MCIERR_INVALID_FLAG              =(MCIERR_BASE + 54);
  4024.      MCIERR_CANNOT_LOAD_DSP_MOD       =(MCIERR_BASE + 55);
  4025.      MCIERR_ALREADY_CONNECTED         =(MCIERR_BASE + 56);
  4026.      MCIERR_INVALID_CALLBACK_HANDLE   =(MCIERR_BASE + 57);
  4027.      MCIERR_DRIVER_NOT_FOUND          =(MCIERR_BASE + 58);
  4028.      MCIERR_DUPLICATE_DRIVER          =(MCIERR_BASE + 59);
  4029.      MCIERR_INI_FILE                  =(MCIERR_BASE + 60);
  4030.      MCIERR_INVALID_GROUP_ID          =(MCIERR_BASE + 61);
  4031.      MCIERR_ID_ALREADY_IN_GROUP       =(MCIERR_BASE + 62);
  4032.      MCIERR_MEDIA_CHANGED             =(MCIERR_BASE + 63);
  4033.      MCIERR_MISSING_FLAG              =(MCIERR_BASE + 64);
  4034.      MCIERR_UNSUPPORTED_FLAG          =(MCIERR_BASE + 65);
  4035.      MCIERR_DRIVER_NOT_LOADED         =(MCIERR_BASE + 66);
  4036.      MCIERR_INVALID_MODE              =(MCIERR_BASE + 67);
  4037.      MCIERR_INVALID_ITEM_FLAG         =(MCIERR_BASE + 68);
  4038.      MCIERR_INVALID_TIME_FORMAT_FLAG  =(MCIERR_BASE + 69);
  4039.      MCIERR_SPEED_FORMAT_FLAG         =(MCIERR_BASE + 70);
  4040.      MCIERR_INVALID_AUDIO_FLAG        =(MCIERR_BASE + 71);
  4041.      MCIERR_NODEFAULT_DEVICE          =(MCIERR_BASE + 72);
  4042.      MCIERR_DUPLICATE_EXTENSION       =(MCIERR_BASE + 73);
  4043.      MCIERR_FILE_ATTRIBUTE            =(MCIERR_BASE + 74);
  4044.      MCIERR_DUPLICATE_CUEPOINT        =(MCIERR_BASE + 75);
  4045.      MCIERR_INVALID_CUEPOINT          =(MCIERR_BASE + 76);
  4046.      MCIERR_CUEPOINT_LIMIT_REACHED    =(MCIERR_BASE + 77);
  4047.      MCIERR_MISSING_ITEM              =(MCIERR_BASE + 78);
  4048.      MCIERR_MISSING_TIME_FORMAT       =(MCIERR_BASE + 79);
  4049.      MCIERR_MISSING_SPEED_FORMAT      =(MCIERR_BASE + 80);
  4050.      MCIERR_INVALID_CONNECTOR_TYPE    =(MCIERR_BASE + 81);
  4051.      MCIERR_TARGET_DEVICE_FULL        =(MCIERR_BASE + 82);
  4052.      MCIERR_UNSUPPORTED_CONN_TYPE     =(MCIERR_BASE + 83);
  4053.      MCIERR_CANNOT_MODIFY_CONNECTOR   =(MCIERR_BASE + 84);
  4054.      MCIERR_RECORD_ABORTED            =(MCIERR_BASE + 85);
  4055.      MCIERR_GROUP_COMMAND             =(MCIERR_BASE + 86);
  4056.      MCIERR_DEVICE_NOT_FOUND          =(MCIERR_BASE + 87);
  4057.      MCIERR_RESOURCE_NOT_AVAILABLE    =(MCIERR_BASE + 88);
  4058.      MCIERR_INVALID_IO_PROC           =(MCIERR_BASE + 89);
  4059.  
  4060.      MCIERR_WAVE_OUTPUTSINUSE         =(MCIERR_BASE + 90);
  4061.      MCIERR_WAVE_SETOUTPUTINUSE       =(MCIERR_BASE + 91);
  4062.      MCIERR_WAVE_INPUTSINUSE          =(MCIERR_BASE + 92);
  4063.      MCIERR_WAVE_SETINPUTINUSE        =(MCIERR_BASE + 93);
  4064.      MCIERR_WAVE_OUTPUTUNSPECIFIED    =(MCIERR_BASE + 94);
  4065.      MCIERR_WAVE_INPUTUNSPECIFIED     =(MCIERR_BASE + 95);
  4066.      MCIERR_WAVE_OUTPUTSUNSUITABLE    =(MCIERR_BASE + 96);
  4067.      MCIERR_WAVE_SETOUTPUTUNSUITABLE  =(MCIERR_BASE + 97);
  4068.      MCIERR_WAVE_INPUTSUNSUITABLE     =(MCIERR_BASE + 98);
  4069.      MCIERR_WAVE_SETINPUTUNSUITABLE   =(MCIERR_BASE + 99);
  4070.  
  4071.      MCIERR_SEQ_DIV_INCOMPATIBLE      =(MCIERR_BASE + 100);
  4072.      MCIERR_SEQ_PORT_INUSE            =(MCIERR_BASE + 101);
  4073.      MCIERR_SEQ_PORT_NONEXISTENT      =(MCIERR_BASE + 102);
  4074.      MCIERR_SEQ_PORT_MAPNODEVICE      =(MCIERR_BASE + 103);
  4075.      MCIERR_SEQ_PORT_MISCERROR        =(MCIERR_BASE + 104);
  4076.      MCIERR_SEQ_TIMER                 =(MCIERR_BASE + 105);
  4077.  
  4078.      MCIERR_VDP_COMMANDCANCELLED      =(MCIERR_BASE + 106);
  4079.      MCIERR_VDP_COMMANDFAILURE        =(MCIERR_BASE + 107);
  4080.      MCIERR_VDP_NOTSPUNUP             =(MCIERR_BASE + 108);
  4081.      MCIERR_VDP_NOCHAPTER             =(MCIERR_BASE + 109);
  4082.      MCIERR_VDP_NOSIDE                =(MCIERR_BASE + 110);
  4083.      MCIERR_VDP_NOSIZE                =(MCIERR_BASE + 111);
  4084.      MCIERR_VDP_INVALID_TIMEFORMAT    =(MCIERR_BASE + 112);
  4085.  
  4086.      MCIERR_CLIPBOARD_ERROR           =(MCIERR_BASE + 114);
  4087.      MCIERR_CANNOT_CONVERT            =(MCIERR_BASE + 115);
  4088.      MCIERR_CANNOT_REDO               =(MCIERR_BASE + 116);
  4089.      MCIERR_CANNOT_UNDO               =(MCIERR_BASE + 117);
  4090.      MCIERR_CLIPBOARD_EMPTY           =(MCIERR_BASE + 118);
  4091.  
  4092.      MCIERR_INVALID_WORKPATH          =(MCIERR_BASE + 119);
  4093.      MCIERR_INDETERMINATE_LENGTH      =(MCIERR_BASE + 120);
  4094.      MCIERR_DUPLICATE_EA              =(MCIERR_BASE + 121);
  4095.      MCIERR_INVALID_CONNECTION        =(MCIERR_BASE + 122);
  4096.      MCIERR_CHANNEL_OFF               =(MCIERR_BASE + 123);
  4097.      MCIERR_CANNOT_CHANGE_CHANNEL     =(MCIERR_BASE + 124);
  4098.      MCIERR_FILE_IO                   =(MCIERR_BASE + 125);
  4099.      MCIERR_SYSTEM_FILE               =(MCIERR_BASE + 126);
  4100.      MCIERR_DISPLAY_RESOLUTION        =(MCIERR_BASE + 127);
  4101.      MCIERR_NO_ASYNC_PLAY_ACTIVE      =(MCIERR_BASE + 128);
  4102.  
  4103.      MCIERR_UNSUPP_FORMAT_TAG         =(MCIERR_BASE + 129);
  4104.      MCIERR_UNSUPP_SAMPLESPERSEC      =(MCIERR_BASE + 130);
  4105.      MCIERR_UNSUPP_BITSPERSAMPLE      =(MCIERR_BASE + 131);
  4106.      MCIERR_UNSUPP_CHANNELS           =(MCIERR_BASE + 132);
  4107.      MCIERR_UNSUPP_FORMAT_MODE        =(MCIERR_BASE + 133);
  4108.      MCIERR_NO_DEVICE_DRIVER          =(MCIERR_BASE + 134);
  4109.      MCIERR_CODEC_NOT_SUPPORTED       =(MCIERR_BASE + 135);
  4110.  
  4111.      MCIERR_TUNER_NO_HW               =(MCIERR_BASE + 136);
  4112.      MCIERR_TUNER_NO_AFC              =(MCIERR_BASE + 137);
  4113.      MCIERR_TUNER_AFC_ON              =(MCIERR_BASE + 138);
  4114.      MCIERR_TUNER_CHANNEL_SKIPPED     =(MCIERR_BASE + 139);
  4115.      MCIERR_TUNER_CHANNEL_TOO_LOW     =(MCIERR_BASE + 140);
  4116.      MCIERR_TUNER_CHANNEL_TOO_HIGH    =(MCIERR_BASE + 141);
  4117.      MCIERR_AUD_CHANNEL_OUTOFRANGE    =(MCIERR_BASE + 142);
  4118.      MCIERR_TUNER_INVALID_REGION      =(MCIERR_BASE + 143);
  4119.      MCIERR_SIGNAL_INVALID            =(MCIERR_BASE + 144);
  4120.      MCIERR_TUNER_MODE                =(MCIERR_BASE + 145);
  4121.      MCIERR_TUNER_REGION_NOT_SET      =(MCIERR_BASE + 146);
  4122.      MCIERR_TUNER_CHANNEL_NOT_SET     =(MCIERR_BASE + 147);
  4123.  
  4124.      MCIERR_CUSTOM_DRIVER_BASE        =(MCIERR_BASE + 256);
  4125.  
  4126. (*
  4127. /******************************************/
  4128. /* Sync/Stream Manager Error Return codes */
  4129. /******************************************/
  4130.  
  4131.      MEBASE                           (MCIERR_BASE + 500)
  4132.      ERROR_INVALID_STREAM             (MEBASE + 1)
  4133.      ERROR_INVALID_HID                (MEBASE + 2)
  4134.  
  4135.      ERROR_INVALID_OBJTYPE            (MEBASE + 4)
  4136.      ERROR_INVALID_FLAG               (MEBASE + 5)
  4137.      ERROR_INVALID_EVCB               (MEBASE + 6)
  4138.      ERROR_INVALID_EVENT              (MEBASE + 7)
  4139.      ERROR_INVALID_MMTIME             (MEBASE + 8)
  4140.      ERROR_INVALID_NUMSLAVES          (MEBASE + 9)
  4141.      ERROR_INVALID_REQUEST            (MEBASE + 10)
  4142.      ERROR_INVALID_SPCBKEY            (MEBASE + 11)
  4143.      ERROR_INVALID_HNDLR_NAME         (MEBASE + 12)
  4144.      ERROR_INVALID_PROTOCOL           (MEBASE + 13)
  4145.      ERROR_INVALID_BUFFER_SIZE        (MEBASE + 14)
  4146.      ERROR_INVALID_BUFFER_RETURNED    (MEBASE + 15)
  4147.      ERROR_INVALID_ACB                (MEBASE + 16)
  4148.      ERROR_INVALID_RECORD_RETURNED    (MEBASE + 17)
  4149.      ERROR_INVALID_MESSAGE            (MEBASE + 18)
  4150.  
  4151.      ERROR_STREAM_NOT_OWNER           (MEBASE + 99)
  4152.      ERROR_STREAM_USED                (MEBASE + 100)
  4153.      ERROR_STREAM_CREATION            (MEBASE + 101)
  4154.      ERROR_STREAM_NOTMASTER           (MEBASE + 102)
  4155.      ERROR_STREAM_NOT_STOP            (MEBASE + 103)
  4156.      ERROR_STREAM_OPERATION           (MEBASE + 104)
  4157.      ERROR_STREAM_STOP_PENDING        (MEBASE + 105)
  4158.      ERROR_STREAM_ALREADY_STOP        (MEBASE + 106)
  4159.      ERROR_STREAM_ALREADY_PAUSE       (MEBASE + 107)
  4160.      ERROR_STREAM_NOT_STARTED         (MEBASE + 108)
  4161.      ERROR_STREAM_NOT_ACTIVE          (MEBASE + 109)
  4162.      ERROR_START_STREAM               (MEBASE + 110)
  4163.      ERROR_MASTER_USED                (MEBASE + 111)
  4164.      ERROR_SPCBKEY_MISMATCH           (MEBASE + 112)
  4165.      ERROR_INSUFF_BUFFER              (MEBASE + 113)
  4166.      ERROR_ALLOC_RESOURCES            (MEBASE + 114)
  4167.      ERROR_ACCESS_OBJECT              (MEBASE + 115)
  4168.      ERROR_HNDLR_REGISTERED           (MEBASE + 116)
  4169.      ERROR_DATA_ITEM_NOT_SPECIFIED    (MEBASE + 117)
  4170.      ERROR_INVALID_SEQUENCE           (MEBASE + 118)
  4171.      ERROR_INITIALIZATION             (MEBASE + 119)
  4172.      ERROR_READING_INI                (MEBASE + 120)
  4173.      ERROR_LOADING_HNDLR              (MEBASE + 121)
  4174.      ERROR_HNDLR_NOT_FOUND            (MEBASE + 122)
  4175.      ERROR_SPCB_NOT_FOUND             (MEBASE + 123)
  4176.      ERROR_DEVICE_NOT_FOUND           (MEBASE + 124)
  4177.      ERROR_TOO_MANY_EVENTS            (MEBASE + 125)
  4178.      ERROR_DEVICE_OVERRUN             (MEBASE + 126)
  4179.      ERROR_DEVICE_UNDERRUN            (MEBASE + 127)
  4180.      ERROR_HNDLR_NOT_IN_INI           (MEBASE + 128)
  4181.      ERROR_QUERY_STREAM_TIME          (MEBASE + 129)
  4182.      ERROR_DATA_ITEM_NOT_SEEKABLE     (MEBASE + 130)
  4183.      ERROR_NOT_SEEKABLE_BY_TIME       (MEBASE + 131)
  4184.      ERROR_NOT_SEEKABLE_BY_BYTES      (MEBASE + 132)
  4185.      ERROR_STREAM_NOT_SEEKABLE        (MEBASE + 133)
  4186.      ERROR_PLAYLIST_STACK_OVERFLOW    (MEBASE + 135)
  4187.      ERROR_PLAYLIST_STACK_UNDERFLOW   (MEBASE + 136)
  4188.      ERROR_LOCKING_BUFFER             (MEBASE + 137)
  4189.      ERROR_UNLOCKING_BUFFER           (MEBASE + 138)
  4190.      ERROR_SEEK_PAST_END              (MEBASE + 139)
  4191.      ERROR_SEEK_BACK_NOT_SUPPORTED    (MEBASE + 140)
  4192.      ERROR_INTERNAL_ERROR             (MEBASE + 141)
  4193.      ERROR_INTERNAL_CORRUPT           (MEBASE + 142)
  4194.      ERROR_INSUFF_MEM                 (MEBASE + 143)
  4195.      ERROR_LARGE_SEEK_BY_TIME         (MEBASE + 144)
  4196.      ERROR_STREAM_PREROLLING          (MEBASE + 145)
  4197.      ERROR_INI_FILE                   (MEBASE + 146)
  4198.      ERROR_SEEK_BEFORE_BEGINNING      (MEBASE + 147)
  4199.      ERROR_TOO_MANY_HANDLERS          (MEBASE + 148)
  4200.      ERROR_ALLOC_HEAP                 (MEBASE + 149)
  4201.      ERROR_END_OF_PLAYLIST            (MEBASE + 150)
  4202.      ERROR_TOO_MANY_STREAMS           (MEBASE + 151)
  4203.      ERROR_FILE_FORMAT_INCORRECT      (MEBASE + 152)
  4204.      ERROR_DESTROY_STREAM             (MEBASE + 153)
  4205.      ERROR_INVALID_NUMMASTERS         (MEBASE + 154)
  4206.      ERROR_MASTER_CONFLICT            (MEBASE + 155)
  4207.      ERROR_NO_MASTER                  (MEBASE + 156)
  4208.      ERROR_NO_SYNC                    (MEBASE + 157)
  4209.  
  4210.      ERROR_BUFFER_NOT_AVAILABLE       (MEBASE + 400)
  4211.      ERROR_TOO_MANY_BUFFERS           (MEBASE + 401)
  4212.      ERROR_TOO_MANY_RECORDS           (MEBASE + 402)
  4213.  
  4214.  
  4215. /*----- ERROR_INVALID_PROTOCOL ulErrorStatus defines -----*/
  4216. /*----- Refer to SHC_NEGOTIATE_RESULT api.*/
  4217.      PROTOCOL_SPCBLENGTH             1
  4218.      PROTOCOL_SPCBKEY                2
  4219.      PROTOCOL_DATAFLAG               3
  4220.      PROTOCOL_NUMRECORDS             4
  4221.      PROTOCOL_BLOCKSIZE              5
  4222.      PROTOCOL_BUFFERSIZE             6
  4223.      PROTOCOL_MINNUMBUFFERS          7
  4224.      PROTOCOL_MAXNUMBUFFERS          8
  4225.      PROTOCOL_SOURCESTART            9
  4226.      PROTOCOL_TARGETSTART            10
  4227.      PROTOCOL_BUFFERFLAG             11
  4228.      PROTOCOL_HANDLERFLAG            12
  4229.      PROTOCOL_SYNCTOLERANCE          13
  4230.      PROTOCOL_SYNCINTERVAL           14
  4231.      PROTOCOL_INTERNALERROR          -1
  4232.  
  4233. /***********************************/
  4234. /* MMIO Manager Error Return codes */
  4235. /***********************************/
  4236.  
  4237.      MMIOERR_BASE                    (MEBASE + 1000)
  4238.      MMIOERR_UNBUFFERED              (MMIOERR_BASE + 1L)
  4239.      MMIOERR_CANNOTWRITE             (MMIOERR_BASE + 2L)
  4240.      MMIOERR_CHUNKNOTFOUND           (MMIOERR_BASE + 3L)
  4241.  
  4242.      MMIOERR_INVALID_HANDLE          (MMIOERR_BASE + 4L)
  4243.      MMIOERR_INVALID_PARAMETER       (MMIOERR_BASE + 5L)
  4244.      MMIOERR_INTERNAL_SYSTEM         (MMIOERR_BASE + 6L)
  4245.      MMIOERR_NO_CORE                 (MMIOERR_BASE + 7L)
  4246.  
  4247.      MMIOERR_INI_OPEN                (MMIOERR_BASE + 8L)
  4248.      MMIOERR_INI_READ                (MMIOERR_BASE + 9L)
  4249.  
  4250.      MMIOERR_INVALID_BUFFER_LENGTH   (MMIOERR_BASE + 10L)
  4251.      MMIOERR_NO_BUFFER_ALLOCATED     (MMIOERR_BASE + 11L)
  4252.      MMIOERR_NO_FLUSH_FOR_MEM_FILE   (MMIOERR_BASE + 12L)
  4253.      MMIOERR_NO_FLUSH_NEEDED         (MMIOERR_BASE + 13L)
  4254.      MMIOERR_READ_ONLY_FILE          (MMIOERR_BASE + 14L)
  4255.      MMIOERR_WRITE_ONLY_FILE         (MMIOERR_BASE + 15L)
  4256.      MMIOERR_INSTALL_PROC_FAILED     (MMIOERR_BASE + 16L)
  4257.      MMIOERR_READ_FAILED             (MMIOERR_BASE + 17L)
  4258.      MMIOERR_WRITE_FAILED            (MMIOERR_BASE + 18L)
  4259.      MMIOERR_SEEK_FAILED             (MMIOERR_BASE + 19L)
  4260.      MMIOERR_CANNOTEXPAND            (MMIOERR_BASE + 20L)
  4261.      MMIOERR_FREE_FAILED             (MMIOERR_BASE + 21L)
  4262.      MMIOERR_EOF_SEEN                (MMIOERR_BASE + 22L)
  4263.      MMIOERR_INVALID_ACCESS_FLAG     (MMIOERR_BASE + 23L)
  4264.      MMIOERR_INVALID_STRUCTURE       (MMIOERR_BASE + 24L)
  4265.      MMIOERR_INVALID_SIZE            (MMIOERR_BASE + 25L)
  4266.      MMIOERR_INVALID_FILENAME        (MMIOERR_BASE + 26L)
  4267.  
  4268.      MMIOERR_CF_DUPLICATE_SEEN       (MMIOERR_BASE + 27L)
  4269.      MMIOERR_CF_ENTRY_NO_CORE        (MMIOERR_BASE + 28L)
  4270.      MMIOERR_CF_WO_UNSUPPORTED       (MMIOERR_BASE + 29L)
  4271.      MMIOERR_CF_ELEMENTS_OPEN        (MMIOERR_BASE + 30L)
  4272.      MMIOERR_CF_NON_BND_FILE         (MMIOERR_BASE + 31L)
  4273.      MMIOERR_CF_ENTRY_NOT_FOUND      (MMIOERR_BASE + 32L)
  4274.  
  4275.      MMIOERR_DELETE_FAILED           (MMIOERR_BASE + 33L)
  4276.      MMIOERR_OUTOFMEMORY             (MMIOERR_BASE + 34L)
  4277.  
  4278.      MMIOERR_INVALID_DLLNAME         (MMIOERR_BASE + 35L)
  4279.      MMIOERR_INVALID_PROCEDURENAME   (MMIOERR_BASE + 36L)
  4280.      MMIOERR_MATCH_NOT_FOUND         (MMIOERR_BASE + 37L)
  4281.  
  4282.      MMIOERR_SEEK_BEFORE_BEGINNING   (MMIOERR_BASE + 38L)
  4283.      MMIOERR_INVALID_FILE            (MMIOERR_BASE + 39L)
  4284.      MMIOERR_QOSUNAVAILABLE          (MMIOERR_BASE + 40L)
  4285.      MMIOERR_MEDIA_NOT_FOUND         (MMIOERR_BASE + 41L)
  4286.  
  4287.      MMIOERR_ERROR_IN_FRAME_DATA     (MMIOERR_BASE + 42L)
  4288.      MMIOERR_INVALID_DIM_ALIGN       (MMIOERR_BASE + 43L)
  4289.      MMIOERR_CODEC_NOT_SUPPORTED     (MMIOERR_BASE + 44L)
  4290.  
  4291.       MMIOERR_UNSUPPORTED_FUNCTION    (MMIOERR_BASE + 45L)
  4292.       MMIOERR_CLIPBRD_ERROR           (MMIOERR_BASE + 46L)
  4293.       MMIOERR_CLIPBRD_ACTIVE          (MMIOERR_BASE + 47L)
  4294.       MMIOERR_CLIPBRD_EMPTY           (MMIOERR_BASE + 48L)
  4295.       MMIOERR_NEED_NEW_FILENAME       (MMIOERR_BASE + 49L)
  4296.       MMIOERR_INVALID_TRACK_OPERATION (MMIOERR_BASE + 50L)
  4297.       MMIOERR_INCOMPATIBLE_DATA       (MMIOERR_BASE + 51L)
  4298.       MMIOERR_ACCESS_DENIED           (MMIOERR_BASE + 52L)
  4299.       MMIOERR_MISSING_FLAG            (MMIOERR_BASE + 53L)
  4300.       MMIOERR_INVALID_ITEM_FLAG       (MMIOERR_BASE + 54L)
  4301.  
  4302. /***********************************/
  4303. /* User defined Error Return codes */
  4304. /***********************************/
  4305.  
  4306.      USERERR_BASE                    (MMIOERR_BASE + 1000)
  4307. *)
  4308.  
  4309. IMPORTS
  4310.       FUNCTION mmioSet(ahmmio:HMMIO;VAR pUserExtendmminfo:MMEXTENDINFO;
  4311.                        ulFlags:ULONG):ULONG;
  4312.            APIENTRY;  'MMIO' index 101;
  4313.       FUNCTION mmioQueryHeaderLength( ahmmio:HMMIO;
  4314.                                       VAR plHeaderLength:LONG;
  4315.                                       dwReserved:LONGWORD;
  4316.                                       dwFlags:LONGWORD ):LONGWORD;
  4317.            APIENTRY;  'MMIO' index 76;
  4318.       FUNCTION mmioGetHeader( ahmmio:HMMIO;
  4319.                               VAR pHeader;
  4320.                               lHeaderLength:LONG;
  4321.                               VAR plBytesRead:LONG;
  4322.                               dwReserved:ULONG;
  4323.                               dwFlags:ULONG ):LONGWORD;
  4324.            APIENTRY;  'MMIO' index 77;
  4325.       FUNCTION mmioOpen( pszFileName:CSTRING;
  4326.                          VAR apmmioinfo:MMIOINFO;
  4327.                          dwOpenFlags:LONGWORD ):HMMIO;
  4328.            APIENTRY;  'MMIO' index 27;
  4329.       FUNCTION mmioClose( ahmmio:HMMIO;
  4330.                           wFlags:LONGWORD ):WORD;
  4331.            APIENTRY;  'MMIO' index 32;
  4332.       FUNCTION mciSendString(s:CSTRING;VAR ret:CSTRING;retlen:LONGWORD;
  4333.                              ahwnd:HWND;userParam:LONGWORD):LONGWORD;
  4334.            APIENTRY; 'MDM' index 2;
  4335.       FUNCTION mciGetErrorString(ulError:LONGWORD;
  4336.                                 VAR pszBuffer:CSTRING;
  4337.                                 usLength:LONGWORD):LONGWORD;
  4338.            APIENTRY; 'MDM' index 3;
  4339.       FUNCTION mciGetDeviceId(AliasName:CSTRING):LONGWORD;
  4340.            APIENTRY; 'MDM' index 16;
  4341.  
  4342. END;
  4343.  
  4344. IMPLEMENTATION
  4345.  
  4346. END.
  4347.