home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / diverace.zip / SOURCE.ZIP / source / work / mcios2.pas < prev    next >
Pascal/Delphi Source File  |  1995-07-24  |  54KB  |  1,811 lines

  1. Unit MCIOS2;
  2.  
  3. (* use 8-bit alignment *)
  4. {$Cdecl+,AlignRec-,OrgName+}
  5.  
  6. {L MDM.LIB}
  7. {L MMIO.LIB}
  8.  
  9. {L MMPM.LIB}
  10. {$L OS2ME.LIB}
  11.  
  12.  
  13. interface
  14.  
  15. uses OS2DEF,Use32;
  16.  
  17. {$I MEERROR.INC} (*Error Constants*)
  18.  
  19. (***************)
  20. (* definitions *)
  21. (***************)
  22. const
  23.   BPS_4=4;
  24.   BPS_8=8;
  25.   BPS_16=16;
  26.  
  27.   CF_RMID=10;
  28.   CF_RIFF=11;
  29.   CF_WAVE=12;
  30.   CF_AVI=13;
  31.  
  32.   CH_1=1;
  33.   CH_2=2;
  34.   CH_4=4;
  35.  
  36.   HZ_8000=8000;
  37.   HZ_11025=11025;
  38.   HZ_14700=14700;
  39.   HZ_18900=18900;
  40.   HZ_22050=22050;
  41.   HZ_37800=37800;
  42.   HZ_44100=44100;
  43.  
  44.   RT_RMID=100;
  45.   RT_RIFF=101;
  46.   RT_WAVE=102;
  47.   RT_AVI=103;
  48.   RT_AVS=104;
  49.  
  50.  
  51.  
  52.  
  53.   MCI_TRUE=1;
  54.   MCI_FALSE=0;
  55.  
  56. (************************)
  57. (* multimedia filetypes *)
  58. (************************)
  59.  
  60.   DATATYPE_NULL=$0000;
  61.   DATATYPE_WAVEFORM=$0001;
  62.   DATATYPE_DIGVIDEO=$0002;
  63.   DATATYPE_RIFF_ALAW=$0006;
  64.   DATATYPE_RIFF_MULAW=$0007;
  65.   DATATYPE_MULAW=$0101;
  66.   DATATYPE_ALAW=$0102;
  67.   DATATYPE_ADPCM_AVC=$0103;
  68.   DATATYPE_CT_ADPCM=$0200;
  69.   DATATYPE_MIDI=$0201;
  70.   DATATYPE_GENERIC=$0202;
  71.   DATATYPE_SPV2=$0203;
  72.   DATATYPE_CDXA_VIDEO=$0204;
  73.   DATATYPE_CDXA_DATA=$0205;
  74.   DATATYPE_CDXA_AUDIO=$0206;
  75.   DATATYPE_CDXA_AUDIO_HD=$0207;
  76.   DATATYPE_CDXA_HEADERS=$0208;
  77.   DATATYPE_UNKNOWN=$FFFFFFFF;
  78.  
  79.   DATATYPE_DIGISPEECH=$0208;
  80.   DIGISPEECH_NATIVE=$0001;
  81.   SUBTYPE_NONE=$0000;
  82.  
  83.   WAVE_FORMAT_1M08=$0001;
  84.   WAVE_FORMAT_1S08=$0002;
  85.   WAVE_FORMAT_1M16=$0003;
  86.   WAVE_FORMAT_1S16=$0004;
  87.   WAVE_FORMAT_2M08=$0005;
  88.   WAVE_FORMAT_2S08=$0006;
  89.   WAVE_FORMAT_2M16=$0007;
  90.   WAVE_FORMAT_2S16=$0008;
  91.   WAVE_FORMAT_4M08=$0009;
  92.   WAVE_FORMAT_4S08=$000a;
  93.   WAVE_FORMAT_4M16=$000b;
  94.   WAVE_FORMAT_4S16=$000c;
  95.   WAVE_FORMAT_8M08=$000d;
  96.   WAVE_FORMAT_8S08=$000e;
  97.   WAVE_FORMAT_8M16=$000f;
  98.   WAVE_FORMAT_8S16=$0010;
  99.  
  100.   DIGVIDEO_PHOTOM=$544F4850;
  101.   DIGVIDEO_ULTIM=$49544c55;
  102.   DIGVIDEO_AVI=$20495641;
  103.  
  104.   MULAW_8B8KS=$0001;
  105.   MULAW_8B11KS=$0002;
  106.   MULAW_8B22KS=$0003;
  107.   MULAW_8B44KS=$0004;
  108.   MULAW_8B8KM=$0005;
  109.   MULAW_8B11KM=$0006;
  110.   MULAW_8B22KM=$0007;
  111.   MULAW_8B44KM=$0008;
  112.  
  113.   ALAW_8B8KS=$0001;
  114.   ALAW_8B11KS=$0002;
  115.   ALAW_8B22KS=$0003;
  116.   ALAW_8B44KS=$0004;
  117.   ALAW_8B8KM=$0005;
  118.   ALAW_8B11KM=$0006;
  119.   ALAW_8B22KM=$0007;
  120.   ALAW_8B44KM=$0008;
  121.  
  122.   ADPCM_AVC_VOICE=$0001;
  123.   ADPCM_AVC_MUSIC=$0002;
  124.   ADPCM_AVC_STEREO=$0003;
  125.   ADPCM_AVC_HQ=$0004;
  126.  
  127.   CT_ADPCM_16B8KS=$0001;
  128.   CT_ADPCM_16B11KS=$0002;
  129.   CT_ADPCM_16B22KS=$0003;
  130.   CT_ADPCM_16B44KS=$0004;
  131.   CT_ADPCM_16B8KM=$0005;
  132.   CT_ADPCM_16B11KM=$0006;
  133.   CT_ADPCM_16B22KM=$0007;
  134.   CT_ADPCM_16B44KM=$0008;
  135.  
  136.   SPV2_BPCM=$0001;
  137.   SPV2_PCM=$0002;
  138.   SPV2_NONE=$0003;
  139.  
  140.   CDXA_LEVELB=$0000;
  141.   CDXA_LEVELC=$0001;
  142.   CDXA_LEVELB_MONO=$0002;
  143.   CDXA_LEVELC_MONO=$0003;
  144.  
  145.  
  146. (**********)
  147. (* limits *)
  148. (**********)
  149.  
  150.   MAX_DEVICE_NAME=20;
  151.   MAX_ALIAS_NAME=20;
  152.   MAX_PRODINFO=40;
  153.   MAX_EXTENSION_NAME=4;
  154.   MAX_DEV_PARAMS=128;
  155.   MAX_VERSION_NUMBER=6;
  156.   MAX_PDD_NAME=9;
  157.   MAX_DLL_NAME=260;
  158.   MAX_CLASSES=10;
  159.   MAX_CONNECTORS=10;
  160.   MAX_EXTENSIONS=25;
  161.   MAX_TYPEBUFFER=256;
  162.  
  163.  
  164. (************************)
  165. (* MCI command messages *)
  166. (************************)
  167.  
  168.   MCI_OPEN=1;
  169.   MCI_CLOSE=2;
  170.   MCI_ESCAPE=3;
  171.   MCI_PLAY=4;
  172.   MCI_SEEK=5;
  173.   MCI_STOP=6;
  174.   MCI_PAUSE=7;
  175.   MCI_INFO=8;
  176.   MCI_GETDEVCAPS=9;
  177.   MCI_STATUS=10;
  178.   MCI_SPIN=11;
  179.   MCI_SET=12;
  180.   MCI_STEP=13;
  181.   MCI_RECORD=14;
  182.   MCI_SYSINFO=15;
  183.   MCI_SAVE=16;
  184.   MCI_CUE=17;
  185.   MCI_UPDATE=18;
  186.   MCI_SET_CUEPOINT=19;
  187.   MCI_SET_POSITION_ADVISE=20;
  188.   MCI_SET_SYNC_OFFSET=21;
  189.   MCI_LOAD=22;
  190.   MCI_ACQUIREDEVICE=23;
  191.   MCI_RELEASEDEVICE=24;
  192.   MCI_MASTERAUDIO=25;
  193.   MCI_GETTOC=26;
  194.   MCI_DEVICESETTINGS=27;
  195.   MCI_CONNECTOR=28;
  196.   MCI_RESUME=29;
  197.   MCI_CONNECTORINFO=31;
  198.   MCI_DEFAULT_CONNECTION=32;
  199.   MCI_CONNECTION=33;
  200.   MCI_GROUP=34;
  201.   MCI_CAPTURE=40;
  202.   MCI_FREEZE=41;
  203.   MCI_GETIMAGEBUFFER=42;
  204.   MCI_GETIMAGEPALETTE=43;
  205.   MCI_PUT=44;
  206.   MCI_REALIZE=45;
  207.   MCI_REWIND=46;
  208.   MCI_RESTORE=47;
  209.   MCI_SETIMAGEBUFFER=48;
  210.   MCI_SETIMAGEPALETTE=49;
  211.   MCI_UNFREEZE=50;
  212.   MCI_WHERE=51;
  213.   MCI_WINDOW=52;
  214.   MCI_DELETE=53;
  215.   MCI_CUT=54;
  216.   MCI_PASTE=55;
  217.   MCI_COPY=56;
  218.   MCI_REDO=57;
  219.   MCI_UNDO=58;
  220.   MCI_MAX_COMMAND=58;
  221.   MCI_USER_MESSAGES=2000;
  222.  
  223.  
  224. (****************)
  225. (* device stuff *)
  226. (****************)
  227.  
  228.   MCI_ALL_DEVICE_ID=$FFFF;
  229.  
  230.   MCI_DEVTYPE_VIDEOTAPE=1;
  231.   MCI_DEVTYPE_VIDEODISC=2;
  232.   MCI_DEVTYPE_CD_AUDIO=3;
  233.   MCI_DEVTYPE_DAT=4;
  234.   MCI_DEVTYPE_AUDIO_TAPE=5;
  235.   MCI_DEVTYPE_OTHER=6;
  236.   MCI_DEVTYPE_WAVEFORM_AUDIO=7;
  237.   MCI_DEVTYPE_SEQUENCER=8;
  238.   MCI_DEVTYPE_AUDIO_AMPMIX=9;
  239.   MCI_DEVTYPE_OVERLAY=10;
  240.   MCI_DEVTYPE_ANIMATION=11;
  241.   MCI_DEVTYPE_DIGITAL_VIDEO=12;
  242.   MCI_DEVTYPE_SPEAKER=13;
  243.   MCI_DEVTYPE_HEADPHONE=14;
  244.   MCI_DEVTYPE_MICROPHONE=15;
  245.   MCI_DEVTYPE_MONITOR=16;
  246.   MCI_DEVTYPE_CDXA=17;
  247.  
  248.   MCI_MAX_SYSTEM_DEVICE_NAMES=17;
  249.  
  250.   MCI_DEVTYPE_VIDEOTAPE_NAME='Videotape';
  251.   MCI_DEVTYPE_VIDEODISC_NAME='Videodisc';
  252.   MCI_DEVTYPE_CD_AUDIO_NAME='CDaudio';
  253.   MCI_DEVTYPE_DAT_NAME='DAT';
  254.   MCI_DEVTYPE_AUDIO_TAPE_NAME='Audiotape';
  255.   MCI_DEVTYPE_OTHER_NAME='Other';
  256.   MCI_DEVTYPE_WAVEFORM_AUDIO_NAME='Waveaudio';
  257.   MCI_DEVTYPE_SEQUENCER_NAME='Sequencer';
  258.   MCI_DEVTYPE_AUDIO_AMPMIX_NAME='Ampmix';
  259.   MCI_DEVTYPE_OVERLAY_NAME='Overlay';
  260.   MCI_DEVTYPE_ANIMATION_NAME='Animation';
  261.   MCI_DEVTYPE_DIGITAL_VIDEO_NAME='Digitalvideo';
  262.   MCI_DEVTYPE_SPEAKER_NAME='Speaker';
  263.   MCI_DEVTYPE_HEADPHONE_NAME='Headphone';
  264.   MCI_DEVTYPE_MICROPHONE_NAME='Microphone';
  265.   MCI_DEVTYPE_MONITOR_NAME='Monitor';
  266.   MCI_DEVTYPE_CDXA_NAME='CDXA';
  267.  
  268.  
  269. (********************)
  270. (* item base values *)
  271. (********************)
  272.  
  273.   MCI_AMP_ITEM_BASE=$1000;
  274.   MCI_CD_ITEM_BASE=$2000;
  275.   MCI_CDXA_ITEM_BASE=$3000;
  276.   MCI_VD_ITEM_BASE=$4000;
  277.   MCI_SEQ_ITEM_BASE=$5000;
  278.   MCI_WAVE_ITEM_BASE=$6000;
  279.   MCI_VID_ITEM_BASE=$7000;
  280.   MCI_DGV_ITEM_BASE=$8000;
  281.   MCI_OVLY_ITEM_BASE=$9000;
  282.  
  283.  
  284. (*********)
  285. (* items *)
  286. (*********)
  287.  
  288.   MCI_AMP_STATUS_PITCH=MCI_AMP_ITEM_BASE;
  289.   MCI_AMP_STATUS_TREBLE=(MCI_AMP_ITEM_BASE+1);
  290.   MCI_AMP_STATUS_BASS=(MCI_AMP_ITEM_BASE+2);
  291.   MCI_AMP_STATUS_BALANCE=(MCI_AMP_ITEM_BASE+3);
  292.   MCI_AMP_STATUS_GAIN=(MCI_AMP_ITEM_BASE+4);
  293.   MCI_AMP_STATUS_MONITOR=(MCI_AMP_ITEM_BASE+5);
  294.  
  295.   MCI_CD_STATUS_TRACK_TYPE=MCI_CD_ITEM_BASE;
  296.   MCI_CD_STATUS_TRACK_COPYPERMITTED=(MCI_CD_ITEM_BASE+1);
  297.   MCI_CD_STATUS_TRACK_CHANNELS=(MCI_CD_ITEM_BASE+2);
  298.   MCI_CD_STATUS_TRACK_PREEMPHASIS=(MCI_CD_ITEM_BASE+3);
  299.  
  300.   MCI_CDXA_STATUS_CHANNEL=MCI_CDXA_ITEM_BASE;
  301.  
  302.   MCI_VD_STATUS_SPEED=MCI_VD_ITEM_BASE;
  303.   MCI_VD_STATUS_FORWARD=(MCI_VD_ITEM_BASE+1);
  304.   MCI_VD_MEDIA_TYPE=(MCI_VD_ITEM_BASE+2);
  305.   MCI_VD_STATUS_SIDE=(MCI_VD_ITEM_BASE+3);
  306.   MCI_VD_STATUS_DISC_SIZE=(MCI_VD_ITEM_BASE+4);
  307.  
  308.   MCI_SEQ_STATUS_TEMPO=MCI_SEQ_ITEM_BASE;
  309.   MCI_SEQ_STATUS_OFFSET=(MCI_SEQ_ITEM_BASE+1);
  310.   MCI_SEQ_STATUS_DIVTYPE=(MCI_SEQ_ITEM_BASE+2);
  311.   MCI_SEQ_STATUS_MASTER=(MCI_SEQ_ITEM_BASE+3);
  312.   MCI_SEQ_STATUS_PORT=(MCI_SEQ_ITEM_BASE+4);
  313.   MCI_SEQ_STATUS_SLAVE=(MCI_SEQ_ITEM_BASE+5);
  314.  
  315.   MCI_WAVE_STATUS_LEVEL=MCI_WAVE_ITEM_BASE;
  316.   MCI_WAVE_STATUS_SAMPLESPERSEC=(MCI_WAVE_ITEM_BASE+1);
  317.   MCI_WAVE_STATUS_AVGBYTESPERSEC=(MCI_WAVE_ITEM_BASE+2);
  318.   MCI_WAVE_STATUS_BLOCKALIGN=(MCI_WAVE_ITEM_BASE+3);
  319.   MCI_WAVE_STATUS_FORMATTAG=(MCI_WAVE_ITEM_BASE+4);
  320.   MCI_WAVE_STATUS_CHANNELS=(MCI_WAVE_ITEM_BASE+5);
  321.   MCI_WAVE_STATUS_BITSPERSAMPLE=(MCI_WAVE_ITEM_BASE+6);
  322.  
  323.   MCI_VID_SET_VIDEO_COMPRESSION=MCI_VID_ITEM_BASE;
  324.   MCI_VID_SET_IMAGE_COMPRESSION=(MCI_VID_ITEM_BASE+1);
  325.   MCI_VID_SET_IMAGE_BITSPERPEL=(MCI_VID_ITEM_BASE+2);
  326.   MCI_VID_SET_IMAGE_PELFORMAT=(MCI_VID_ITEM_BASE+3);
  327.   MCI_VID_SET_BRIGHTNESS=(MCI_VID_ITEM_BASE+4);
  328.   MCI_VID_SET_CONTRAST=(MCI_VID_ITEM_BASE+5);
  329.   MCI_VID_SET_HUE=(MCI_VID_ITEM_BASE+6);
  330.   MCI_VID_SET_SATURATION=(MCI_VID_ITEM_BASE+7);
  331.   MCI_VID_SET_SHARPNESS=(MCI_VID_ITEM_BASE+8);
  332.   MCI_VID_SET_GREYSCALE=(MCI_VID_ITEM_BASE+9);
  333.   MCI_VID_SET_IMAGE_QUALITY=(MCI_VID_ITEM_BASE+10);
  334.   MCI_VID_SET_VIDEO_QUALITY=(MCI_VID_ITEM_BASE+11);
  335.   MCI_VID_SET_IMAGE_COMPRESSION_METHOD=(MCI_VID_ITEM_BASE+12);
  336.   MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE=(MCI_VID_ITEM_BASE+13);
  337.   MCI_VID_SET_IMAGE_FILE_FORMAT=(MCI_VID_ITEM_BASE+14);
  338.   MCI_VID_SET_REF_INTERVAL=(MCI_VID_ITEM_BASE+15);
  339.   MCI_VID_SET_MAXDATARATE=(MCI_VID_ITEM_BASE+16);
  340.   MCI_VID_SET_VIDEO_FILE_FORMAT=(MCI_VID_ITEM_BASE+17);
  341.  
  342.   MCI_VID_STATUS_HWND=MCI_VID_ITEM_BASE;
  343.   MCI_VID_STATUS_AUDIO_COMPRESSION=(MCI_VID_ITEM_BASE+1);
  344.   MCI_VID_STATUS_VIDEO_COMPRESSION=(MCI_VID_ITEM_BASE+2);
  345.   MCI_VID_STATUS_IMAGE_COMPRESSION=(MCI_VID_ITEM_BASE+3);
  346.   MCI_VID_STATUS_AUDIO_QUALITY=(MCI_VID_ITEM_BASE+4);
  347.   MCI_VID_STATUS_VIDEO_QUALITY=(MCI_VID_ITEM_BASE+5);
  348.   MCI_VID_STATUS_IMAGE_QUALITY=(MCI_VID_ITEM_BASE+6);
  349.   MCI_VID_STATUS_IMAGE_BITSPERPEL=(MCI_VID_ITEM_BASE+7);
  350.   MCI_VID_STATUS_IMAGE_PELFORMAT=(MCI_VID_ITEM_BASE+8);
  351.   MCI_VID_STATUS_FORWARD=(MCI_VID_ITEM_BASE+9);
  352.   MCI_VID_STATUS_NORMAL_RATE=(MCI_VID_ITEM_BASE+10);
  353.   MCI_VID_STATUS_VIDEO_X_EXTENT=(MCI_VID_ITEM_BASE+11);
  354.   MCI_VID_STATUS_VIDEO_Y_EXTENT=(MCI_VID_ITEM_BASE+12);
  355.   MCI_VID_STATUS_IMAGE_X_EXTENT=(MCI_VID_ITEM_BASE+13);
  356.   MCI_VID_STATUS_IMAGE_Y_EXTENT=(MCI_VID_ITEM_BASE+14);
  357.   MCI_VID_STATUS_BRIGHTNESS=(MCI_VID_ITEM_BASE+15);
  358.   MCI_VID_STATUS_CONTRAST=(MCI_VID_ITEM_BASE+16);
  359.   MCI_VID_STATUS_HUE=(MCI_VID_ITEM_BASE+17);
  360.   MCI_VID_STATUS_SATURATION=(MCI_VID_ITEM_BASE+18);
  361.   MCI_VID_STATUS_GREYSCALE=(MCI_VID_ITEM_BASE+19);
  362.   MCI_VID_STATUS_SHARPNESS=(MCI_VID_ITEM_BASE+20);
  363.   MCI_VID_STATUS_SPEED=(MCI_VID_ITEM_BASE+21);
  364.   MCI_VID_STATUS_IMAGE_FILE_FORMAT=(MCI_VID_ITEM_BASE+22);
  365.   MCI_VID_STATUS_TRANSPARENT_TYPE=(MCI_VID_ITEM_BASE+23);
  366.   MCI_VID_STATUS_REF_INTERVAL=(MCI_VID_ITEM_BASE+24);
  367.   MCI_VID_STATUS_MAXDATARATE=(MCI_VID_ITEM_BASE+25);
  368.   MCI_VID_STATUS_VIDEO_FILE_FORMAT=(MCI_VID_ITEM_BASE+26);
  369.   MCI_VID_STATUS_TRANSPARENT_COLOR=(MCI_VID_ITEM_BASE+24);
  370.  
  371.   MCI_DGV_SET_AUDIO_COMPRESSION=MCI_DGV_ITEM_BASE;
  372.   MCI_DGV_SET_AUDIO_QUALITY=(MCI_DGV_ITEM_BASE+1);
  373.  
  374.  
  375. (**************)
  376. (* operations *)
  377. (**************)
  378.  
  379.   MCI_NOTIFY=$00000001;
  380.   MCI_WAIT=$00000002;
  381.   MCI_FROM=$00000004;
  382.   MCI_TO=$00000008;
  383.   MCI_MILLISECONDS=$00000010;
  384.   MCI_TRACK=$00000020;
  385.   MCI_OVER=$00000040;
  386.   MCI_TEST=$00000080;
  387.   MCI_TO_BUFFER=$00000100;
  388.   MCI_FROM_BUFFER=$00000200;
  389.   MCI_CONVERT_FORMAT=$00000400;
  390.  
  391.  
  392. (*********************)
  393. (* other definitions *)
  394. (*********************)
  395.  
  396.   MCI_ACQUIRE_QUEUE=$00000400;
  397.   MCI_AUD_COMP_ADPCM4=$00000001;
  398.   MCI_AUD_COMP_PCM8=$00000002;
  399.   MCI_AUD_QUALITY_HIGH=$00000001;
  400.   MCI_AUD_QUALITY_MED=$00000002;
  401.   MCI_AUD_QUALITY_LOW=$00000003;
  402.  
  403.   MCI_CAPTURE_RECT=$00000100;
  404.   MCI_CONVERT=$00001000;
  405.   MCI_CUE_INPUT=$00000100;
  406.   MCI_CUE_OUTPUT=$00000200;
  407.  
  408.   MCI_ESCAPE_STRING=$00000100;
  409.   MCI_EXCLUSIVE=$00000100;
  410.   MCI_EXCLUSIVE_INSTANCE=$00000200;
  411.  
  412.   MCI_FIND_BEST_REGISTERED=$00000100;
  413.   MCI_FORMAT_MILLISECONDS=$00000001;
  414.   MCI_FORMAT_MMTIME=$00000002;
  415.   MCI_FORMAT_MSF=$00000005;
  416.   MCI_FORMAT_TMSF=$00000006;
  417.   MCI_FORMAT_CHAPTERS=$00000007;
  418.   MCI_FORMAT_FRAMES=$00000008;
  419.   MCI_FORMAT_HMS=$00000009;
  420.   MCI_FORMAT_TRACKS=$0000000A;
  421.   MCI_FORMAT_BYTES=$0000000B;
  422.   MCI_FORMAT_SAMPLES=$0000000C;
  423.   MCI_FORMAT_HMSF=$0000000D;
  424.   MCI_FORMAT_SET_SMPTE_24=$0000000E;
  425.   MCI_FORMAT_SET_SMPTE_25=$0000000F;
  426.   MCI_FORMAT_SET_SMPTE_30=$00000010;
  427.   MCI_FORMAT_SET_SMPTE_30DROP=$00000011;
  428.   MCI_FORMAT_SET_SONGPTR=$00000012;
  429.   MCI_FORMAT_PERCENTAGE=$00000003;
  430.   MCI_FORMAT_FPS=$00000004;
  431.  
  432.   MCI_GAINING_USE=$00000002;
  433.   MCI_GET_HW_BUFFER_PTR=$00000800;
  434.   MCI_GROUP_MAKE=$00000400;
  435.   MCI_GROUP_DELETE=$00000800;
  436.   MCI_GROUP_ALIAS=$00001000;
  437.   MCI_GROUP_MASTER=$00002000;
  438.  
  439.   MCI_HEADPHONES=$00000400;
  440.  
  441.   MCI_IMG_COMP_NONE=$00000201;
  442.   MCI_IMG_COMP_PIC9_1_0=$00000202;
  443.   MCI_IMG_COMP_PIC16_1_0=$00000203;
  444.   MCI_IMG_COMP_JPEG9=$00000204;
  445.   MCI_IMG_COMP_JPEG9_1_0=MCI_IMG_COMP_JPEG9;
  446.   MCI_IMG_COMP_BMP_RLE4=$00000205;
  447.   MCI_IMG_COMP_BMP_RLE8=$00000206;
  448.   MCI_IMG_COMP_JPEGN=$00000207;
  449.  
  450.   MCI_VID_PALETTE=$00000001;
  451.   MCI_VID_COMP_RTV_2_0=$00000101;
  452.   MCI_VID_COMP_RTV_2_1=$00000102;
  453.   MCI_VID_COMP_ULTI=$49544C55;
  454.   MCI_VID_COMP_RT21=$31325452;
  455.   MCI_VID_FILE_FORMAT_AVI=$20495641;
  456.   MCI_VID_OPEN_PARENT=$01000000;
  457.   MCI_VID_PUT_RECT=$00000100;
  458.   MCI_VID_PUT_DESTINATION=$00000200;
  459.   MCI_VID_PUT_SOURCE=$00000400;
  460.   MCI_VID_PUT_WINDOW_MOVE=$00000800;
  461.   MCI_VID_PUT_WINDOW_SIZE=$00001000;
  462.   MCI_VID_QUALITY_HIGH=$00000101;
  463.   MCI_VID_QUALITY_MED=$00000102;
  464.   MCI_VID_QUALITY_LOW=$00000103;
  465.   MCI_VID_QUALITY_BEST=MCI_VID_QUALITY_HIGH;
  466.   MCI_VID_QUALITY_CDROM=MCI_VID_QUALITY_MED;
  467.   MCI_VID_QUALITY_COMPACT=MCI_VID_QUALITY_LOW;
  468.   MCI_VID_QUALITY_BETTER=MCI_VID_QUALITY_MED;
  469.   MCI_VID_QUALITY_GOOD=MCI_VID_QUALITY_LOW;
  470.   MCI_VID_RGB=$00000002;
  471.   MCI_VID_WHERE_DESTINATION=$00000100;
  472.   MCI_VID_WHERE_SOURCE=$00000200;
  473.   MCI_VID_WHERE_WINDOW=$00000400;
  474.   MCI_VID_WINDOW_HWND=$00000100;
  475.   MCI_VID_WINDOW_STATE=$00000200;
  476.   MCI_VID_WINDOW_TEXT=$00000400;
  477.   MCI_VID_WINDOW_DEFAULT=$00000800;
  478.   MCI_VID_YUV=$00000003;
  479.  
  480.  
  481.   MCI_IMG_PALETTE=MCI_VID_PALETTE;
  482.   MCI_IMG_RGB=MCI_VID_RGB;
  483.   MCI_IMG_YUV=MCI_VID_YUV;
  484.   MCI_IMG_QUALITY_HIGH=$00000201;
  485.   MCI_IMG_QUALITY_MED=$00000202;
  486.   MCI_IMG_QUALITY_LOW=$00000203;
  487.   MCI_INFO_FILE=$00000200;
  488.   MCI_INFO_PRODUCT=$00000100;
  489.  
  490.   MCI_LOSING_USE=$00000001;
  491.  
  492.   MCI_MASTERVOL=$00001000;
  493.   MCI_MODE_NOT_READY=$00000001;
  494.   MCI_MODE_PAUSE=$00000002;
  495.   MCI_MODE_PLAY=$00000003;
  496.   MCI_MODE_STOP=$00000004;
  497.   MCI_MODE_RECORD=$00000005;
  498.   MCI_MODE_SEEK=$00000006;
  499.  
  500.   MCI_NOPIECEMEAL=$00000200;
  501.   MCI_NOTIFY_SUCCESSFUL=$0000;
  502.   MCI_NOTIFY_SUPERSEDED=$0001;
  503.   MCI_NOTIFY_ABORTED=$0002;
  504.   MCI_NOTIFY_ERROR=$0003;
  505.  
  506.   MCI_ON=$00000100;
  507.   MCI_OFF=$00000200;
  508.   MCI_OPEN_ELEMENT=$00000100;
  509.   MCI_OPEN_ALIAS=$00000200;
  510.   MCI_OPEN_ELEMENT_ID=$00000400;
  511.   MCI_OPEN_PLAYLIST=$00000800;
  512.   MCI_OPEN_TYPE_ID=$00001000;
  513.   MCI_OPEN_SHAREABLE=$00002000;
  514.   MCI_OPEN_MMIO=$00004000;
  515.  
  516.   MCI_PREROLL_NOTIFIED=$00000001;
  517.   MCI_PREROLL_DETERMINISTIC=$00000002;
  518.   MCI_PREROLL_NONE=$00000003;
  519.  
  520.   MCI_QUERYSAVEDSETTING=$00004000;
  521.   MCI_QUERYCURRENTSETTING=$00008000;
  522.   MCI_QUERY_REGISTERED_MAP=$00000200;
  523.   MCI_QUERY_REGISTERED_MAP_SIZE=$00000400;
  524.  
  525.   MCI_READONLY=$00008000;
  526.   MCI_RECORD_INSERT=$00000100;
  527.   MCI_RECORD_OVERWRITE=$00000200;
  528.   MCI_RESTORE_SRC_RECT=$00000100;
  529.   MCI_RESTORE_DEST_RECT=$00000200;
  530.   MCI_RETURN_RESOURCE=$00000100;
  531.  
  532.   MCI_SAVESETTING=$00002000;
  533.   MCI_SAVE_FILE=$00000100;
  534.   MCI_SET_ITEM=$00000100;
  535.   MCI_SET_ON=$00000200;
  536.   MCI_SET_OFF=$00000400;
  537.   MCI_SET_VIDEO=$00000800;
  538.   MCI_SET_AUDIO=$00001000;
  539.   MCI_SET_DOOR_OPEN=$00002000;
  540.   MCI_SET_DOOR_CLOSED=$00004000;
  541.   MCI_SET_SPEED_FORMAT=$00008000;
  542.   MCI_SET_TIME_FORMAT=$00010000;
  543.   MCI_SET_DOOR_LOCK=$00020000;
  544.   MCI_SET_DOOR_UNLOCK=$00040000;
  545.   MCI_SET_VOLUME=$00080000;
  546.   MCI_SET_ITEM_FOURCC=$00100000;
  547.   MCI_SET_AUDIO_ALL=$00000000;
  548.   MCI_SET_AUDIO_LEFT=$00000001;
  549.   MCI_SET_AUDIO_RIGHT=$00000002;
  550.   MCI_SET_MONITOR=$00000001;
  551.   MCI_SET_MONITOR_AUDIO=$00000002;
  552.   MCI_SET_MONITOR_VIDEO=$00000003;
  553.   MCI_SET_RECORD=$00000004;
  554.   MCI_SET_NONE=$10000000;
  555.   MCI_SET_POSITION_ADVISE_ON=$00000100;
  556.   MCI_SET_POSITION_ADVISE_OFF=$00000200;
  557.   MCI_SET_CUEPOINT_ON=$00000100;
  558.   MCI_SET_CUEPOINT_OFF=$00000200;
  559.   MCI_SET_REGISTERED=$00000100;
  560.   MCI_SPEAKERS=$00000800;
  561.   MCI_SPIN_UP=$00000100;
  562.   MCI_SPIN_DOWN=$00000200;
  563.   MCI_STATUS_ITEM=$00000100;
  564.   MCI_STATUS_START=$00000200;
  565.   MCI_STATUS_CURRENT_TRACK=$00000001;
  566.   MCI_STATUS_LENGTH=$00000002;
  567.   MCI_STATUS_MODE=$00000003;
  568.   MCI_STATUS_NUMBER_OF_TRACKS=$00000004;
  569.   MCI_STATUS_POSITION=$00000005;
  570.   MCI_STATUS_POSITION_IN_TRACK=$00000006;
  571.   MCI_STATUS_MEDIA_PRESENT=$00000007;
  572.   MCI_STATUS_VOLUME=$00000008;
  573.   MCI_STATUS_READY=$00000009;
  574.   MCI_STATUS_TIME_FORMAT=$0000000A;
  575.   MCI_STATUS_SPEED_FORMAT=$0000000B;
  576.   MCI_STATUS_MONITOR=$0000000C;
  577.   MCI_STATUS_AUDIO=$0000000D;
  578.   MCI_STATUS_VIDEO=$0000000E;
  579.   MCI_STATUS_CLIPBOARD=$0000000F;
  580.   MCI_STATUS_AUDIO_ALL=$00000000;
  581.   MCI_STATUS_AUDIO_LEFT=$00000001;
  582.   MCI_STATUS_AUDIO_RIGHT=$00000002;
  583.   MCI_STEP_FRAMES=$00000100;
  584.   MCI_STEP_REVERSE=$00000200;
  585.   MCI_SYNCHRONIZE=$00000100;
  586.   MCI_SYSINFO_QUANTITY=$00000100;
  587.   MCI_SYSINFO_OPEN=$00000200;
  588.   MCI_SYSINFO_NAME=$00000400;
  589.   MCI_SYSINFO_INSTALLNAME=$00000800;
  590.   MCI_SYSINFO_ITEM=$00001000;
  591.   MCI_SYSINFO_INI_LOCK=$00002000;
  592.   MCI_SYSINFO_DEV_CONTROLLABLE=$00000001;
  593.   MCI_SYSINFO_DEV_NONCONTROLLABLE=$00000002;
  594.   MCI_SYSINFO_DEVICESETTINGS=$00000004;
  595.   MCI_SYSINFO_INSTALL_DRIVER=$00000001;
  596.   MCI_SYSINFO_QUERY_DRIVER=$00000002;
  597.   MCI_SYSINFO_DELETE_DRIVER=$00000004;
  598.   MCI_SYSINFO_SET_PARAMS=$00000008;
  599.   MCI_SYSINFO_QUERY_PARAMS=$00000010;
  600.   MCI_SYSINFO_SET_CONNECTORS=$00000020;
  601.   MCI_SYSINFO_QUERY_CONNECTORS=$00000040;
  602.   MCI_SYSINFO_SET_EXTENSIONS=$00000080;
  603.   MCI_SYSINFO_QUERY_EXTENSIONS=$00000100;
  604.   MCI_SYSINFO_SET_ALIAS=$00000200;
  605.   MCI_SYSINFO_QUERY_NAMES=$00000400;
  606.   MCI_SYSINFO_SET_DEFAULT=$00000800;
  607.   MCI_SYSINFO_QUERY_DEFAULT=$00001000;
  608.   MCI_SYSINFO_SET_TYPES=$00002000;
  609.   MCI_SYSINFO_QUERY_TYPES=$00004000;
  610.  
  611.   MCI_TO_START=$00000100;
  612.   MCI_TO_END=$00000200;
  613.  
  614.   MCI_USE_HW_BUFFER=$00000400;
  615.  
  616.  
  617. (****************)
  618. (* device stuff *)
  619. (****************)
  620.  
  621.   MCI_AMP_SET_BALANCE=$00100000;
  622.   MCI_AMP_SET_PITCH=$00200000;
  623.   MCI_AMP_SET_TREBLE=$00400000;
  624.   MCI_AMP_SET_BASS=$00800000;
  625.   MCI_AMP_SET_GAIN=$01000000;
  626.   MCI_AMP_SET_MONITOR=MCI_SET_MONITOR_AUDIO;
  627.  
  628.   MCI_CD_INFO_ID=$00010000;
  629.   MCI_CD_INFO_UPC=$00020000;
  630.   MCI_CD_TRACK_AUDIO=$00000001;
  631.   MCI_CD_TRACK_DATA=$00000002;
  632.   MCI_CD_TRACK_OTHER=$00000003;
  633.  
  634.   MCI_CDXA_NONE=$00000000;
  635.   MCI_CDXA_SET_CHANNEL=$01000000;
  636.   MCI_CDXA_AUDIO_DEVICE=$10000000;
  637.   MCI_CDXA_AUDIO_BUFFER=$02000000;
  638.   MCI_CDXA_VIDEO_BUFFER=$04000000;
  639.   MCI_CDXA_DATA_BUFFER=$08000000;
  640.  
  641.   MCI_VD_INFO_LABEL=$00001000;
  642.   MCI_VD_MEDIA_CLV=$00000001;
  643.   MCI_VD_MEDIA_CAV=$00000002;
  644.   MCI_VD_MEDIA_OTHER=$00000003;
  645.   MCI_VD_PLAY_REVERSE=$00001000;
  646.   MCI_VD_PLAY_FAST=$00002000;
  647.   MCI_VD_PLAY_SPEED=$00004000;
  648.   MCI_VD_PLAY_SCAN=$00008000;
  649.   MCI_VD_PLAY_SLOW=$00010000;
  650.   MCI_VD_SEEK_REVERSE=$00001000;
  651.   MCI_VD_SET_CHANNEL=$00100000;
  652.   MCI_VD_SET_DISPLAY=$00200000;
  653.   MCI_VD_SET_ON=MCI_SET_ON;
  654.   MCI_VD_SET_OFF=MCI_SET_OFF;
  655.   MCI_VD_SET_VIDEO=MCI_SET_VIDEO;
  656.   MCI_VD_SPEED_NORMAL=$00000000;
  657.   MCI_VD_SPEED_FAST=$00000001;
  658.   MCI_VD_SPEED_SLOW=$00000002;
  659.  
  660.   MCI_SEQ_SET_TEMPO=$00100000;
  661.   MCI_SEQ_SET_PORT=$00200000;
  662.   MCI_SEQ_ENABLE_PORT_MAPPER=$00400000;
  663.   MCI_SEQ_DISABLE_PORT_MAPPER=$00800000;
  664.   MCI_SEQ_SET_OFFSET=$01000000;
  665.   MCI_SEQ_SET_MASTER=$02000000;
  666.   MCI_SEQ_SET_SLAVE=$04000000;
  667.   MCI_SEQ_SET_SMPTE_24=$00000100;
  668.   MCI_SEQ_SET_SMPTE_25=$00000200;
  669.   MCI_SEQ_SET_SMPTE_30=$00000300;
  670.   MCI_SEQ_SET_SMPTE_30DROP=$00000400;
  671.   MCI_SEQ_SET_SONGPTR=$00000500;
  672.   MCI_SEQ_MIDI=$00000001;
  673.   MCI_SEQ_SMPTE=$00000002;
  674.   MCI_SEQ_FILE=$00000003;
  675.   MCI_SEQ_NONE=$00000004;
  676.   MCI_SEQ_DIV_PPQN=$00000001;
  677.   MCI_SEQ_DIV_SMPTE_24=$00000002;
  678.   MCI_SEQ_DIV_SMPTE_25=$00000003;
  679.   MCI_SEQ_DIV_SMPTE_30DROP=$00000004;
  680.   MCI_SEQ_DIV_SMPTE_30=$00000005;
  681.  
  682.   MCI_WAVE_INPUT=$00001000;
  683.   MCI_WAVE_OUTPUT=$00002000;
  684.   MCI_WAVE_SET_SAMPLESPERSEC=$01000000;
  685.   MCI_WAVE_SET_AVGBYTESPERSEC=$02000000;
  686.   MCI_WAVE_SET_BLOCKALIGN=$04000000;
  687.   MCI_WAVE_SET_FORMATTAG=$08000000;
  688.   MCI_WAVE_SET_CHANNELS=$10000000;
  689.   MCI_WAVE_SET_BITSPERSAMPLE=$80000000;
  690.   MCI_WAVE_FORMAT_PCM=DATATYPE_WAVEFORM;
  691.   MCI_WAVE_FORMAT_ADPCM=$0002;
  692.   MCI_WAVE_FORMAT_IBM_CVSD=$0005;
  693.   MCI_WAVE_FORMAT_ALAW=DATATYPE_RIFF_ALAW;
  694.   MCI_WAVE_FORMAT_MULAW=DATATYPE_RIFF_MULAW;
  695.   MCI_WAVE_FORMAT_OKI_ADPCM=$0010;
  696.   MCI_WAVE_FORMAT_DVI_ADPCM=$0011;
  697.   MCI_WAVE_FORMAT_DIGISTD=$0015;
  698.   MCI_WAVE_FORMAT_DIGIFIX=$0016;
  699.   MCI_WAVE_FORMAT_AVC_ADPCM=DATATYPE_ADPCM_AVC;
  700.   MCI_WAVE_FORMAT_IBM_ADPCM=DATATYPE_ADPCM_AVC;
  701.   MCI_WAVE_FORMAT_IBM_MULAW=DATATYPE_MULAW;
  702.   MCI_WAVE_FORMAT_IBM_ALAW=DATATYPE_ALAW;
  703.   MCI_WAVE_FORMAT_CT_ADPCM=DATATYPE_CT_ADPCM;
  704.  
  705.  
  706.   MCI_DGV_INFO_VIDEO_FILE=$00001000;
  707.   MCI_DGV_INFO_IMAGE_FILE=$00002000;
  708.   MCI_DGV_INFO_TEXT=$00010000;
  709.   MCI_DGV_OPEN_PARENT=MCI_VID_OPEN_PARENT;
  710.   MCI_DGV_PLAY_REVERSE=$00001000;
  711.   MCI_DGV_PLAY_FAST=$00002000;
  712.   MCI_DGV_PLAY_SPEED=$00004000;
  713.   MCI_DGV_PLAY_SCAN=$00008000;
  714.   MCI_DGV_PLAY_SLOW=$00010000;
  715.   MCI_DGV_PLAY_REPEAT=$00020000;
  716.   MCI_DGV_PUT_RECT=MCI_VID_PUT_RECT;
  717.   MCI_DGV_PUT_DESTINATION=MCI_VID_PUT_DESTINATION;
  718.   MCI_DGV_PUT_SOURCE=MCI_VID_PUT_SOURCE;
  719.   MCI_DGV_PUT_WINDOW_MOVE=MCI_VID_PUT_WINDOW_MOVE;
  720.   MCI_DGV_PUT_WINDOW_SIZE=MCI_VID_PUT_WINDOW_SIZE;
  721.   MCI_DGV_RECORD_RECT=$00000400;
  722.   MCI_DGV_SAVE_VIDEO_FILE=$00001000;
  723.   MCI_DGV_SAVE_IMAGE_FILE=$00002000;
  724.   MCI_DGV_SEEK_TO_NEAREST_IFRAME=$00100000;
  725.   MCI_DGV_SET_VIDEO_COMPRESSION=MCI_VID_SET_VIDEO_COMPRESSION;
  726.   MCI_DGV_SET_IMAGE_COMPRESSION=MCI_VID_SET_IMAGE_COMPRESSION;
  727.   MCI_DGV_SET_IMAGE_BITSPERPEL=MCI_VID_SET_IMAGE_BITSPERPEL;
  728.   MCI_DGV_SET_IMAGE_PELFORMAT=MCI_VID_SET_IMAGE_PELFORMAT;
  729.   MCI_DGV_SET_BRIGHTNESS=MCI_VID_SET_BRIGHTNESS;
  730.   MCI_DGV_SET_CONTRAST=MCI_VID_SET_CONTRAST;
  731.   MCI_DGV_SET_HUE=MCI_VID_SET_HUE;
  732.   MCI_DGV_SET_SATURATION=MCI_VID_SET_SATURATION;
  733.   MCI_DGV_SET_SHARPNESS=MCI_VID_SET_SHARPNESS;
  734.   MCI_DGV_SET_GREYSCALE=MCI_VID_SET_GREYSCALE;
  735.   MCI_DGV_SET_IMAGE_QUALITY=MCI_VID_SET_IMAGE_QUALITY;
  736.   MCI_DGV_SET_VIDEO_QUALITY=MCI_VID_SET_VIDEO_QUALITY;
  737.   MCI_DGV_SET_IMAGE_COMPRESSION_METHOD=MCI_VID_SET_IMAGE_COMPRESSION_METHOD;
  738.   MCI_DGV_SET_MONITOR=MCI_SET_MONITOR;
  739.   MCI_DGV_SET_MINIMUM_VIDEO_REFRESH_RATE=MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE;
  740.   MCI_DGV_SET_IMAGE_FILE_FORMAT=MCI_VID_SET_IMAGE_FILE_FORMAT;
  741.   MCI_DGV_SET_REF_INTERVAL=MCI_VID_SET_REF_INTERVAL;
  742.   MCI_DGV_SET_MAXDATARATE=MCI_VID_SET_MAXDATARATE;
  743.   MCI_DGV_SET_VIDEO_FILE_FORMAT=MCI_VID_SET_VIDEO_FILE_FORMAT;
  744.   MCI_DGV_STATUS_HWND=MCI_VID_STATUS_HWND;
  745.   MCI_DGV_STATUS_AUDIO_COMPRESSION=MCI_VID_STATUS_AUDIO_COMPRESSION;
  746.   MCI_DGV_STATUS_VIDEO_COMPRESSION=MCI_VID_STATUS_VIDEO_COMPRESSION;
  747.   MCI_DGV_STATUS_IMAGE_COMPRESSION=MCI_VID_STATUS_IMAGE_COMPRESSION;
  748.   MCI_DGV_STATUS_AUDIO_QUALITY=MCI_VID_STATUS_AUDIO_QUALITY;
  749.   MCI_DGV_STATUS_VIDEO_QUALITY=MCI_VID_STATUS_VIDEO_QUALITY;
  750.   MCI_DGV_STATUS_IMAGE_QUALITY=MCI_VID_STATUS_IMAGE_QUALITY;
  751.   MCI_DGV_STATUS_IMAGE_BITSPERPEL=MCI_VID_STATUS_IMAGE_BITSPERPEL;
  752.   MCI_DGV_STATUS_IMAGE_PELFORMAT=MCI_VID_STATUS_IMAGE_PELFORMAT;
  753.   MCI_DGV_STATUS_FORWARD=MCI_VID_STATUS_FORWARD;
  754.   MCI_DGV_STATUS_NORMAL_RATE=MCI_VID_STATUS_NORMAL_RATE;
  755.   MCI_DGV_STATUS_VIDEO_X_EXTENT=MCI_VID_STATUS_VIDEO_X_EXTENT;
  756.   MCI_DGV_STATUS_VIDEO_Y_EXTENT=MCI_VID_STATUS_VIDEO_Y_EXTENT;
  757.   MCI_DGV_STATUS_IMAGE_X_EXTENT=MCI_VID_STATUS_IMAGE_X_EXTENT;
  758.   MCI_DGV_STATUS_IMAGE_Y_EXTENT=MCI_VID_STATUS_IMAGE_Y_EXTENT;
  759.   MCI_DGV_STATUS_BRIGHTNESS=MCI_VID_STATUS_BRIGHTNESS;
  760.   MCI_DGV_STATUS_CONTRAST=MCI_VID_STATUS_CONTRAST;
  761.   MCI_DGV_STATUS_HUE=MCI_VID_STATUS_HUE;
  762.   MCI_DGV_STATUS_SATURATION=MCI_VID_STATUS_SATURATION;
  763.   MCI_DGV_STATUS_SPEED=MCI_VID_STATUS_SPEED;
  764.   MCI_DGV_STATUS_SHARPNESS=MCI_VID_STATUS_SHARPNESS;
  765.   MCI_DGV_STATUS_REF_INTERVAL=MCI_VID_STATUS_REF_INTERVAL;
  766.   MCI_DGV_STATUS_MAXDATARATE=MCI_VID_STATUS_MAXDATARATE;
  767.   MCI_DGV_STATUS_VIDEO_FILE_FORMAT=MCI_VID_STATUS_VIDEO_FILE_FORMAT;
  768.   MCI_DGV_WHERE_DESTINATION=MCI_VID_WHERE_DESTINATION;
  769.   MCI_DGV_WHERE_SOURCE=MCI_VID_WHERE_SOURCE;
  770.   MCI_DGV_WHERE_WINDOW=MCI_VID_WHERE_WINDOW;
  771.   MCI_DGV_WINDOW_HWND=MCI_VID_WINDOW_HWND;
  772.   MCI_DGV_WINDOW_STATE=MCI_VID_WINDOW_STATE;
  773.   MCI_DGV_WINDOW_TEXT=MCI_VID_WINDOW_TEXT;
  774.   MCI_DGV_WINDOW_DEFAULT=MCI_VID_WINDOW_DEFAULT;
  775.  
  776.   MCI_OVLY_FREEZE_RECT=$00000100;
  777.   MCI_OVLY_FREEZE_RECT_OUTSIDE=$00000200;
  778.   MCI_OVLY_UNFREEZE_RECT=$00000100;
  779.   MCI_OVLY_UNFREEZE_RECT_OUTSIDE=$00000200;
  780.   MCI_OVLY_INFO_TEXT=$00010000;
  781.   MCI_OVLY_OPEN_PARENT=MCI_VID_OPEN_PARENT;
  782.   MCI_OVLY_PUT_RECT=MCI_VID_PUT_RECT;
  783.   MCI_OVLY_PUT_DESTINATION=MCI_VID_PUT_DESTINATION;
  784.   MCI_OVLY_PUT_SOURCE=MCI_VID_PUT_SOURCE;
  785.   MCI_OVLY_PUT_WINDOW_MOVE=MCI_VID_PUT_WINDOW_MOVE;
  786.   MCI_OVLY_PUT_WINDOW_SIZE=MCI_VID_PUT_WINDOW_SIZE;
  787.   MCI_OVLY_SET_IMAGE_COMPRESSION=MCI_VID_SET_IMAGE_COMPRESSION;
  788.   MCI_OVLY_SET_IMAGE_BITSPERPEL=MCI_VID_SET_IMAGE_BITSPERPEL;
  789.   MCI_OVLY_SET_IMAGE_PELFORMAT=MCI_VID_SET_IMAGE_PELFORMAT;
  790.   MCI_OVLY_SET_BRIGHTNESS=MCI_VID_SET_BRIGHTNESS;
  791.   MCI_OVLY_SET_CONTRAST=MCI_VID_SET_CONTRAST;
  792.   MCI_OVLY_SET_HUE=MCI_VID_SET_HUE;
  793.   MCI_OVLY_SET_SATURATION=MCI_VID_SET_SATURATION;
  794.   MCI_OVLY_SET_SHARPNESS=MCI_VID_SET_SHARPNESS;
  795.   MCI_OVLY_SET_GREYSCALE=MCI_VID_SET_GREYSCALE;
  796.   MCI_OVLY_SET_IMAGE_QUALITY=MCI_VID_SET_IMAGE_QUALITY;
  797.   MCI_OVLY_SET_IMAGE_COMPRESSION_METHOD=MCI_VID_SET_IMAGE_COMPRESSION_METHOD;
  798.   MCI_OVLY_SET_MINIMUM_VIDEO_REFRESH_RATE=MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE;
  799.   MCI_OVLY_SET_IMAGE_FILE_FORMAT=MCI_VID_SET_IMAGE_FILE_FORMAT;
  800.   MCI_OVLY_STATUS_HWND=MCI_VID_STATUS_HWND;
  801.   MCI_OVLY_STATUS_IMAGE_COMPRESSION=MCI_VID_STATUS_IMAGE_COMPRESSION;
  802.   MCI_OVLY_STATUS_IMAGE_BITSPERPEL=MCI_VID_STATUS_IMAGE_BITSPERPEL;
  803.   MCI_OVLY_STATUS_IMAGE_PELFORMAT=MCI_VID_STATUS_IMAGE_PELFORMAT;
  804.   MCI_OVLY_STATUS_IMAGE_X_EXTENT=MCI_VID_STATUS_IMAGE_X_EXTENT;
  805.   MCI_OVLY_STATUS_IMAGE_Y_EXTENT=MCI_VID_STATUS_IMAGE_Y_EXTENT;
  806.   MCI_OVLY_STATUS_BRIGHTNESS=MCI_VID_STATUS_BRIGHTNESS;
  807.   MCI_OVLY_STATUS_CONTRAST=MCI_VID_STATUS_CONTRAST;
  808.   MCI_OVLY_STATUS_HUE=MCI_VID_STATUS_HUE;
  809.   MCI_OVLY_STATUS_SATURATION=MCI_VID_STATUS_SATURATION;
  810.   MCI_OVLY_STATUS_GREYSCALE=MCI_VID_STATUS_GREYSCALE;
  811.   MCI_OVLY_STATUS_IMAGE_QUALITY=MCI_VID_STATUS_IMAGE_QUALITY;
  812.   MCI_OVLY_STATUS_SHARPNESS=MCI_VID_STATUS_SHARPNESS;
  813.   MCI_OVLY_STATUS_IMAGE_FILE_FORMAT=MCI_VID_STATUS_IMAGE_FILE_FORMAT;
  814.   MCI_OVLY_STATUS_TRANSPARENT_TYPE=MCI_VID_STATUS_TRANSPARENT_TYPE;
  815.   MCI_OVLY_STATUS_TRANSPARENT_COLOR=MCI_VID_STATUS_TRANSPARENT_COLOR;
  816.   MCI_OVLY_WHERE_DESTINATION=MCI_VID_WHERE_DESTINATION;
  817.   MCI_OVLY_WHERE_SOURCE=MCI_VID_WHERE_SOURCE;
  818.   MCI_OVLY_WHERE_WINDOW=MCI_VID_WHERE_WINDOW;
  819.   MCI_OVLY_WINDOW_HWND=MCI_VID_WINDOW_HWND;
  820.   MCI_OVLY_WINDOW_STATE=MCI_VID_WINDOW_STATE;
  821.   MCI_OVLY_WINDOW_TEXT=MCI_VID_WINDOW_TEXT;
  822.   MCI_OVLY_WINDOW_DEFAULT=MCI_VID_WINDOW_DEFAULT;
  823.  
  824.  
  825. (**************************)
  826. (* get device capabilites *)
  827. (**************************)
  828.  
  829.   MCI_GETDEVCAPS_MESSAGE=$00000100;
  830.   MCI_GETDEVCAPS_ITEM=$00000200;
  831.   MCI_GETDEVCAPS_EXTENDED=$00000400;
  832.  
  833.   MCI_GETDEVCAPS_CAN_EJECT=$00000001;
  834.   MCI_GETDEVCAPS_CAN_LOCKEJECT=$00000002;
  835.   MCI_GETDEVCAPS_CAN_PLAY=$00000003;
  836.   MCI_GETDEVCAPS_CAN_PROCESS_INTERNAL=$00000004;
  837.   MCI_GETDEVCAPS_CAN_RECORD=$00000005;
  838.   MCI_GETDEVCAPS_CAN_RECORD_INSERT=$00000006;
  839.   MCI_GETDEVCAPS_CAN_SAVE=$00000007;
  840.   MCI_GETDEVCAPS_CAN_SETVOLUME=$00000008;
  841.   MCI_GETDEVCAPS_CAN_STREAM=$00000009;
  842.   MCI_GETDEVCAPS_DEVICE_TYPE=$0000000A;
  843.   MCI_GETDEVCAPS_HAS_AUDIO=$0000000B;
  844.   MCI_GETDEVCAPS_HAS_VIDEO=$0000000C;
  845.   MCI_GETDEVCAPS_PREROLL_TIME=$0000000D;
  846.   MCI_GETDEVCAPS_PREROLL_TYPE=$0000000E;
  847.   MCI_GETDEVCAPS_USES_FILES=$0000000F;
  848.   MCI_GETDEVCAPS_HAS_IMAGE=$00000010;
  849.   MCI_GETDEVCAPS_WAVE_FORMAT=$00000011;
  850.  
  851.   MCI_VID_GETDEVCAPS_CAN_STRETCH=MCI_VID_ITEM_BASE;
  852.   MCI_VID_GETDEVCAPS_CAN_DISTORT=(MCI_VID_ITEM_BASE+1);
  853.   MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT=(MCI_VID_ITEM_BASE+2);
  854.   MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT=(MCI_VID_ITEM_BASE+3);
  855.   MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT=(MCI_VID_ITEM_BASE+4);
  856.   MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT=(MCI_VID_ITEM_BASE+5);
  857.   MCI_VID_GETDEVCAPS_MAX_WINDOWS=(MCI_VID_ITEM_BASE+6);
  858.   MCI_VID_GETDEVCAPS_CAN_FREEZE=(MCI_VID_ITEM_BASE+7);
  859.   MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS=(MCI_VID_ITEM_BASE+8);
  860.   MCI_VID_GETDEVCAPS_CAN_REVERSE=(MCI_VID_ITEM_BASE+9);
  861.   MCI_VID_GETDEVCAPS_FAST_RATE=(MCI_VID_ITEM_BASE+10);
  862.   MCI_VID_GETDEVCAPS_SLOW_RATE=(MCI_VID_ITEM_BASE+11);
  863.   MCI_VID_GETDEVCAPS_NORMAL_RATE=(MCI_VID_ITEM_BASE+12);
  864.   MCI_VID_GETDEVCAPS_MINIMUM_RATE=(MCI_VID_ITEM_BASE+13);
  865.   MCI_VID_GETDEVCAPS_MAXIMUM_RATE=(MCI_VID_ITEM_BASE+14);
  866.  
  867.   MCI_VD_GETDEVCAPS_CLV=$00000400;
  868.   MCI_VD_GETDEVCAPS_CAV=$00000800;
  869.   MCI_VD_GETDEVCAPS_CAN_REVERSE=MCI_VID_GETDEVCAPS_CAN_REVERSE;
  870.   MCI_VD_GETDEVCAPS_FAST_RATE=MCI_VID_GETDEVCAPS_FAST_RATE;
  871.   MCI_VD_GETDEVCAPS_SLOW_RATE=MCI_VID_GETDEVCAPS_SLOW_RATE;
  872.   MCI_VD_GETDEVCAPS_NORMAL_RATE=MCI_VID_GETDEVCAPS_NORMAL_RATE;
  873.   MCI_VD_GETDEVCAPS_MINIMUM_RATE=MCI_VID_GETDEVCAPS_MINIMUM_RATE;
  874.   MCI_VD_GETDEVCAPS_MAXIMUM_RATE=MCI_VID_GETDEVCAPS_MAXIMUM_RATE;
  875.  
  876.   MCI_DGV_GETDEVCAPS_CAN_STRETCH=MCI_VID_GETDEVCAPS_CAN_STRETCH;
  877.   MCI_DGV_GETDEVCAPS_CAN_DISTORT=MCI_VID_GETDEVCAPS_CAN_DISTORT;
  878.   MCI_DGV_GETDEVCAPS_VIDEO_X_EXTENT=MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT;
  879.   MCI_DGV_GETDEVCAPS_VIDEO_Y_EXTENT=MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT;
  880.   MCI_DGV_GETDEVCAPS_IMAGE_X_EXTENT=MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT;
  881.   MCI_DGV_GETDEVCAPS_IMAGE_Y_EXTENT=MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT;
  882.   MCI_DGV_GETDEVCAPS_MAX_WINDOWS=MCI_VID_GETDEVCAPS_MAX_WINDOWS;
  883.   MCI_DGV_GETDEVCAPS_OVERLAY_GRAPHICS=MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS;
  884.   MCI_DGV_GETDEVCAPS_CAN_REVERSE=MCI_VID_GETDEVCAPS_CAN_REVERSE;
  885.   MCI_DGV_GETDEVCAPS_FAST_RATE=MCI_VID_GETDEVCAPS_FAST_RATE;
  886.   MCI_DGV_GETDEVCAPS_SLOW_RATE=MCI_VID_GETDEVCAPS_SLOW_RATE;
  887.   MCI_DGV_GETDEVCAPS_NORMAL_RATE=MCI_VID_GETDEVCAPS_NORMAL_RATE;
  888.   MCI_DGV_GETDEVCAPS_MINIMUM_RATE=MCI_VID_GETDEVCAPS_MINIMUM_RATE;
  889.   MCI_DGV_GETDEVCAPS_MAXIMUM_RATE=MCI_VID_GETDEVCAPS_MAXIMUM_RATE;
  890.  
  891.   MCI_OVLY_GETDEVCAPS_CAN_STRETCH=MCI_VID_GETDEVCAPS_CAN_STRETCH;
  892.   MCI_OVLY_GETDEVCAPS_CAN_DISTORT=MCI_VID_GETDEVCAPS_CAN_DISTORT;
  893.   MCI_OVLY_GETDEVCAPS_VIDEO_X_EXTENT=MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT;
  894.   MCI_OVLY_GETDEVCAPS_VIDEO_Y_EXTENT=MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT;
  895.   MCI_OVLY_GETDEVCAPS_IMAGE_X_EXTENT=MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT;
  896.   MCI_OVLY_GETDEVCAPS_IMAGE_Y_EXTENT=MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT;
  897.   MCI_OVLY_GETDEVCAPS_MAX_WINDOWS=MCI_VID_GETDEVCAPS_MAX_WINDOWS;
  898.   MCI_OVLY_GETDEVCAPS_CAN_FREEZE=MCI_VID_GETDEVCAPS_CAN_FREEZE;
  899.   MCI_OVLY_GETDEVCAPS_OVERLAY_GRAPHICS=MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS;
  900.  
  901.  
  902. (*******************)
  903. (* connector stuff *)
  904. (*******************)
  905.  
  906.   MCI_MIDI_STREAM_CONNECTOR=$00000001;
  907.   MCI_CD_STREAM_CONNECTOR=$00000002;
  908.   MCI_WAVE_STREAM_CONNECTOR=$00000003;
  909.   MCI_AMP_STREAM_CONNECTOR=$00000004;
  910.   MCI_XA_STREAM_CONNECTOR=$00000005;
  911.   MCI_HEADPHONES_CONNECTOR=$00000006;
  912.   MCI_SPEAKERS_CONNECTOR=$00000007;
  913.   MCI_MICROPHONE_CONNECTOR=$00000008;
  914.   MCI_LINE_IN_CONNECTOR=$00000009;
  915.   MCI_LINE_OUT_CONNECTOR=$0000000a;
  916.   MCI_VIDEO_IN_CONNECTOR=$0000000b;
  917.   MCI_VIDEO_OUT_CONNECTOR=$0000000c;
  918.   MCI_PHONE_SET_CONNECTOR=$0000000d;
  919.   MCI_PHONE_LINE_CONNECTOR=$0000000e;
  920.   MCI_AUDIO_IN_CONNECTOR=$0000000f;
  921.   MCI_AUDIO_OUT_CONNECTOR=$00000010;
  922.   MCI_UNIVERSAL_CONNECTOR=$00000011;
  923.  
  924.   MCI_ENABLE_CONNECTOR=$00000100;
  925.   MCI_DISABLE_CONNECTOR=$00000200;
  926.   MCI_QUERY_CONNECTOR_STATUS=$00000400;
  927.   MCI_CONNECTOR_TYPE=$00000800;
  928.   MCI_CONNECTOR_INDEX=$00001000;
  929.   MCI_TO_CONNECTOR_INDEX=$00002000;
  930.   MCI_TO_CONNECTOR_TYPE=$00004000;
  931.   MCI_QUERY_CONNECTION=$00008000;
  932.   MCI_MAKE_CONNECTION=$00010000;
  933.   MCI_BREAK_CONNECTION=$00020000;
  934.   MCI_ENUMERATE_CONNECTORS=$00040000;
  935.   MCI_QUERY_CONNECTOR_TYPE=$00080000;
  936.   MCI_QUERY_VALID_CONNECTION=$00100000;
  937.   MCI_CONNECTOR_ALIAS=$00200000;
  938.  
  939.  
  940. (********)
  941. (* misc *)
  942. (********)
  943.  
  944.   MIDI_MAPPER=$20000000;
  945.   MCI_MIDI_MAPPER=MIDI_MAPPER;
  946.  
  947.   MM_MCINOTIFY=$0500;
  948.   MM_MCIPASSDEVICE=$0501;
  949.   MM_MCIPOSITIONCHANGE=$0502;
  950.   MM_MCICUEPOINT=$0503;
  951.   MM_MCIPLAYLISTMESSAGE=$0504;
  952.   MM_MCIEVENT=$0505;
  953.   MM_MCISYNCH=$0506;
  954.  
  955.   MSV_CLOSEDCAPTION=0;
  956.   MSV_MASTERVOLUME=1;
  957.   MSV_HEADPHONES=2;
  958.   MSV_SPEAKERS=3;
  959.   MSV_WORKPATH=4;
  960.   MSV_SYSQOSVALUE=5;
  961.   MSV_SYSQOSERRORFLAG=6;
  962.   MSV_MAX=7;
  963.  
  964. type
  965.   HDCT=ULONG;
  966.   RECT=ULONG;
  967.  
  968.  
  969. (************************)
  970. (* playlist definitions *)
  971. (************************)
  972.  
  973. const
  974.   DATA_OPERATION=0;
  975.   BRANCH_OPERATION=1;
  976.   LOOP_OPERATION=2;
  977.   CALL_OPERATION=3;
  978.   RETURN_OPERATION=4;
  979.   EXIT_OPERATION=5;
  980.   NOP_OPERATION=6;
  981.   MESSAGE_OPERATION=7;
  982.   CUEPOINT_OPERATION=8;
  983.  
  984.  
  985. (************)
  986. (* typedefs *)
  987. (************)
  988. type
  989. (*OS2ME*)
  990.  SZ=Char;
  991.  PSZ=PChar;
  992.  PVOID=POINTER;
  993.  
  994.  VERSION=SmallWord;
  995.  PW=^SmallWord;
  996.  PAW=^Smallword;
  997.  LPSTR=pointer;
  998.  LPTR=pointer;
  999.  LPRECT=pointer;
  1000.  
  1001.  FNMCI= Function (var x1:ULONG; x2:SmallWord;x3:ULONG;
  1002.                   x4:ULONG;x5:SmallWord):ULONG;
  1003.  PFNMCI=FNMCI;
  1004.  
  1005.  HANDLE=HWND;
  1006.  
  1007.  MMTIME=ULONG;
  1008.  PMMTIME=^MMTIME;
  1009.  
  1010.  HMMIO=ULONG;
  1011.  PHMMIO=^ULONG;
  1012.  
  1013.  
  1014.  SPCBKEY = record
  1015.    ulDataType:ULONG;
  1016.    ulDataSubType:ULONG;
  1017.    ulIntKey:ULONG;
  1018.  end;
  1019.  
  1020.   PSPCBKEY=^SPCBKEY;
  1021.  
  1022.  MMTRACKINFO = record
  1023.    ulTrackID:ULONG;
  1024.    ulMediaType:ULONG;
  1025.    ulCountry:ULONG;
  1026.    ulCodePage:ULONG;
  1027.    ulReserved1:ULONG;
  1028.    ulReserved2:ULONG;
  1029.  end;
  1030.  
  1031.   PMMTRACKINFO=^MMTRACKINFO;
  1032.  
  1033.  
  1034.  
  1035.  
  1036. (***************)
  1037.   CONNECT=record
  1038.     usConnectType:USHORT;
  1039.     szToInstallName: array [0..MAX_DEVICE_NAME-1] of CHAR;
  1040.     usToConnectIndex:USHORT;
  1041.   end;
  1042.  
  1043.   MCI_AMP_OPEN_PARMS=record
  1044.     hwndCallback:HWND;
  1045.     usDeviceID:USHORT;
  1046.     usReserved0:USHORT;
  1047.     pszDeviceType:PSZ;
  1048.     pszElementName:PSZ;
  1049.     pszAlias:PSZ;
  1050.     pDevDataPtr:PVOID;
  1051.   end;
  1052.  
  1053.   MCI_CAPTURE_PARMS=record
  1054.     hwndCallback:HWND;
  1055.     rect:RECTL;
  1056.   end;
  1057.  
  1058.   MCI_CDXA_SET_PARMS=record
  1059.     hwndCallback:HWND;
  1060.     ulTimeFormat:ULONG;
  1061.     ulSpeedFormat:ULONG;
  1062.     ulAudio:ULONG;
  1063.     ulLevel:ULONG;
  1064.     ulOver:ULONG;
  1065.     ulItem:ULONG;
  1066.     ulValue:ULONG;
  1067.     ulChannel:ULONG;
  1068.     pPlayList:PVOID;
  1069.     ulPlayListSize:ULONG;
  1070.   end;
  1071.  
  1072.   MCI_CDXA_STATUS_PARMS=record
  1073.     hwndCallback:HWND;
  1074.     ulReturn:ULONG;
  1075.     ulItem:ULONG;
  1076.     ulValue:ULONG;
  1077.     ulChannel:ULONG;
  1078.   end;
  1079.  
  1080.   MCI_CONNECTION_PARMS=record
  1081.     hwndCallback:HWND;
  1082.     ulConnectorType:ULONG;
  1083.     ulConnectorIndex:ULONG;
  1084.     pszAlias:PSZ;
  1085.     usToDeviceID:USHORT;
  1086.     usReserved0:USHORT;
  1087.     ulReserved1:ULONG;
  1088.     ulReserved2:ULONG;
  1089.   end;
  1090.  
  1091.   MCI_CONNECTORINFO_PARMS=record
  1092.     hwndCallback:HWND;
  1093.     ulReturn:ULONG;
  1094.     ulDeviceTypeID:ULONG;
  1095.     ulConnectorType:ULONG;
  1096.     ulConnectorIndex:ULONG;
  1097.     ulToConnectorType:ULONG;
  1098.   end;
  1099.  
  1100.   MCI_CONNECTOR_PARMS=record
  1101.     hwndCallback:HWND;
  1102.     ulReturn:ULONG;
  1103.     ulConnectorType:ULONG;
  1104.     ulConnectorIndex:ULONG;
  1105.   end;
  1106.  
  1107.   MCI_CUEPOINT_PARMS=record
  1108.     hwndCallback:HWND;
  1109.     ulCuepoint:ULONG;
  1110.     usUserParm:USHORT;
  1111.     usReserved0:USHORT;
  1112.   end;
  1113.  
  1114.   MCI_DEFAULT_CONNECTION_PARMS=record
  1115.     hwndCallback:HWND;
  1116.     pszDevice:PSZ;
  1117.     ulConnectorType:ULONG;
  1118.     ulConnectorIndex:ULONG;
  1119.     pszToDevice:PSZ;
  1120.     ulToConnectorType:ULONG;
  1121.     ulToConnectorIndex:ULONG;
  1122.   end;
  1123.  
  1124.   MCI_DEVICESETTINGS_PARMS=record
  1125.     hwndCallback:HWND;
  1126.     hwndNotebook:HWND;
  1127.     usDeviceType:USHORT;
  1128.     pszDeviceName:PSZ;
  1129.   end;
  1130.  
  1131.   MCI_DGV_PLAY_PARMS=record
  1132.     hwndCallback:HWND;
  1133.     ulFrom:ULONG;
  1134.     ulTo:ULONG;
  1135.     ulSpeed:ULONG;
  1136.   end;
  1137.  
  1138.   MCI_EDIT_PARMS=record
  1139.     hwndCallback:HWND;
  1140.     ulStructLen:ULONG;
  1141.     ulFrom:ULONG;
  1142.     ulTo:ULONG;
  1143.     pBuff:PVOID;
  1144.     ulBufLen:ULONG;
  1145.     pHeader:PVOID;
  1146.   end;
  1147.  
  1148.   MCI_ESCAPE_PARMS=record
  1149.     hwndCallback:HWND;
  1150.     pszCommand:PSZ;
  1151.   end;
  1152.  
  1153.   MCI_GENERIC_PARMS=record
  1154.     hwndCallback:HWND;
  1155.   end;
  1156.  
  1157.   MCI_GETDEVCAPS_PARMS=record
  1158.     hwndCallback:HWND;
  1159.     ulReturn:ULONG;
  1160.     ulItem:ULONG;
  1161.     usMessage:USHORT;
  1162.     usReserved0:USHORT;
  1163.   end;
  1164.  
  1165.   MCI_GROUP_PARMS=record
  1166.     hwndCallback:HWND;
  1167.     usGroupID:USHORT;
  1168.     usReserved0:USHORT;
  1169.     ulStructLength:ULONG;
  1170.     usMasterID:USHORT;
  1171.     usReserved1:USHORT;
  1172.     pszGroupAlias:PSZ;
  1173.     ulNumDevices:ULONG;
  1174.     paulDeviceID:PULONG;
  1175.   end;
  1176.  
  1177.   MCI_IMAGE_PARMS=record
  1178.     hwndCallback:HWND;
  1179.     ulPelFormat:ULONG;
  1180.     usBitCount:USHORT;
  1181.     usReserved0:USHORT;
  1182.     ulImageCompression:ULONG;
  1183.     rect:RECTL;
  1184.     pPelBuffer:PVOID;
  1185.     ulPelBufferHeight:ULONG;
  1186.     ulPelBufferWidth:ULONG;
  1187.     ulBufLen:ULONG;
  1188.   end;
  1189.  
  1190.   MCI_INFO_PARMS=record
  1191.     hwndCallback:HWND;
  1192.     pszReturn:PSZ;
  1193.     ulRetSize:ULONG;
  1194.   end;
  1195.  
  1196.   MCI_LOAD_PARMS=record
  1197.     hwndCallback:HWND;
  1198.     pszElementName:PSZ;
  1199.   end;
  1200.  
  1201.   MCI_MASTERAUDIO_PARMS=record
  1202.     hwndDummyCallback:HWND;
  1203.     ulReturn:ULONG;
  1204.     ulMasterVolume:ULONG;
  1205.   end;
  1206.  
  1207.   MCI_OPEN_PARMS=record
  1208.     hwndCallback:HWND;
  1209.     usDeviceID:USHORT;
  1210.     usReserved0:USHORT;
  1211.     pszDeviceType:PSZ;
  1212.     pszElementName:PSZ;
  1213.     pszAlias:PSZ;
  1214.   end;
  1215.  
  1216.   MCI_PALETTE_PARMS=record
  1217.     hwndCallback:HWND;
  1218.     usRegisteredMap:USHORT;
  1219.     usReserved0:USHORT;
  1220.     ulPalEntries:ULONG;
  1221.     pPalette:PVOID;
  1222.   end;
  1223.  
  1224.   MCI_PLAY_PARMS=record
  1225.     hwndCallback:HWND;
  1226.     ulFrom:ULONG;
  1227.     ulTo:ULONG;
  1228.   end;
  1229.  
  1230.   MCI_POSITION_PARMS=record
  1231.     hwndCallback:HWND;
  1232.     ulUnits:ULONG;
  1233.     usUserParm:USHORT;
  1234.     Reserved0:USHORT;
  1235.     Reserved1:ULONG;
  1236.   end;
  1237.  
  1238.   MCI_RECORD_PARMS=record
  1239.     hwndCallback:HWND;
  1240.     ulFrom:ULONG;
  1241.     ulTo:ULONG;
  1242.   end;
  1243.  
  1244.   MCI_RESTORE_PARMS=record
  1245.     hwndCallback:HWND;
  1246.     SrcRect:RECTL;
  1247.     DestRect:RECTL;
  1248.   end;
  1249.  
  1250.   MCI_SAVE_PARMS=record
  1251.     hwndCallback:HWND;
  1252.     pszFileName:PSZ;
  1253.   end;
  1254.  
  1255.   MCI_SEEK_PARMS=record
  1256.     hwndCallback:HWND;
  1257.     ulTo:ULONG;        (* SEEK_SET, SEEK_CUR, SEEK_END are defined in os2.h! *)
  1258.   end;
  1259.  
  1260.   MCI_SET_PARMS=record
  1261.     hwndCallback:HWND;
  1262.     ulTimeFormat:ULONG;
  1263.     ulSpeedFormat:ULONG;
  1264.     ulAudio:ULONG;
  1265.     ulLevel:ULONG;
  1266.     ulOver:ULONG;
  1267.     ulItem:ULONG;
  1268.     ulValue:ULONG;
  1269.   end;
  1270.  
  1271.   MCI_SEQ_SET_PARMS=record
  1272.     hwndCallback:HWND;
  1273.     ulTimeFormat:ULONG;
  1274.     ulSpeedFormat:ULONG;
  1275.     ulAudio:ULONG;
  1276.     ulLevel:ULONG;
  1277.     ulOver:ULONG;
  1278.     ulItem:ULONG;
  1279.     ulValue:ULONG;
  1280.     ulTempo:ULONG;
  1281.     ulPort:ULONG;
  1282.     ulSlave:ULONG;
  1283.     ulMaster:ULONG;
  1284.     ulOffset:ULONG;
  1285.   end;
  1286.  
  1287.   MCI_STATUS_PARMS=record
  1288.     hwndCallback:HWND;
  1289.     ulReturn:ULONG;
  1290.     ulItem:ULONG;
  1291.     ulValue:ULONG;
  1292.   end;
  1293.  
  1294.   MCI_STEP_PARMS=record
  1295.     hwndCallback:HWND;
  1296.     ulStep:ULONG;
  1297.   end;
  1298.  
  1299.   MCI_SYNC_OFFSET_PARMS=record
  1300.     hwndCallback:HWND;
  1301.     ulOffset:ULONG;
  1302.   end;
  1303.  
  1304.   MCI_SYSINFO_ALIAS=record
  1305.     szInstallName: array [0..MAX_DEVICE_NAME-1] of CHAR;
  1306.     szAliasName:array [0..MAX_ALIAS_NAME-1] of CHAR;
  1307.   end;
  1308.  
  1309.   MCI_SYSINFO_CONPARAMS=record
  1310.     szInstallName:array [0..MAX_DEVICE_NAME-1] of CHAR;
  1311.     usNumConnectors:USHORT;
  1312.     ConnectorList:array [0..MAX_CONNECTORS-1] of CONNECT;
  1313.   end;
  1314.  
  1315.   MCI_SYSINFO_DEFAULTDEVICE=record
  1316.     szInstallName:array[0..MAX_DEVICE_NAME-1] of CHAR;
  1317.     usDeviceType:USHORT;
  1318.   end;
  1319.  
  1320.   MCI_SYSINFO_DEVPARAMS=record
  1321.     szInstallName:array [0..MAX_DEVICE_NAME-1] of CHAR;
  1322.     szDevParams: array [0..MAX_DEV_PARAMS-1] of CHAR;
  1323.   end;
  1324.  
  1325.   MCI_SYSINFO_EXTENSION=record
  1326.     szInstallName: array [0..MAX_DEVICE_NAME] of CHAR;
  1327.     usNumExtensions:USHORT;
  1328.     szExtension: array [0..MAX_EXTENSIONS-1,0..MAX_EXTENSION_NAME-1] of CHAR;
  1329.   end;
  1330.  
  1331.   MCI_SYSINFO_LOGDEVICE=record
  1332.     szInstallName: array [0..MAX_DEVICE_NAME-1] of CHAR;
  1333.     usDeviceType:USHORT;
  1334.     ulDeviceFlag:ULONG;
  1335.     szVersionNumber: array [0..MAX_VERSION_NUMBER-1] of CHAR;
  1336.     szProductInfo: array [0..MAX_PRODINFO-1] of CHAR;
  1337.     szMCDDriver: array [0..MAX_DEVICE_NAME-1] of CHAR;
  1338.     szVSDDriver: array [0..MAX_DEVICE_NAME-1] of CHAR;
  1339.     szPDDName: array [0..MAX_PDD_NAME-1] of CHAR;
  1340.     szMCDTable: array [0..MAX_DEVICE_NAME-1] of CHAR;
  1341.     szVSDTable: array [0..MAX_DEVICE_NAME-1] of CHAR;
  1342.     usShareType:USHORT;
  1343.     szResourceName: array [0..MAX_DEVICE_NAME-1] of CHAR;
  1344.     usResourceUnits:USHORT;
  1345.     usResourceClasses:USHORT;
  1346.     ausClassArray: array [0..MAX_CLASSES-1] of USHORT;
  1347.     ausValidClassArray: array [0..MAX_CLASSES-1,0..MAX_CLASSES-1] of USHORT;
  1348.   end;
  1349.  
  1350.   MCI_SYSINFO_PARMS=record
  1351.     hwndDummyCallback:HWND;
  1352.     pszReturn:PSZ;
  1353.     ulRetSize:ULONG;
  1354.     ulNumber:ULONG;
  1355.     usDeviceType:USHORT;
  1356.     usReserved0:USHORT;
  1357.     ulItem:ULONG;
  1358.     pSysInfoParm:PVOID;
  1359.   end;
  1360.  
  1361.   MCI_SYSINFO_QUERY_NAME=record
  1362.     szInstallName: array [0..MAX_DEVICE_NAME-1] of CHAR;
  1363.     szLogicalName: array [0..MAX_DEVICE_NAME-1] of CHAR;
  1364.     szAliasName: array [0..MAX_ALIAS_NAME-1] of CHAR;
  1365.     usDeviceType:USHORT;
  1366.     usDeviceOrd:USHORT;
  1367.   end;
  1368.  
  1369.   MCI_SYSINFO_TYPES=record
  1370.     szInstallName: array [0..MAX_DEVICE_NAME-1] of CHAR;
  1371.     szTypes: array [0..MAX_TYPEBUFFER] of CHAR;
  1372.   end;
  1373.  
  1374.   MCI_TOC_REC=record
  1375.     TrackNum:BYTE;
  1376.     ulStartAddr:ULONG;
  1377.     ulEndAddr:ULONG;
  1378.     Control:BYTE;
  1379.     usCountry:USHORT;
  1380.     ulOwner:ULONG;
  1381.     ulSerialNum:ULONG;
  1382.   end;
  1383.  
  1384.   PTOCREC=^MCI_TOC_REC;
  1385.  
  1386.   MCI_TOC_PARMS=record
  1387.     hwndCallback:HWND;
  1388.     pBuf:PTOCREC;
  1389.     ulBufSize:ULONG;
  1390.   end;
  1391.  
  1392.  
  1393.   MCI_VD_PLAY_PARMS=record
  1394.     hwndCallback:HWND;
  1395.     ulFrom:ULONG;
  1396.     ulTo:ULONG;
  1397.     ulFactor:ULONG;
  1398.   end;
  1399.  
  1400.   MCI_VD_SET_PARMS=record
  1401.     hwndCallback:HWND;
  1402.     ulTimeFormat:ULONG;
  1403.     ulSpeedFormat:ULONG;
  1404.     ulAudio:ULONG;
  1405.     ulLevel:ULONG;
  1406.     ulOver:ULONG;
  1407.     ulItem:ULONG;
  1408.     ulValue:ULONG;
  1409.     ulChannel:ULONG;
  1410.   end;
  1411.  
  1412.   MCI_VID_OPEN_PARMS=record
  1413.     hwndCallback:HWND;
  1414.     usDeviceID:USHORT;
  1415.     usReserved0:USHORT;
  1416.     pszDeviceType:PSZ;
  1417.     pszElementName:PSZ;
  1418.     pszAlias:PSZ;
  1419.     hwndParent:HWND;
  1420.   end;
  1421.  
  1422.   MCI_VID_RECT_PARMS=record
  1423.     hwndCallback:HWND;
  1424.     rc:RECTL;
  1425.   end;
  1426.  
  1427.   MCI_VID_WINDOW_PARMS=record
  1428.     hwndCallback:HWND;
  1429.     hwndDest:HWND;
  1430.     usCmdShow:USHORT;
  1431.     usReserved1:USHORT;
  1432.     pszText:PSZ;
  1433.     pszAlias:PSZ;
  1434.   end;
  1435.  
  1436.   MCI_WAVE_GETDEVCAPS_PARMS=record
  1437.     hwndCallback:HWND;
  1438.     ulReturn:ULONG;
  1439.     ulItem:ULONG;
  1440.     usMessage:USHORT;
  1441.     usReserved0:USHORT;
  1442.     ulLength:ULONG;
  1443.     ulBitsPerSample:ULONG;
  1444.     ulFormatTag:ULONG;
  1445.     ulSamplesPerSec:ULONG;
  1446.     ulChannels:ULONG;
  1447.     ulFormatMode:ULONG;
  1448.   end;
  1449.  
  1450.   MCI_WAVE_SET_PARMS=record
  1451.     hwndCallback:HWND;
  1452.     ulTimeFormat:ULONG;
  1453.     ulSpeedFormat:ULONG;
  1454.     ulAudio:ULONG;
  1455.     ulLevel:ULONG;
  1456.     ulOver:ULONG;
  1457.     ulItem:ULONG;
  1458.     ulValue:ULONG;
  1459.     usInput:USHORT;
  1460.     usReserved0:USHORT;
  1461.     usOutput:USHORT;
  1462.     usReserved1:USHORT;
  1463.     usFormatTag:USHORT;
  1464.     usReserved2:USHORT;
  1465.     usChannels:USHORT;
  1466.     usReserved3:USHORT;
  1467.     ulSamplesPerSec:ULONG;
  1468.     ulAvgBytesPerSec:ULONG;
  1469.     usBlockAlign:USHORT;
  1470.     usReserved4:USHORT;
  1471.     usBitsPerSample:USHORT;
  1472.     usReserved5:USHORT;
  1473.   end;
  1474.  
  1475.   PCONNECT=^CONNECT;
  1476.  
  1477.   MCI_AMP_SET_PARMS=MCI_SET_PARMS;
  1478.   MCI_DGV_OPEN_PARMS=MCI_VID_OPEN_PARMS;
  1479.   MCI_DGV_RECT_PARMS=MCI_VID_RECT_PARMS;
  1480.   MCI_DGV_SET_PARMS=MCI_SET_PARMS;
  1481.   MCI_DGV_WINDOW_PARMS=MCI_VID_WINDOW_PARMS;
  1482.   MCI_OVLY_OPEN_PARMS=MCI_VID_OPEN_PARMS;
  1483.   MCI_OVLY_RECT_PARMS=MCI_VID_RECT_PARMS;
  1484.   MCI_OVLY_SET_PARMS=MCI_SET_PARMS;
  1485.   MCI_OVLY_WINDOW_PARMS=MCI_VID_WINDOW_PARMS;
  1486.  
  1487.   PMCI_AMP_OPEN_PARMS=^MCI_AMP_OPEN_PARMS;
  1488.   PMCI_AMP_SET_PARMS=^MCI_AMP_SET_PARMS;
  1489.   PMCI_CAPTURE_PARMS=^MCI_CAPTURE_PARMS;
  1490.   PMCI_CDXA_SET_PARMS=^MCI_CDXA_SET_PARMS;
  1491.   PMCI_CDXA_STATUS_PARMS=^MCI_CDXA_STATUS_PARMS;
  1492.   PMCI_CONNECTION_PARMS=^MCI_CONNECTION_PARMS;
  1493.   PMCI_CONNECTORINFO_PARMS=^MCI_CONNECTORINFO_PARMS;
  1494.   PMCI_CONNECTOR_PARMS=^MCI_CONNECTOR_PARMS;
  1495.   PMCI_CUEPOINT_PARMS=^MCI_CUEPOINT_PARMS;
  1496.   PMCI_DEFAULT_CONNECTION_PARMS=^MCI_DEFAULT_CONNECTION_PARMS;
  1497.   PMCI_DEVICESETTINGS_PARMS=^MCI_DEVICESETTINGS_PARMS;
  1498.   PMCI_DGV_OPEN_PARMS=^MCI_DGV_OPEN_PARMS;
  1499.   PMCI_DGV_PLAY_PARMS=^MCI_DGV_PLAY_PARMS;
  1500.   PMCI_DGV_RECT_PARMS=^MCI_DGV_RECT_PARMS;
  1501.   PMCI_DGV_SET_PARMS=^MCI_DGV_SET_PARMS;
  1502.   PMCI_DGV_WINDOW_PARMS=^MCI_DGV_WINDOW_PARMS;
  1503.   PMCI_EDIT_PARMS=^MCI_EDIT_PARMS;
  1504.   PMCI_ESCAPE_PARMS=^MCI_ESCAPE_PARMS;
  1505.   PMCI_GENERIC_PARMS=^MCI_GENERIC_PARMS;
  1506.   PMCI_GETDEVCAPS_PARMS=^MCI_GETDEVCAPS_PARMS;
  1507.   PMCI_GROUP_PARMS=^MCI_GROUP_PARMS;
  1508.   PMCI_IMAGE_PARMS=^MCI_IMAGE_PARMS;
  1509.   PMCI_INFO_PARMS=^MCI_INFO_PARMS;
  1510.   PMCI_LOAD_PARMS=^MCI_LOAD_PARMS;
  1511.   PMCI_MASTERAUDIO_PARMS=^MCI_MASTERAUDIO_PARMS;
  1512.   PMCI_OPEN_PARMS=^MCI_OPEN_PARMS;
  1513.   PMCI_OVLY_OPEN_PARMS=^MCI_OVLY_OPEN_PARMS;
  1514.   PMCI_OVLY_RECT_PARMS=^MCI_OVLY_RECT_PARMS;
  1515.   PMCI_OVLY_SET_PARMS=^MCI_OVLY_SET_PARMS;
  1516.   PMCI_OVLY_WINDOW_PARMS=^MCI_OVLY_WINDOW_PARMS;
  1517.   PMCI_PALETTE_PARMS=^MCI_PALETTE_PARMS;
  1518.   PMCI_PLAY_PARMS=^MCI_PLAY_PARMS;
  1519.   PMCI_POSITION_PARMS=^MCI_POSITION_PARMS;
  1520.   PMCI_RECORD_PARMS=^MCI_RECORD_PARMS;
  1521.   PMCI_RESTORE_PARMS=^MCI_RESTORE_PARMS;
  1522.   PMCI_SAVE_PARMS=^MCI_SAVE_PARMS;
  1523.   PMCI_SEEK_PARMS=^MCI_SEEK_PARMS;
  1524.   PMCI_SET_PARMS=^MCI_SET_PARMS;
  1525.   PMCI_SEQ_SET_PARMS=^MCI_SEQ_SET_PARMS;
  1526.   PMCI_STATUS_PARMS=^MCI_STATUS_PARMS;
  1527.   PMCI_STEP_PARMS=^MCI_STEP_PARMS;
  1528.   PMCI_SYNC_OFFSET_PARMS=^MCI_SYNC_OFFSET_PARMS;
  1529.   PMCI_SYSINFO_ALIAS=^MCI_SYSINFO_ALIAS;
  1530.   PMCI_SYSINFO_CONPARAMS=^MCI_SYSINFO_CONPARAMS;
  1531.   PMCI_SYSINFO_DEFAULTDEVICE=^MCI_SYSINFO_DEFAULTDEVICE;
  1532.   PMCI_SYSINFO_DEVPARAMS=^MCI_SYSINFO_DEVPARAMS;
  1533.   PMCI_SYSINFO_EXTENSION=^MCI_SYSINFO_EXTENSION;
  1534.   PMCI_SYSINFO_LOGDEVICE=^MCI_SYSINFO_LOGDEVICE;
  1535.   PMCI_SYSINFO_PARMS=^MCI_SYSINFO_PARMS;
  1536.   PMCI_SYSINFO_QUERY_NAME=^MCI_SYSINFO_QUERY_NAME;
  1537.   PMCI_SYSINFO_TYPES=^MCI_SYSINFO_TYPES;
  1538.   PMCI_TOC_PARMS=^MCI_TOC_PARMS;
  1539.   PMCI_VD_PLAY_PARMS=^MCI_VD_PLAY_PARMS;
  1540.   PMCI_VD_SET_PARMS=^MCI_VD_SET_PARMS;
  1541.   PMCI_WAVE_GETDEVCAPS_PARMS=^MCI_WAVE_GETDEVCAPS_PARMS;
  1542.   PMCI_WAVE_SET_PARMS=^MCI_WAVE_SET_PARMS;
  1543.  
  1544.  
  1545. (**********************)
  1546. (* BYTE--DWORD macros *)
  1547. (**********************)
  1548. {
  1549. #define ULONG_LWLB(ul)  (*(BYTE *)((ULONG *)(&ul)))
  1550. #define ULONG_LWHB(ul)  (*((BYTE *)((ULONG *)(&ul))+1))
  1551. #define ULONG_HWLB(ul)  (*((BYTE *)((ULONG *)(&ul))+2))
  1552. #define ULONG_HWHB(ul)  (*((BYTE *)((ULONG *)(&ul))+3))
  1553. #define ULONG_LOWD(ul)  (*(USHORT *)((ULONG *)(&ul)))
  1554. #define ULONG_HIWD(ul)  (*((USHORT *)((ULONG *)(&ul))+1))
  1555.  
  1556. }
  1557. (**********************************)
  1558. (* time conversion macros (yuck!) *)
  1559. (**********************************)
  1560. {
  1561. #define FPS24TOMM(value)  ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  1562.                            (((value) & 0x0000FF00) / 0x0000100 * 60 * 3000) + \
  1563.                            (((value) & 0x00FF0000) / 0x0010000 * 3000) + \
  1564.                            (((value) & 0xFF000000) / 0x1000000 * 3000/24))
  1565.  
  1566. #define FPS24FROMMM(value)  ((((value)+63) >= 0x100*60*60*3000) ? 0L : \
  1567.                          (((((((value)+63) % 3000)/(3000/24)) << 24) & 0xFF000000) | \
  1568.                           ((((((value)+63) / 3000) % 60) << 16) & 0x00FF0000)      | \
  1569.                          (((((((value)+63) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  1570.                           ((((((value)+63) / 3000) / 60) / 60)  & 0x000000FF)))
  1571.  
  1572. #define FPS25TOMM(value)  ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  1573.                            (((value) & 0x0000FF00) / 0x0000100 * 60 * 3000) + \
  1574.                            (((value) & 0x00FF0000) / 0x0010000 * 3000) + \
  1575.                            (((value) & 0xFF000000) / 0x1000000 * 3000/25))
  1576.  
  1577. #define FPS25FROMMM(value)  ((((value)+60) >= 0x100*60*60*3000) ? 0L : \
  1578.                          (((((((value)+60) % 3000)/(3000/25)) << 24) & 0xFF000000) | \
  1579.                           ((((((value)+60) / 3000) % 60) << 16) & 0x00FF0000)      | \
  1580.                          (((((((value)+60) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  1581.                           ((((((value)+60) / 3000) / 60) / 60)  & 0x000000FF)))
  1582.  
  1583. #define FPS30TOMM(value)  ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  1584.                            (((value) & 0x0000FF00) / 0x0000100 * 60 * 3000) + \
  1585.                            (((value) & 0x00FF0000) / 0x0010000 * 3000) + \
  1586.                            (((value) & 0xFF000000) / 0x1000000 * 3000/30))
  1587.  
  1588. #define FPS30FROMMM(value)  ((((value)+50) >= 0x100*60*60*3000) ? 0L : \
  1589.                          (((((((value)+50) % 3000)/(3000/30)) << 24) & 0xFF000000) | \
  1590.                           ((((((value)+50) / 3000) % 60) << 16) & 0x00FF0000)      | \
  1591.                          (((((((value)+50) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  1592.                           ((((((value)+50) / 3000) / 60) / 60)  & 0x000000FF)))
  1593.  
  1594. #define HMSTOMM(value)  ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  1595.                          (((value) & 0x0000FF00) / 0x00100 * 60 * 3000) + \
  1596.                          (((value) & 0x00FF0000) / 0x10000 * 3000))
  1597.  
  1598. #define HMSFROMMM(value)  ((((value)+50) >= 0x100*60*60*3000) ? 0L : \
  1599.                        (((((((value)+50) / 3000) % 60) << 16) & 0x00FF0000)      | \
  1600.                        (((((((value)+50) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  1601.                         ((((((value)+50) / 3000) / 60) / 60)  & 0x000000FF)))
  1602.  
  1603. #define MSECTOMM(value)  (((value) > (0xFFFFFFFF /3)) ? 0L : \
  1604.                           ((value) * 3))
  1605.  
  1606. #define MSECFROMMM(value)  (((value)+1) / 3)
  1607.  
  1608. #define REDBOOKTOMM(value)  ((((value) & 0x000000FF) * 60 * 3000) + \
  1609.                              (((value) & 0x0000FF00) / 0x00100 * 3000) + \
  1610.                              (((value) & 0x00FF0000) / 0x10000 * 3000/75))
  1611.  
  1612. #define REDBOOKFROMMM(value)  ((((value)+20) >= 0x100*60*3000) ? 0L : \
  1613.                                ((((value)+20) / (60*3000)) + \
  1614.                                (((value)+20) % (60*3000) / 3000 << 8) + \
  1615.                                (((value)+20) / (3000/75) % 75 << 16)))
  1616.  
  1617. #define MSF_FRAME(time)    (*((BYTE *)(&(time))+2))
  1618. #define MSF_MINUTE(time)   (*(BYTE *)(&(time)))
  1619. #define MSF_SECOND(time)   (*((BYTE *)(&(time))+1))
  1620.  
  1621. #define TMSF_FRAME(time)   (*((BYTE *)(&(time))+3))
  1622. #define TMSF_MINUTE(time)  (*((BYTE *)(&(time))+1))
  1623. #define TMSF_SECOND(time)  (*((BYTE *)(&(time))+2))
  1624. #define TMSF_TRACK(time)   (*(BYTE *)(&(time)))
  1625.  
  1626. }
  1627. (*************)
  1628. (* MCI API's *)
  1629. (*************)
  1630.  
  1631. Function mciSendCommand(usDeviceID:USHORT; usMessage:USHORT; ulParam1:ULONG;
  1632.                var Param2; usUserParm:USHORT):Ulong;
  1633.  
  1634. Function mciSendString(pszCommandBuf:PSZ; pszReturnString:PSZ;
  1635.               wReturnLength:USHORT; hwndCallBack:HWND;
  1636.               usUserParm:USHORT):Ulong;
  1637.  
  1638. Function mciGetErrorString(ulError:ULONG; pszBuffer:PSZ; usLength:USHORT):Ulong;
  1639.  
  1640. Function mciMakeGroup(var usDeviceGroupID:USHORT; usDeviceCount:USHORT;
  1641.              var ausDeviceList:USHORT; ulFlags:ULONG; ulMMTime:ULONG):Ulong;
  1642.  
  1643. Function mciDeleteGroup(usGroupID:USHORT):Ulong;
  1644.  
  1645. Function mciSetSysValue(iSysValue:USHORT; var Value):BOOL;
  1646.  
  1647. Function mciQuerySysValue(iSysValue:USHORT;var Value):BOOL;
  1648.  
  1649. Function mciGetDeviceID(pszName:PSZ):ULONG;
  1650.  
  1651.  
  1652. (*Some needed Snippets of MMIOOS2*)
  1653.  
  1654. {$AlignRec+}
  1655. const
  1656.   FOURCC_RIFF   =ord('R')+(ord('I') shl 8)+(ord('F') shl 16)+(ord('F' ) shl 24);
  1657.   FOURCC_LIST   =ord('L')+(ord('I') shl 8)+(ord('S') shl 16)+(ord('T' ) shl 24);
  1658.   FOURCC_MEM    =ord('M')+(ord('E') shl 8)+(ord('M') shl 16)+(ord(' ' ) shl 24);
  1659.   FOURCC_DOS    =ord('D')+(ord('O') shl 8)+(ord('S') shl 16)+(ord(' ' ) shl 24);
  1660.   FOURCC_BND    =ord('B')+(ord('N') shl 8)+(ord('D') shl 16)+(ord(' ' ) shl 24);
  1661.   FOURCC_FREE   =ord('F')+(ord('R') shl 8)+(ord('E') shl 16)+(ord('E' ) shl 24);
  1662.   FOURCC_DEL    =ord('D')+(ord('E') shl 8)+(ord('L') shl 16)+(ord(' ' ) shl 24);
  1663.   FOURCC_CTOC   =ord('C')+(ord('T') shl 8)+(ord('O') shl 16)+(ord('C' ) shl 24);
  1664.   FOURCC_CGRP   =ord('C')+(ord('G') shl 8)+(ord('R') shl 16)+(ord('P' ) shl 24);
  1665.   FOURCC_CF     =ord('C')+(ord('F') shl 8)+(ord(' ') shl 16)+(ord(' ' ) shl 24);
  1666.  
  1667.   MMIO_SUCCESS=0;
  1668.   MMIO_WARNING=2;
  1669.   MMIO_ERROR=-1;
  1670.   MMIOERR_UNSUPPORTED_MESSAGE=-2;
  1671.  
  1672.   MMIO_CF_SUCCESS=0;
  1673.   MMIO_CF_FAILURE=1;
  1674.                                         (* Open *)
  1675.   MMIO_CREATE=$00000001;
  1676.   MMIO_CTOCFIRST=$00000002;
  1677.   MMIO_READ=$00000004;
  1678.   MMIO_WRITE=$00000008;
  1679.   MMIO_READWRITE=$00000010;
  1680.   MMIO_COMPAT=$00000020;
  1681.   MMIO_EXCLUSIVE=$00000040;
  1682.   MMIO_DENYWRITE=$00000080;
  1683.   MMIO_DENYREAD=$00000100;
  1684.   MMIO_DENYNONE=$00000200;
  1685.   MMIO_ALLOCBUF=$00000400;
  1686.   MMIO_DELETE=$00000800;
  1687.                                          (* Open/Close/Save *)
  1688.   MMIO_USE_TEMP=$00001000;
  1689.                                          (* Insert *)
  1690.   MMIO_INSERTON=$00000001;
  1691.   MMIO_INSERTOFF=$00000002;
  1692.                                          (* Open *)
  1693.   MMIO_RWMODE=$00001000;
  1694.   MMIO_SHAREMODE=$00002000;
  1695.                                          (* Write *)
  1696.   MMIO_DIRTY=$00004000;
  1697.                                          (* Open *)
  1698.   MMIO_VERTBAR=$00008000;
  1699.   MMIO_BUFSHARED=$00010000;
  1700.   MMIO_APPEND=$00020000;
  1701.   MMIO_NOIDENTIFY=$00040000;
  1702.  
  1703.  
  1704. type
  1705. (* HMMIO=ULONG;*)
  1706.  FOURCC=ULONG;
  1707.  
  1708.  MMIOPROC=Function (var mmioinfo;
  1709.                     usMsg:SmallWord;
  1710.                     lParam1:ULONG;
  1711.                     lParam2:ULONG):ULONG;
  1712.  PMMIOPROC=MMIOPROC;
  1713.  
  1714.   MMIOINFO=record
  1715.     ulFlags:ULONG;
  1716.     fccIOProc:FOURCC;
  1717.     pIOProc:PMMIOPROC;
  1718.     ulErrorRet:ULONG;
  1719.     cchBuffer:LONG;
  1720.     pchBuffer:PCHAR;
  1721.     pchNext:PCHAR;
  1722.     pchEndRead:PCHAR;
  1723.     pchEndWrite:PCHAR;
  1724.     lBufOffset:LONG;
  1725.     lDiskOffset:LONG;
  1726.     aulInfo:array [0..3] of ULONG;
  1727.     lLogicalFilePos:LONG;
  1728.     ulTranslate:ULONG;
  1729.     fccChildIOProc:FOURCC;
  1730.     pExtraInfoStruct:PVOID;
  1731.     hmmio:HMMIO;
  1732.   end;
  1733.  
  1734.   PMMIOINFO=^MMIOINFO;
  1735.  
  1736.   WAVE_HEADER=record
  1737.     usFormatTag:USHORT;
  1738.     usChannels:USHORT;
  1739.     ulSamplesPerSec:ULONG;
  1740.     ulAvgBytesPerSec:ULONG;
  1741.     usBlockAlign:USHORT;
  1742.     usBitsPerSample:USHORT;
  1743.   end;
  1744.  
  1745.  
  1746.   XWAV_HEADERINFO=record
  1747.     ulAudioLengthInMS:ULONG;
  1748.     ulAudioLengthInBytes:ULONG;
  1749.     ulReserved:ULONG;
  1750.   end;
  1751.  
  1752.  
  1753.   MMXWAV_HEADER=record
  1754.     WAVEHeader:WAVE_HEADER;
  1755.     XWAVHeaderInfo:XWAV_HEADERINFO;
  1756.   end;
  1757.  
  1758.  
  1759.   MMAUDIOHEADER=record
  1760.     ulHeaderLength:ULONG;
  1761.     ulContentType:ULONG;
  1762.     ulMediaType:ULONG;
  1763.     mmXWAVHeader:MMXWAV_HEADER;
  1764.   end;
  1765.  
  1766. {$Cdecl+,AlignRec+,OrgName+}
  1767.  
  1768.  
  1769. Function mmioOpen( pszFileName:PSZ;
  1770.            pmmioinfo:PMMIOINFO;
  1771.            ulOpenFlags:ULONG):HMMIO;
  1772.  
  1773. Function mmioRead( hmmio:HMMIO;
  1774.           var chBuffer:CHAR;
  1775.           cBytes:LONG):ULONG;
  1776.  
  1777. Function mmioGetHeader( hmmio:HMMIO;
  1778.                 var Header;
  1779.                 lHeaderLength:LONG;
  1780.                 var lBytesRead:LONG;
  1781.                 ulReserved:ULONG;
  1782.                 ulFlags:ULONG):ULONG;
  1783.  
  1784.  
  1785. Function mmioClose( hmmio:HMMIO;
  1786.                          usFlags:USHORT):SmallWord;
  1787.  
  1788.  
  1789. implementation
  1790.  
  1791. Function mciSendCommand;external;
  1792. Function mciSendString;external;
  1793. Function mciGetErrorString;external;
  1794. Function mciMakeGroup;external;
  1795. Function mciDeleteGroup;external;
  1796. Function mciSetSysValue;external;
  1797. Function mciQuerySysValue;external;
  1798. Function mciGetDeviceID;external;
  1799.  
  1800. Function mmioOpen;external;
  1801. Function mmioRead;external;
  1802. Function mmioGetHeader;external;
  1803. Function mmioClose;external;
  1804. (*Function mmioGetLastError;external;*)
  1805.  
  1806.  
  1807. end.
  1808.  
  1809.  
  1810.  
  1811.