mci.pas 118 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523
  1. {
  2. Copyright (c) 1991, 1992, 1993 International Business Machines Corporation
  3. Copyright (c) 2002 by Andry Svirgunov ([email protected])
  4. Copyright (c) 2002-2003 by Yuri Prokushev ([email protected])
  5. This is Media Control Interface of MMPM/2
  6. This program is free software; you can redistribute it and/or modify it
  7. under the terms of the GNU Library General Public License (LGPL) as
  8. published by the Free Software Foundation; either version 2 of the
  9. License, or (at your option) any later version. This program is
  10. distributed in the hope that it will be useful, but WITHOUT ANY
  11. WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12. FITNESS FOR A PARTICULAR PURPOSE.
  13. See the GNU Library General Public License for more details. You should
  14. have received a copy of the GNU Library General Public License along
  15. with this program; if not, write to the Free Software Foundation, Inc.,
  16. 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  17. **********************************************************************}
  18. {
  19. @abstract(Media Control Interface of MMPM/2)
  20. @author(Andry Svirgunov ([email protected]))
  21. @author(Yuri Prokushev ([email protected]))
  22. @created(29 Nov 2002)
  23. @lastmod(05 Dec 2002)
  24. This is Media Control Interface of MMPM/2.
  25. Warning: This code is alfa. Future versions of this unit will propably
  26. not be compatible.
  27. }
  28. Unit mci;
  29. Interface
  30. Uses
  31. mmbase,
  32. os2def,
  33. pmgpi;
  34. Const
  35. MCI_TRUE = 1;
  36. MCI_FALSE = 0;
  37. // MCI command message identifiers
  38. MCI_OPEN = 1;
  39. MCI_CLOSE = 2;
  40. MCI_ESCAPE = 3;
  41. MCI_PLAY = 4;
  42. MCI_SEEK = 5;
  43. MCI_STOP = 6;
  44. MCI_PAUSE = 7;
  45. MCI_INFO = 8;
  46. MCI_GETDEVCAPS = 9;
  47. MCI_STATUS = 10;
  48. MCI_SPIN = 11;
  49. MCI_SET = 12;
  50. MCI_STEP = 13;
  51. MCI_RECORD = 14;
  52. MCI_SYSINFO = 15;
  53. MCI_SAVE = 16;
  54. MCI_CUE = 17;
  55. MCI_UPDATE = 18;
  56. MCI_SET_CUEPOINT = 19;
  57. MCI_SET_POSITION_ADVISE = 20;
  58. MCI_SET_SYNC_OFFSET = 21;
  59. MCI_LOAD = 22;
  60. MCI_ACQUIREDEVICE = 23;
  61. MCI_RELEASEDEVICE = 24;
  62. MCI_MASTERAUDIO = 25;
  63. MCI_GETTOC = 26;
  64. MCI_DEVICESETTINGS = 27;
  65. MCI_CONNECTOR = 28;
  66. MCI_RESUME = 29;
  67. MCI_CONNECTORINFO = 31;
  68. MCI_DEFAULT_CONNECTION = 32;
  69. MCI_CONNECTION = 33;
  70. MCI_GROUP = 34;
  71. MCI_NETWORD_DEFAULT_CONNECTION= 35;
  72. // MCI command message identifiers reserved for Digital Video and Video Overlay
  73. MCI_CAPTURE = 40;
  74. MCI_FREEZE = 41;
  75. MCI_GETIMAGEBUFFER = 42;
  76. MCI_GETIMAGEPALETTE = 43;
  77. MCI_PUT = 44;
  78. MCI_REALIZE = 45;
  79. MCI_REWIND = 46;
  80. MCI_RESTORE = 47;
  81. MCI_SETIMAGEBUFFER = 48;
  82. MCI_SETIMAGEPALETTE = 49;
  83. MCI_UNFREEZE = 50;
  84. MCI_WHERE = 51;
  85. MCI_WINDOW = 52;
  86. MCI_DELETE = 53;
  87. MCI_CUT = 54;
  88. MCI_PASTE = 55;
  89. MCI_COPY = 56;
  90. MCI_REDO = 57;
  91. MCI_UNDO = 58;
  92. MCI_MIXNOTIFY = 59;
  93. MCI_SETTUNER = 60;
  94. MCI_FILTER = 61;
  95. MCI_BUFFER = 62;
  96. MCI_MIXSETUP = 63;
  97. MCI_MAX_COMMAND = 64;
  98. Type
  99. RECT = LongInt;
  100. HDCT = LongInt;
  101. Const
  102. // this and all subsequent message ID's are reserved for the user
  103. MCI_USER_MESSAGES = 2000;
  104. // Special Device ID for "all"
  105. MCI_ALL_DEVICE_ID = $FFFF;
  106. // MCI implementation limits
  107. MAX_DEVICE_NAME = 20;
  108. MAX_ALIAS_NAME = 20;
  109. MAX_PRODINFO = 40;
  110. MAX_EXTENSION_NAME = 4;
  111. MAX_DEV_PARAMS = 128;
  112. MAX_VERSION_NUMBER = 6;
  113. MAX_PDD_NAME = 9;
  114. MAX_DLL_NAME = 260;
  115. MAX_CLASSES = 10;
  116. MAX_CONNECTORS = 10;
  117. MAX_EXTENSIONS = 25;
  118. MAX_TYPEBUFFER = 256;
  119. // MCI Device Type Constants
  120. MCI_DEVTYPE_VIDEOTAPE = 1;
  121. MCI_DEVTYPE_VIDEODISC = 2;
  122. MCI_DEVTYPE_CD_AUDIO = 3;
  123. MCI_DEVTYPE_DAT = 4;
  124. MCI_DEVTYPE_AUDIO_TAPE = 5;
  125. MCI_DEVTYPE_OTHER = 6;
  126. MCI_DEVTYPE_WAVEFORM_AUDIO = 7;
  127. MCI_DEVTYPE_SEQUENCER = 8;
  128. MCI_DEVTYPE_AUDIO_AMPMIX = 9;
  129. MCI_DEVTYPE_OVERLAY = 10;
  130. MCI_DEVTYPE_ANIMATION = 11;
  131. MCI_DEVTYPE_DIGITAL_VIDEO = 12;
  132. MCI_DEVTYPE_SPEAKER = 13;
  133. MCI_DEVTYPE_HEADPHONE = 14;
  134. MCI_DEVTYPE_MICROPHONE = 15;
  135. MCI_DEVTYPE_MONITOR = 16;
  136. MCI_DEVTYPE_CDXA = 17;
  137. MCI_DEVTYPE_FILTER = 18;
  138. MCI_DEVTYPE_TTS = 19;
  139. // MCI Device Type Names
  140. MCI_DEVTYPE_VIDEOTAPE_NAME = 'Videotape';
  141. MCI_DEVTYPE_VIDEODISC_NAME = 'Videodisc';
  142. MCI_DEVTYPE_CD_AUDIO_NAME = 'CDaudio';
  143. MCI_DEVTYPE_DAT_NAME = 'DAT';
  144. MCI_DEVTYPE_AUDIO_TAPE_NAME = 'Audiotape';
  145. MCI_DEVTYPE_OTHER_NAME = 'Other';
  146. MCI_DEVTYPE_WAVEFORM_AUDIO_NAME = 'Waveaudio';
  147. MCI_DEVTYPE_SEQUENCER_NAME = 'Sequencer';
  148. MCI_DEVTYPE_AUDIO_AMPMIX_NAME = 'Ampmix';
  149. MCI_DEVTYPE_OVERLAY_NAME = 'Overlay';
  150. MCI_DEVTYPE_ANIMATION_NAME = 'Animation';
  151. MCI_DEVTYPE_DIGITAL_VIDEO_NAME= 'Digitalvideo';
  152. MCI_DEVTYPE_SPEAKER_NAME = 'Speaker';
  153. MCI_DEVTYPE_HEADPHONE_NAME = 'Headphone';
  154. MCI_DEVTYPE_MICROPHONE_NAME = 'Microphone';
  155. MCI_DEVTYPE_MONITOR_NAME = 'Monitor';
  156. MCI_DEVTYPE_CDXA_NAME = 'CDXA';
  157. MCI_DEVTYPE_FILTER_NAME = 'Filter';
  158. MCI_DEVTYPE_TTS_NAME = 'Texttospeech';
  159. MCI_MAX_SYSTEM_DEVICE_NAMES = 19;
  160. // Getdevcaps, set, and status item base values
  161. MCI_AMP_ITEM_BASE = $1000;
  162. MCI_CD_ITEM_BASE = $2000;
  163. MCI_CDXA_ITEM_BASE = $3000;
  164. MCI_VD_ITEM_BASE = $4000;
  165. MCI_SEQ_ITEM_BASE = $5000;
  166. MCI_WAVE_ITEM_BASE = $6000;
  167. MCI_VID_ITEM_BASE = $7000;
  168. MCI_DGV_ITEM_BASE = $8000;
  169. MCI_OVLY_ITEM_BASE = $9000;
  170. // Flags for mciDriverNotify
  171. MCI_NOTIFY_SUCCESSFUL = $0000;
  172. MCI_NOTIFY_SUPERSEDED = $0001;
  173. MCI_NOTIFY_ABORTED = $0002;
  174. MCI_NOTIFY_ERROR = $0003;
  175. // mciDriverNotify Message Types
  176. MM_MCINOTIFY = $0500;
  177. MM_MCIPASSDEVICE = $0501;
  178. MM_MCIPOSITIONCHANGE = $0502;
  179. MM_MCICUEPOINT = $0503;
  180. MM_MCIPLAYLISTMESSAGE = $0504;
  181. MM_MCIEVENT = $0505;
  182. MM_MCISYNCH = $0506;
  183. MCI_LOSING_USE = $00000001;
  184. MCI_GAINING_USE = $00000002;
  185. // Common message flags 0x000000XX are reserved for common flags */
  186. MCI_NOTIFY = $00000001;
  187. MCI_WAIT = $00000002;
  188. MCI_FROM = $00000004;
  189. MCI_TO = $00000008;
  190. MCI_MILLISECONDS = $00000010;
  191. MCI_TRACK = $00000020;
  192. MCI_OVER = $00000040;
  193. MCI_TEST = $00000080;
  194. MCI_TO_BUFFER = $00000100;
  195. MCI_FROM_BUFFER = $00000200;
  196. MCI_CONVERT_FORMAT = $00000400;
  197. // Time formats
  198. MCI_FORMAT_MILLISECONDS = $00000001;
  199. MCI_FORMAT_mmTime = $00000002;
  200. MCI_FORMAT_MSF = $00000005;
  201. MCI_FORMAT_TMSF = $00000006;
  202. MCI_FORMAT_CHAPTERS = $00000007;
  203. MCI_FORMAT_FRAMES = $00000008;
  204. MCI_FORMAT_HMS = $00000009;
  205. MCI_FORMAT_TRACKS = $0000000A;
  206. MCI_FORMAT_BYTES = $0000000B;
  207. MCI_FORMAT_SAMPLES = $0000000C;
  208. MCI_FORMAT_HMSF = $0000000D;
  209. MCI_FORMAT_SET_SMPTE_24 = $0000000E;
  210. MCI_FORMAT_SET_SMPTE_25 = $0000000F;
  211. MCI_FORMAT_SET_SMPTE_30 = $00000010;
  212. MCI_FORMAT_SET_SMPTE_30DROP = $00000011;
  213. MCI_FORMAT_SET_SONGPTR = $00000012;
  214. MCI_FORMAT_uSec = $00000013;
  215. // Speed formats
  216. MCI_FORMAT_PERCENTAGE = $00000003;
  217. MCI_FORMAT_FPS = $00000004;
  218. // Time format conversions functions
  219. function mSecFromMM(Value: mmTime): LongInt;
  220. function mSecToMM(Value: Cardinal): mmTime;
  221. function RedBookToMM(Value: Cardinal): mmTime;
  222. function fps24ToMM(Value: Cardinal): mmTime;
  223. function fps25ToMM(Value: Cardinal): mmTime;
  224. function fps30ToMM(Value: Cardinal): mmTime;
  225. function HMSToMM(Value: Cardinal): mmTime;
  226. // The +20 is used for rounding purposes. It is derived by:
  227. // 1/2 * ((300 MMTIME/SEC / (75 FRAMES/SEC)) = 20 MMTIME/HALF-FRAME
  228. function RedBookFromMM(Value: mmTime): Cardinal;
  229. function FPS24FromMM(Value: mmTime): Cardinal;
  230. function FPS25FromMM(value: mmTime): Cardinal;
  231. function FPS30FromMM(value: mmTime): Cardinal;
  232. function HMSFromMM(value: mmTime): Cardinal;
  233. function tmsf_track(time: mmTime): Byte;
  234. function tmsf_minute(time: mmTime): Byte;
  235. function tmsf_second(time: mmTime): Byte;
  236. function tmsf_frame(time: mmTime): Byte;
  237. function msf_minute(time: mmTime): Byte;
  238. function msf_second(time: mmTime): Byte;
  239. function msf_frame(time: mmTime): Byte;
  240. // BYTE ACCESS WITH A DWORD MACROS
  241. function uLong_lwlb(var ul): Byte; // Low word low byte
  242. function uLong_lwhb(var ul): Byte; // Low word high byte
  243. function uLong_hwlb(var ul): Byte; // High word low byte
  244. function uLong_hwhb(var ul): Byte; // High word high byte
  245. function uLong_lowd(var ul): Word; // Low word
  246. function uLong_hiwd(var ul): Word; // High word
  247. // parameters for default command messages with empty parameter lists
  248. type
  249. mci_Generic_Parms = record
  250. hwndCallback : hwnd;
  251. end;
  252. pmci_Generic_Parms = ^mci_Generic_Parms;
  253. // flags for the MCI_ACQUIREDEVICE message
  254. // 0x00000X00 are reserved for MCI_ACQUIREDEVICE flags
  255. Const
  256. MCI_EXCLUSIVE = $00000100;
  257. MCI_EXCLUSIVE_INSTANCE = $00000200;
  258. MCI_ACQUIRE_QUEUE = $00000400;
  259. // flags for the MCI_CAPTURE message */
  260. // 0x0000XX00 are reserved for MCI_CAPTURE flags */
  261. // MCI_CONVERT is used by MCI_GETIMAGEBUFFER, MCI_SETIMAGEBUFFER */
  262. // MCI_CAPTURE, and MCI_RESTORE */
  263. MCI_CAPTURE_RECT = $00000100;
  264. MCI_CONVERT = $00001000;
  265. type
  266. // parameter structure for the MCI_CAPTURE message */
  267. mci_Capture_Parms = record
  268. hwndCallback : hwnd;
  269. Rect : RectL;
  270. end;
  271. pmci_Capture_Parms = ^mci_Capture_Parms;
  272. // flags for MCI_CONNECTOR and MCI_CONNECTION messages */
  273. Const
  274. MCI_ENABLE_CONNECTOR = $00000100;
  275. MCI_DISABLE_CONNECTOR = $00000200;
  276. MCI_QUERY_CONNECTOR_STATUS = $00000400;
  277. MCI_CONNECTOR_TYPE = $00000800;
  278. MCI_CONNECTOR_INDEX = $00001000;
  279. MCI_TO_CONNECTOR_INDEX = $00002000;
  280. MCI_TO_CONNECTOR_TYPE = $00004000;
  281. MCI_QUERY_CONNECTION = $00008000;
  282. MCI_MAKE_CONNECTION = $00010000;
  283. MCI_BREAK_CONNECTION = $00020000;
  284. MCI_ENUMERATE_CONNECTORS = $00040000;
  285. MCI_QUERY_CONNECTOR_TYPE = $00080000;
  286. MCI_QUERY_VALID_CONNECTION = $00100000;
  287. MCI_CONNECTOR_ALIAS = $00200000;
  288. MCI_EXTERNAL_CONNECTION = $00400000;
  289. // Connector types
  290. MCI_MIDI_STREAM_CONNECTOR = $00000001;
  291. MCI_CD_STREAM_CONNECTOR = $00000002;
  292. MCI_WAVE_STREAM_CONNECTOR = $00000003;
  293. MCI_AMP_STREAM_CONNECTOR = $00000004;
  294. MCI_XA_STREAM_CONNECTOR = $00000005;
  295. MCI_HEADPHONES_CONNECTOR = $00000006;
  296. MCI_SPEAKERS_CONNECTOR = $00000007;
  297. MCI_MICROPHONE_CONNECTOR = $00000008;
  298. MCI_LINE_IN_CONNECTOR = $00000009;
  299. MCI_LINE_OUT_CONNECTOR = $0000000a;
  300. MCI_VIDEO_IN_CONNECTOR = $0000000b;
  301. MCI_VIDEO_OUT_CONNECTOR = $0000000c;
  302. MCI_PHONE_SET_CONNECTOR = $0000000d;
  303. MCI_PHONE_LINE_CONNECTOR = $0000000e;
  304. MCI_AUDIO_IN_CONNECTOR = $0000000f;
  305. MCI_AUDIO_OUT_CONNECTOR = $00000010;
  306. MCI_UNIVERSAL_CONNECTOR = $00000011;
  307. MCI_INTERNAL_AUDIO_CONNECTOR = $00000012;
  308. MCI_MIDI_IN_CONNECTOR = $00000013;
  309. MCI_MIDI_OUT_CONNECTOR = $00000014;
  310. MCI_NULL_CONNECTOR = $00000015;
  311. Type
  312. // parameter structure for the MCI_CONNECTION message
  313. mci_Connection_Parms = record
  314. hwndCallback : hwnd; // PM window handle for MCI notify message
  315. ulConnectorType : LongInt; // Connector type
  316. ulConnectorIndex : LongInt; // Connector index
  317. pszAlias : pChar; // Connection device alias
  318. usToDeviceID : Integer; // Connected to device ID
  319. usReserved0 : Integer; // Reserved field
  320. ulReserved1 : LongInt; // Reserved field
  321. ulReserved2 : LongInt; // Reserved field
  322. end;
  323. pmci_Connection_Parms = ^mci_Connection_Parms;
  324. //********************************************************************/
  325. // parameter structure for the MCI_CONNECTOR message */
  326. //********************************************************************/
  327. mci_Connector_Parms = record
  328. hwndCallback : hwnd; // PM window handle for MCI notify message
  329. ulReturn : LongInt; // Return information
  330. ulConnectorType : LongInt; // If specified, ulConnectorIndex is relative
  331. // to the specified connector type
  332. ulConnectorIndex : LongInt; // Connector number
  333. end;
  334. pmci_Connector_Parms = ^mci_Connector_Parms;
  335. //********************************************************************/
  336. // Flags for use with ulParam1 */
  337. //********************************************************************/
  338. CONST
  339. MCI_MIXSETUP_INIT =$00010000;
  340. MCI_MIXSETUP_DEINIT =$00020000;
  341. MCI_MIXSETUP_QUERYMODE =$00040000;
  342. //********************************************************************/
  343. // parameter structure for the MCI_BUFFER message */
  344. //********************************************************************/
  345. Type
  346. mci_mix_buffer = record
  347. ulStructLength:LongInt; // Length of the structure */
  348. pBuffer:Pointer; // Pointer to a buffer */
  349. ulBufferLength:LongInt; // Length of the buffer */
  350. ulFlags:LongInt; // Flags */
  351. ulUserParm:LongInt; // Caller parameter */
  352. ulTime:LongInt; // OUT--Current time in MS */
  353. ulReserved1:LongInt; // Unused. */
  354. ulReserved2:LongInt; // Unused. */
  355. end;
  356. PMCI_MIX_BUFFER=^mci_mix_buffer;
  357. //********************************************************************/
  358. // valid options for the ulFlags field of MCI_MIX_BUFFER */
  359. //********************************************************************/
  360. CONST
  361. MIX_BUFFER_EOS =$00000001;
  362. type
  363. MixerProc=Function(ulHandle:LongInt;pBuffer:PMCI_MIX_BUFFER;ulFlags:LongInt):Longint; cdecl;
  364. MixerEvent=Function(ulStatus:LongInt;pBuffer:PMCI_MIX_BUFFER;ulFlags:LongInt):LongInt; cdecl;
  365. //********************************************************************/
  366. // valid returns for the ulFlags param of the MIXEREVENT entry */
  367. //********************************************************************/
  368. CONST
  369. MIX_STREAM_ERROR =$00000080;
  370. MIX_READ_COMPLETE =$00000001;
  371. MIX_WRITE_COMPLETE =$00000002;
  372. //********************************************************************/
  373. // parameter structure for the MCI_MIXSETUP_PARMS message */
  374. //********************************************************************/
  375. TYPE MCI_MIXSETUP_PARMS = record
  376. hwndCallback:HWND; // PM window handle for MCI notify message */
  377. ulBitsPerSample:LongInt; // IN Number of Bits per Sample */
  378. ulFormatTag:LongInt; // IN Format Tag */
  379. ulSamplesPerSec:LongInt; // IN Sampling Rate */
  380. ulChannels:LongInt; // IN Number of channels */
  381. ulFormatMode:LongInt; // IN Either MCI_RECORD or MCI_PLAY */
  382. ulDeviceType:LongInt; // IN MCI_DEVTYPE (i.e. DEVTYPE_WAVEFORM etc.) */
  383. ulMixHandle:LongInt; // OUT--mixer returns handle for write/read */
  384. pmixWrite:MixerProc; // OUT-Mixer Write Routine entry point */
  385. pmixRead:MixerProc; // OUT-Mixer Read Routine entry point */
  386. pmixEvent:MixerEvent; // IN--Mixer Read Routine entry point */
  387. pExtendedInfo:Pointer; // Ptr to extended wave information */
  388. ulBufferSize:longInt; // OUT--suggested buffer size for current mode */
  389. ulNumBuffers:LongInt; // OUT--suggested # of buffers for current mode */
  390. end;
  391. pmci_mixsetup_parms=^mci_mixsetup_parms;
  392. //********************************************************************/
  393. // Flags for use with ulParam1 */
  394. //********************************************************************/
  395. CONST
  396. MCI_BUFFER_QUERY =$00010000;
  397. MCI_BUFFER_SET =$00020000;
  398. MCI_ALLOCATE_MEMORY =$00040000;
  399. MCI_DEALLOCATE_MEMORY =$00080000;
  400. //********************************************************************/
  401. // parameter structure for the MCI_BUFFER message */
  402. //********************************************************************/
  403. type mci_buffer_parms=record
  404. hwndCallback:hwnd; // PM window handle for MCI notify message */
  405. ulStructLength:longint; // Length of the MCI Buffer command */
  406. ulNumBuffers:longInt; // Number of buffers MCI driver should use */
  407. ulBufferSize:longint; // Size of buffers MCI driver should use */
  408. ulMinToStart:longint; // Min number of buffers to create a stream. */
  409. ulSrcStart:longint; // # of EMPTY buffers required to start Source*/
  410. ulTgtStart:longint; // # of FULL buffers required to start Target */
  411. pBufList:pointer; // Pointer to a list of buffers */
  412. end;
  413. pmci_buffer_parms=^mci_buffer_parms;
  414. //********************************************************************/
  415. // parameter structure for the MCI_CONNECTORINFO message */
  416. //********************************************************************/
  417. mci_ConnectorInfo_Parms = record
  418. hwndCallback : hwnd; // PM window handle for MCI notify message
  419. ulReturn : Longint; // Return information
  420. ulDeviceTypeID : Longint; // MCI device type
  421. ulConnectorType : Longint; // If specified, ulConnectorIndex is relative
  422. // to the specified connector type
  423. ulConnectorIndex : Longint; // Connector number
  424. ulToConnectorType: Longint; // Connector type to test if
  425. // MCI_QUERY_VALID_CONNECTION is specified
  426. end;
  427. pmci_ConnectorInfo_Parms = ^mci_ConnectorInfo_Parms;
  428. //********************************************************************/
  429. // flags for the MCI_CUE message */
  430. // 0x00000x00 are reserved for MCI_CUE flags */
  431. //********************************************************************/
  432. CONST
  433. MCI_CUE_INPUT = $00000100;
  434. MCI_CUE_OUTPUT = $00000200;
  435. MCI_SHOW = $00000400;
  436. MCI_NOSHOW = $00000800;
  437. //************************************************/
  438. // Additional flags for Wave Audio for MCI_CUE */
  439. //************************************************/
  440. MCI_WAVE_INPUT = $00001000;
  441. MCI_WAVE_OUTPUT = $00002000;
  442. //****************************************************************************/
  443. // the MCI_CONNLIST structure used in the NETWORK_DEFAULT_CONNECTION message */
  444. //****************************************************************************/
  445. type mci_connlist=record
  446. ulFromDevice: LongInt; // Ordinal position of device within pDevices array */
  447. ulSrcConnType: LongInt; // Type of source connector */
  448. ulSrcConnNum: LongInt; // Source Connector Number */
  449. ulToDevice: LongInt; // Ordinal position of device within pDevices array */
  450. ulTgtConnType: LongInt; // Type of target connector */
  451. ulTgtConnNum: Longint; // Target Connector Number */
  452. end;
  453. pmci_connlist=^mci_connlist;
  454. //****************************************************************************/
  455. // parameter structure for the MCI_NETWORK_DEFAULT_CONNECTION message */
  456. //****************************************************************************/
  457. type mci_network_default_connection_parms=record
  458. hwndCallback:HWND; // PM window handle for MCI notify message */
  459. szInstallName:ARRAY [0..MAX_DEVICE_NAME] of Char; // Name of section containing default conn. */
  460. ulNumDevices:LongInt; // Number of additional devices in connection */
  461. ulNumPlayConnections:LongInt; // Number of Play connections */
  462. ulNumRecordConnections:LongInt; // Number of Record connections */
  463. pDevices:ARRAY [0..MAX_DEVICE_NAME] of ^Char; // Pointer to array of device names to open */
  464. pPlayConnections:PMCI_CONNLIST; // Pointer to array of connections to "make" */
  465. pRecordConnections:PMCI_CONNLIST; // Pointer to array of connections to "make" */
  466. end;
  467. type pmci_network_default_connection_parms=^mci_network_default_connection_parms;
  468. //******************************************************/
  469. // Additional flags for MCI_NETWORK_DEFAULT_CONNECTION */
  470. //******************************************************/
  471. CONST
  472. MCI_RECORD_DEFAULTS =$00000004;
  473. MCI_PLAY_DEFAULTS =$00000008;
  474. //********************************************************************/
  475. // parameter structure for the MCI_DEFAULT_CONNECTION message */
  476. //********************************************************************/
  477. type mci_Default_Connection_Parms = record
  478. hwndCallback : hwnd; // PM window handle for MCI notify message
  479. pszDevice : pChar; // Device name
  480. ulConnectorType : LongInt; // If specified, ulConnectorIndex is relative
  481. // to the specified connector type
  482. ulConnectorIndex : LongInt; // Connector number
  483. pszToDevice : pChar; // Return device name to which the connection exists
  484. ulToConnectorType: LongInt; // Connector type
  485. ulToConnectorIndex:LongInt; // Connector number
  486. end;
  487. pmci_Default_Connection_Parms = ^mci_Default_Connection_Parms;
  488. //********************************************************************/
  489. // parameter structure for the MCI_DEVICESETTINGS message */
  490. //********************************************************************/
  491. mci_DeviceSettings_Parms = record
  492. hwndCallback : hwnd; // PM window handle for MCI notify message
  493. hwndNotebook : hwnd; // Hwhd to notebook window
  494. usDeviceType : Integer; // Device type
  495. pszDeviceName : pChar; // Device name
  496. end;
  497. pmci_DeviceSettings_Parms = ^mci_DeviceSettings_Parms;
  498. //*********************************************************************/
  499. // parameter structure for the MCI_CUT / COPY / DELETE / UNDO / etc...*/
  500. //*********************************************************************/
  501. mci_Edit_Parms = record
  502. hwndCallback : hwnd; // PM window handle for MCI notify message
  503. ulStructLen : Longint; // Length of the Structure
  504. ulFrom : Longint; // Beginning Point of Range
  505. ulTo : Longint; // ending point of range
  506. pBuff : Pointer; // user buffer
  507. ulBufLen : Longint; // length of user buffer
  508. pHeader : Pointer; // header which describes the buffer
  509. end;
  510. pmci_Edit_Parms = ^mci_Edit_Parms;
  511. //********************************************************************/
  512. // flags and parameter structure for the MCI_ESCAPE message */
  513. // 0x00000X00 are reserved for MCI_ESCAPE flags */
  514. //********************************************************************/
  515. const
  516. mci_Escape_String = $00000100;
  517. type
  518. mci_Escape_Parms = record
  519. hwndCallback : hwnd; // PM window handle for MCI notify message
  520. pszCommand : pChar; // Command to send to the device
  521. end;
  522. pmci_Escape_Parms = ^mci_Escape_Parms;
  523. //********************************************************************/
  524. // flags for the MCI_FREEZE message */
  525. // 0x0000XX00 are reserved for MCI_FREEZE flags */
  526. //********************************************************************/
  527. CONST
  528. MCI_OVLY_FREEZE_RECT = $00000100;
  529. MCI_OVLY_FREEZE_RECT_OUTSIDE = $00000200;
  530. //********************************************************************/
  531. // flags for the MCI_GETDEVCAPS message */
  532. // 0x00XXXX00 are reserved for MCI_GETDEVCAPS flags */
  533. //********************************************************************/
  534. MCI_GETDEVCAPS_MESSAGE = $00000100;
  535. MCI_GETDEVCAPS_ITEM = $00000200;
  536. MCI_GETDEVCAPS_EXTENDED = $00000400;
  537. //************************************************/
  538. // General MCI_GETDEVCAPS item values */
  539. //************************************************/
  540. MCI_GETDEVCAPS_CAN_EJECT = $00000001;
  541. MCI_GETDEVCAPS_CAN_LOCKEJECT = $00000002;
  542. MCI_GETDEVCAPS_CAN_PLAY = $00000003;
  543. MCI_GETDEVCAPS_CAN_PROCESS_INTERNAL = $00000004;
  544. MCI_GETDEVCAPS_CAN_RECORD = $00000005;
  545. MCI_GETDEVCAPS_CAN_RECORD_INSERT = $00000006;
  546. MCI_GETDEVCAPS_CAN_SAVE = $00000007;
  547. MCI_GETDEVCAPS_CAN_SETVOLUME = $00000008;
  548. MCI_GETDEVCAPS_CAN_STREAM = $00000009;
  549. MCI_GETDEVCAPS_DEVICE_TYPE = $0000000A;
  550. MCI_GETDEVCAPS_HAS_AUDIO = $0000000B;
  551. MCI_GETDEVCAPS_HAS_VIDEO = $0000000C;
  552. MCI_GETDEVCAPS_PREROLL_TIME = $0000000D;
  553. MCI_GETDEVCAPS_PREROLL_TYPE = $0000000E;
  554. MCI_GETDEVCAPS_USES_FILES = $0000000F;
  555. MCI_GETDEVCAPS_HAS_IMAGE = $00000010;
  556. MCI_GETDEVCAPS_WAVE_FORMAT = $00000011;
  557. MCI_GETDEVCAPS_CAN_CLOSE_DOOR = $00000012;
  558. //**********************************************/
  559. // return ID's for videodisc MCI_GETDEVCAPS */
  560. //**********************************************/
  561. MCI_VD_MEDIA_CLV=$00000001;
  562. MCI_VD_MEDIA_CAV=$00000002;
  563. MCI_VD_MEDIA_OTHER=$00000003;
  564. //************************************************/
  565. // MCI_GETDEVCAPS item values for video devices */
  566. //************************************************/
  567. MCI_VID_GETDEVCAPS_CAN_STRETCH = MCI_VID_ITEM_BASE;
  568. MCI_VID_GETDEVCAPS_CAN_DISTORT = MCI_VID_ITEM_BASE+1;
  569. MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT = MCI_VID_ITEM_BASE+2;
  570. MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT = MCI_VID_ITEM_BASE+3;
  571. MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT = MCI_VID_ITEM_BASE+4;
  572. MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT = MCI_VID_ITEM_BASE+5;
  573. MCI_VID_GETDEVCAPS_MAX_WINDOWS = MCI_VID_ITEM_BASE+6;
  574. MCI_VID_GETDEVCAPS_CAN_FREEZE = MCI_VID_ITEM_BASE+7;
  575. MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS = MCI_VID_ITEM_BASE+8;
  576. MCI_VID_GETDEVCAPS_CAN_REVERSE = MCI_VID_ITEM_BASE+9;
  577. MCI_VID_GETDEVCAPS_FAST_RATE = MCI_VID_ITEM_BASE+10;
  578. MCI_VID_GETDEVCAPS_SLOW_RATE = MCI_VID_ITEM_BASE+11;
  579. MCI_VID_GETDEVCAPS_NORMAL_RATE = MCI_VID_ITEM_BASE+12;
  580. MCI_VID_GETDEVCAPS_MINIMUM_RATE = MCI_VID_ITEM_BASE+13;
  581. MCI_VID_GETDEVCAPS_MAXIMUM_RATE = MCI_VID_ITEM_BASE+14;
  582. //************************************************/
  583. // MCI_GETDEVCAPS flag values for Videodisc */
  584. //************************************************/
  585. MCI_VD_GETDEVCAPS_CLV = $00000400;
  586. MCI_VD_GETDEVCAPS_CAV = $00000800;
  587. //************************************************/
  588. // MCI_GETDEVCAPS item values for Videodisc */
  589. //************************************************/
  590. MCI_VD_GETDEVCAPS_CAN_REVERSE = MCI_VID_GETDEVCAPS_CAN_REVERSE;
  591. MCI_VD_GETDEVCAPS_FAST_RATE = MCI_VID_GETDEVCAPS_FAST_RATE;
  592. MCI_VD_GETDEVCAPS_SLOW_RATE = MCI_VID_GETDEVCAPS_SLOW_RATE;
  593. MCI_VD_GETDEVCAPS_NORMAL_RATE = MCI_VID_GETDEVCAPS_NORMAL_RATE;
  594. MCI_VD_GETDEVCAPS_MINIMUM_RATE = MCI_VID_GETDEVCAPS_MINIMUM_RATE;
  595. MCI_VD_GETDEVCAPS_MAXIMUM_RATE = MCI_VID_GETDEVCAPS_MAXIMUM_RATE;
  596. //***********************************************/
  597. // MCI_GETDEVCAPS item values for Digital Video */
  598. //***********************************************/
  599. MCI_DGV_GETDEVCAPS_CAN_REVERSE = MCI_VID_GETDEVCAPS_CAN_REVERSE;
  600. MCI_DGV_GETDEVCAPS_CAN_STRETCH = MCI_VID_GETDEVCAPS_CAN_STRETCH;
  601. MCI_DGV_GETDEVCAPS_CAN_DISTORT = MCI_VID_GETDEVCAPS_CAN_DISTORT;
  602. MCI_DGV_GETDEVCAPS_FAST_RATE = MCI_VID_GETDEVCAPS_FAST_RATE;
  603. MCI_DGV_GETDEVCAPS_SLOW_RATE = MCI_VID_GETDEVCAPS_SLOW_RATE;
  604. MCI_DGV_GETDEVCAPS_NORMAL_RATE = MCI_VID_GETDEVCAPS_NORMAL_RATE;
  605. MCI_DGV_GETDEVCAPS_MINIMUM_RATE = MCI_VID_GETDEVCAPS_MINIMUM_RATE;
  606. MCI_DGV_GETDEVCAPS_MAXIMUM_RATE = MCI_VID_GETDEVCAPS_MAXIMUM_RATE;
  607. MCI_DGV_GETDEVCAPS_VIDEO_X_EXTENT = MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT;
  608. MCI_DGV_GETDEVCAPS_VIDEO_Y_EXTENT = MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT;
  609. MCI_DGV_GETDEVCAPS_IMAGE_X_EXTENT = MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT;
  610. MCI_DGV_GETDEVCAPS_IMAGE_Y_EXTENT = MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT;
  611. MCI_DGV_GETDEVCAPS_MAX_WINDOWS = MCI_VID_GETDEVCAPS_MAX_WINDOWS;
  612. MCI_DGV_GETDEVCAPS_OVERLAY_GRAPHICS = MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS;
  613. MCI_DGV_GETDEVCAPS_HAS_TUNER = MCI_DGV_ITEM_BASE;
  614. MCI_DGV_GETDEVCAPS_HAS_TELETEX = MCI_DGV_ITEM_BASE+1;
  615. MCI_DGV_GETDEVCAPS_HAS_AFC = MCI_DGV_ITEM_BASE+2;
  616. //************************************************/
  617. // MCI_GETDEVCAPS item values for Video Overlay */
  618. //************************************************/
  619. MCI_OVLY_GETDEVCAPS_CAN_STRETCH = MCI_VID_GETDEVCAPS_CAN_STRETCH;
  620. MCI_OVLY_GETDEVCAPS_CAN_DISTORT = MCI_VID_GETDEVCAPS_CAN_DISTORT;
  621. MCI_OVLY_GETDEVCAPS_VIDEO_X_EXTENT = MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT;
  622. MCI_OVLY_GETDEVCAPS_VIDEO_Y_EXTENT = MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT;
  623. MCI_OVLY_GETDEVCAPS_IMAGE_X_EXTENT = MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT;
  624. MCI_OVLY_GETDEVCAPS_IMAGE_Y_EXTENT = MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT;
  625. MCI_OVLY_GETDEVCAPS_MAX_WINDOWS = MCI_VID_GETDEVCAPS_MAX_WINDOWS;
  626. MCI_OVLY_GETDEVCAPS_CAN_FREEZE = MCI_VID_GETDEVCAPS_CAN_FREEZE;
  627. MCI_OVLY_GETDEVCAPS_OVERLAY_GRAPHICS = MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS;
  628. MCI_PREROLL_NOTIFIED = $00000001;
  629. MCI_PREROLL_DETERMINISTIC = $00000002;
  630. MCI_PREROLL_NONE = $00000003;
  631. //********************************************************************/
  632. // parameter structure for the MCI_GETDEVCAPS message */
  633. //********************************************************************/
  634. TYPE
  635. mci_GetDevCaps_Parms = record
  636. hwndCallback : hwnd; // PM window handle for MCI notify message
  637. ulReturn : Longint; // Return field
  638. ulItem : Longint; // Item field for GETDEVCAPS item to query
  639. usMessage : integer; // Field to hold MCI message to query
  640. usReserved0 : integer; // Reserved field
  641. end;
  642. pmci_GetDevCaps_Parms = ^mci_GetDevCaps_Parms;
  643. //********************************************************************/
  644. // parameter structure for the MCI_WAVE_GETDEVCAPS */
  645. //********************************************************************/
  646. mci_Wave_GetDevCaps_Parms = record
  647. hwndCallback : hwnd; // PM window handle for MCI notify message
  648. ulReturn : Longint; // Return field
  649. ulItem : Longint; // Item field for GETDEVCAPS item to query
  650. usMessage : Integer; // Field to hold MCI message to query
  651. usReserved0 : Integer; // Reserved field
  652. ulLength : Longint; // Length of structure in ULONGS
  653. ulBitsPerSample : Longint; // Number of Bits per Sample
  654. ulFormatTag : Longint; // Format Tag
  655. ulSamplesPerSec : Longint; // Sampling Rate
  656. ulChannels : Longint; // Number of channels
  657. ulFormatMode : Longint; // Either MCI_RECORD or MCI_PLAY
  658. end;
  659. pmci_Wave_GetDevCaps_Parms = ^mci_Wave_GetDevCaps_Parms;
  660. //********************************************************************/
  661. // potential values for the ulValue field of MCI_AMP_GETDEVCAPS */
  662. //********************************************************************/
  663. CONST
  664. MCI_SET_MONITOR = $00000001;
  665. MCI_SET_MONITOR_AUDIO = $00000002;
  666. MCI_SET_MONITOR_VIDEO = $00000003;
  667. MCI_SET_RECORD = $00000004;
  668. // MCI_SET flags for amp/mixer;
  669. MCI_AMP_SET_BALANCE = $00100000;
  670. MCI_AMP_SET_PITCH = $00200000;
  671. MCI_AMP_SET_TREBLE = $00400000;
  672. MCI_AMP_SET_BASS = $00800000;
  673. MCI_AMP_SET_GAIN = $01000000;
  674. MCI_AMP_SET_ALC = $00000004;
  675. MCI_AMP_SET_AUDIO = $00000008;
  676. MCI_AMP_SET_CROSSOVER = $00000010;
  677. MCI_AMP_SET_LOUDNESS = $00000020;
  678. MCI_AMP_SET_MUTE = $00000040;
  679. MCI_AMP_SET_REVERB = $00000080;
  680. MCI_AMP_SET_STEREOENHANCE = $00000100;
  681. MCI_AMP_SET_CUSTOM1 = $00000200;
  682. MCI_AMP_SET_CUSTOM2 = $00000400;
  683. MCI_AMP_SET_CUSTOM3 = $00000800;
  684. MCI_AMP_SET_LRVOLUME = $00001000;
  685. MCI_AMP_SET_MID = $00020000;
  686. MCI_AMP_SET_CHORUS = $00004000; // typo? 40000?
  687. MCI_AMP_SET_VOLUME = $00080000; // MCI_SET_VOLUME;
  688. MCI_AMP_SET_MONITOR = MCI_SET_MONITOR_AUDIO;
  689. // Potential values for the ulValue field of MCI_AMP_GETDEVCAPS
  690. MCI_AMP_CAN_SET_MONITOR = MCI_AMP_SET_MONITOR;
  691. MCI_AMP_CAN_SET_BALANCE = MCI_AMP_SET_BALANCE;
  692. MCI_AMP_CAN_SET_ALC = MCI_AMP_SET_ALC;
  693. MCI_AMP_CAN_SET_CROSSOVER = MCI_AMP_SET_CROSSOVER;
  694. MCI_AMP_CAN_SET_LOUDNESS = MCI_AMP_SET_LOUDNESS;
  695. MCI_AMP_CAN_SET_MUTE = MCI_AMP_SET_MUTE;
  696. MCI_AMP_CAN_SET_REVERB = MCI_AMP_SET_REVERB;
  697. MCI_AMP_CAN_SET_STEREOENHANCE = MCI_AMP_SET_STEREOENHANCE;
  698. MCI_AMP_CAN_SET_CUSTOM1 = MCI_AMP_SET_CUSTOM1;
  699. MCI_AMP_CAN_SET_CUSTOM2 = MCI_AMP_SET_CUSTOM2;
  700. MCI_AMP_CAN_SET_CUSTOM3 = MCI_AMP_SET_CUSTOM3;
  701. MCI_AMP_CAN_SET_LRVOLUME = MCI_AMP_SET_LRVOLUME;
  702. MCI_AMP_CAN_SET_BASS = MCI_AMP_SET_BASS;
  703. MCI_AMP_CAN_SET_MID = MCI_AMP_SET_MID;
  704. MCI_AMP_CAN_SET_TREBLE = MCI_AMP_SET_TREBLE;
  705. MCI_AMP_CAN_SET_PITCH = MCI_AMP_SET_PITCH;
  706. MCI_AMP_CAN_SET_GAIN = MCI_AMP_SET_GAIN;
  707. MCI_AMP_CAN_SET_CHORUS = MCI_AMP_SET_CHORUS;
  708. MCI_AMP_CAN_SET_VOLUME = MCI_AMP_SET_VOLUME;
  709. //************************************************************************/
  710. // potential values for the ulExtended field of MCI_AMP_GETDEVCAPS_PARMS */
  711. //************************************************************************/
  712. MCI_MIXER_LINE = $00000001;
  713. //********************************************************************/
  714. // parameter structure for the MCI_AMP_GETDEVCAPS */
  715. //********************************************************************/
  716. type
  717. mci_Amp_GetDevCaps_Parms = record
  718. hwndCallback : Longint; // PM window handle for MCI notify message
  719. ulReturn : Longint; // Return field
  720. ulItem : Longint; // Item field for GETDEVCAPS item to query
  721. usMessage : Integer; // Field to hold MCI message to query
  722. usReserved0 : Integer; // Reserved field
  723. ulLength : LongInt; // Length of structure in uLongS
  724. ulValue : LongInt; // Value to determine caps
  725. ulAttribute : LongInt; // Flags to modified the extended parms
  726. ulExtended : LongInt; // Extended flags field
  727. end;
  728. pmci_Amp_GetDevCaps_Parms = ^mci_Amp_GetDevCaps_Parms;
  729. //********************************************************************/
  730. // values for the ulFlags field of MCI_MIXEVENT_PARMS */
  731. //********************************************************************/
  732. CONST
  733. MCI_MIX_ATTRIBUTE = $00000001;
  734. MCI_MIX_CONNECTOR = $00000002;
  735. //********************************************************************/
  736. // values for the lParam field for mix_notify */
  737. //********************************************************************/
  738. MCI_MIXNOTIFY_ON = $00000004;
  739. MCI_MIXNOTIFY_OFF = $00000008;
  740. //********************************************************************/
  741. // value to indicate type of MM_MCIEVENT */
  742. //********************************************************************/
  743. MCI_MIXEVENT = $00000001;
  744. //********************************************************************/
  745. // parameter structure for the MCI_MIXEVENT_PARMS */
  746. //********************************************************************/
  747. type
  748. mci_MixEvent_Parms = record
  749. ulLength : Longint; // Length of struct
  750. hwndMixer : hwnd; // window to inform of mixer changes
  751. ulFlags : Longint; // Either MCI_MIX_ATTRIBUTE
  752. // or MCI_MIX_CONNECTOR
  753. usDeviceID : Integer; // device id to notify of the change
  754. ulDeviceType : LongInt; // Device Type which generated the change
  755. ulDeviceOrdinal : LongInt; // Ordinal of device Type
  756. ulAttribute : LongInt; // Attribute that changed(volume, bass etc.)
  757. ulValue : LongInt; // new value of the attribute which changed
  758. ulConnectorType : LongInt; // Connector Type
  759. ulConnectorIndex : LongInt; // Connector Index
  760. ulConnStatus : LongInt; // Is connector enabled/disabled.
  761. end;
  762. pmci_MixEvent_Parms = ^mci_MixEvent_Parms;
  763. //********************************************************************/
  764. // flag values for the MCI_GETIMAGEBUFFER and MCI_SETIMAGEBUFFER msg */
  765. // 0x0000XX00 are reserved for MCI_GETIMAGEBUFFER and */
  766. // MCI_SETIMAGEBUFFER Flags */
  767. // MCI_CONVERT is defined by MCI_CAPTURE message as 0x00001000L */
  768. //********************************************************************/
  769. CONST
  770. MCI_USE_HW_BUFFER = $00000400;
  771. MCI_GET_HW_BUFFER_PTR = $00000800;
  772. //**************************************************/
  773. // parm structure for MCI_GETIMAGEBUFFER and */
  774. // MCI_SETIMAGEBUFFER messages */
  775. //**************************************************/
  776. type
  777. mci_Image_Parms = record
  778. hwndCallback : hwnd; // PM window handle for MCI notify message
  779. ulPelFormat : Longint; // Format of the image data returned
  780. usBitCount : Integer; // Number of bitsimage data returned
  781. usReserved0 : Integer; // Reserved field
  782. ulImageCompression : LongInt; //
  783. rect : RectL; // Image area to get/set
  784. pPelBuffer : Pointer; // Pel data buffer
  785. ulPelBufferHeight : LongInt; // Number of rows in buffer
  786. ulPelBufferWidth : LongInt; // Pels per row in buffer
  787. ulBufLen : LongInt; // Pel data buffer length in bytes
  788. end;
  789. pmci_Image_Parms = ^mci_Image_Parms;
  790. //********************************************************************/
  791. // flags for the MCI_GETIMAGEPALETTE message */
  792. // 0x0000XX00 are reserved for MCI_GETIMAGEPALETTE flags */
  793. //********************************************************************/
  794. CONST
  795. MCI_FIND_BEST_REGISTERED = $00000100;
  796. MCI_QUERY_REGISTERED_MAP = $00000200;
  797. MCI_QUERY_REGISTERED_MAP_SIZE = $00000400;
  798. //**************************************************/
  799. // parameter structure for MCI_GETIMAGEPALETTE and */
  800. // MCI_SETIMAGEPALETTE messages */
  801. //**************************************************/
  802. type
  803. mci_Palette_Parms = record
  804. hwndCallback : hwnd; // PM window handle for MCI notify message
  805. usRegisteredMap : Integer; // Id of the palette from the registed color map
  806. usReserved0 : Integer; // Reserved field
  807. ulPalEntries : LongInt; // size of the palette returned
  808. pPalette : Pointer; // pointer to the palette
  809. end;
  810. pmci_Palette_Parms = ^mci_Palette_Parms;
  811. //********************************************************************/
  812. // Parameter structure for the MCI_GETTOC message */
  813. //********************************************************************/
  814. mci_Toc_Rec = record
  815. TrackNum : BYTE; // Returned Track Number
  816. ulStartAddr : LongInt; // Starting address of the track in MMTIME format
  817. ulEndAddr : LongInt; // Ending address of the track in MMTIME format
  818. Control : BYTE; // Track Control information
  819. usCountry : Integer; // Country
  820. ulOwner : LongInt; // Owner
  821. ulSerialNum : LongInt; // Serial Number
  822. end;
  823. pTocRec = ^mci_Toc_Rec;
  824. mci_Toc_Parms = record
  825. hwndCallback : hwnd; // PM window handle for MCI notify message
  826. pBuf : pTocRec; // Pointer to array MCI_TOC_REC structures to
  827. // be filled in by the mci device
  828. ulBufSize : LongInt; // Size of the array
  829. end;
  830. pmci_Toc_Parms = ^mci_Toc_Parms;
  831. //********************************************************************/
  832. // parameters for the MCI_GROUP message */
  833. // 0x00XXXX00 are reserved for MCI_GROUP flags */
  834. //********************************************************************/
  835. const
  836. MCI_SYNCHRONIZE = $00000100;
  837. MCI_NOPIECEMEAL = $00000200;
  838. MCI_GROUP_MAKE = $00000400;
  839. MCI_GROUP_DELETE = $00000800;
  840. MCI_GROUP_ALIAS = $00001000;
  841. MCI_GROUP_MASTER = $00002000;
  842. MCI_GROUP_NONE = $00004000; // No group!
  843. type
  844. mci_Group_Parms = record
  845. hwndCallback : hwnd; // PM window handle for MCI notify message.
  846. usGroupID : Integer; // GroupID
  847. usReserved0 : Integer; // RESERVED
  848. ulStructLength : LongInt; // Length of Structure in ULONGS.
  849. usMasterID : Integer; // ID of Master device in Synchrounous groups.
  850. usReserved1 : Integer; // RESERVED
  851. pszGroupAlias : pChar; // Pointer to Alias Name.
  852. ulNumDevices : LongInt; // Number of Devices in group.
  853. paulDeviceID : PLongInt; // Array of Device ids in the group.
  854. end;
  855. pmci_Group_Parms = ^mci_Group_Parms;
  856. //********************************************************************/
  857. // flags for the MCI_INFO message */
  858. // 0x00000X00 are reserved for MCI_INFO flags */
  859. //********************************************************************/
  860. CONST
  861. MCI_INFO_PRODUCT = $00000100;
  862. MCI_INFO_FILE = $00000200;
  863. //***********************************************/
  864. // CD Audio MCI_INFO */
  865. //***********************************************/
  866. MCI_CD_INFO_ID = $00010000;
  867. MCI_CD_INFO_UPC = $00020000;
  868. //***********************************************/
  869. // Videodisc MCI_INFO */
  870. //***********************************************/
  871. MCI_VD_INFO_LABEL = $00001000;
  872. //***********************************************/
  873. // Digital Video MCI_INFO */
  874. //***********************************************/
  875. MCI_DGV_INFO_VIDEO_FILE = $00001000;
  876. MCI_DGV_INFO_IMAGE_FILE = $00002000;
  877. MCI_DGV_INFO_REGION = $00004000;
  878. MCI_DGV_INFO_REGION_TEXT = $00008000;
  879. MCI_DGV_INFO_TEXT = $00010000;
  880. //***********************************************/
  881. // Video Overlay MCI_INFO */
  882. //***********************************************/
  883. MCI_OVLY_INFO_TEXT = $00010000;
  884. type
  885. mci_Info_Parms = record
  886. hwndCallback : hwnd; // PM window handle for MCI notify message
  887. pszReturn : pChar; // Pointer to return buffer
  888. ulRetSize : LongInt; // Return buffer size
  889. end;
  890. pmci_Info_Parms = ^mci_Info_Parms;
  891. //********************************************************************/
  892. // parameters and flags for the MCI_LOAD message */
  893. // 0x00000X00 are reserved for MCI_LOAD flags */
  894. //********************************************************************/
  895. mci_Load_Parms = record
  896. hwndCallback : hwnd; // PM window handle for MCI notify message
  897. pszElementName : pChar; // File name to loads
  898. end;
  899. pmci_Load_Parms = ^mci_Load_Parms;
  900. //********************************************************************/
  901. // parameters and flags for the MCI_MASTERAUDIO */
  902. // 0x000XXX00 are reserved for MCI_MASTERAUDIO flags */
  903. //********************************************************************/
  904. CONST
  905. MCI_ON = $00000100;
  906. MCI_OFF = $00000200;
  907. MCI_HEADPHONES = $00000400;
  908. MCI_SPEAKERS = $00000800;
  909. MCI_MASTERVOL = $00001000;
  910. MCI_SAVESETTING = $00002000;
  911. MCI_QUERYSAVEDSETTING = $00004000;
  912. MCI_QUERYCURRENTSETTING = $00008000;
  913. type
  914. mci_MasterAudio_Parms = record
  915. hwndDummyCallback : hwnd; // Notify not allowed for this message
  916. ulReturn : LongInt; // Return field for query information
  917. ulMasterVolume : LongInt; // Master volume field
  918. end;
  919. pmci_MasterAudio_Parms = ^mci_MasterAudio_Parms;
  920. //********************************************************************/
  921. // parameters and flags for the MCI_OPEN message */
  922. // 0x0000XX00 are reserved for MCI_OPEN flags */
  923. //********************************************************************/
  924. CONST
  925. MCI_OPEN_ELEMENT = $00000100;
  926. MCI_OPEN_ALIAS = $00000200;
  927. MCI_OPEN_ELEMENT_ID = $00000400;
  928. MCI_OPEN_PLAYLIST = $00000800;
  929. MCI_OPEN_TYPE_ID = $00001000;
  930. MCI_OPEN_SHAREABLE = $00002000;
  931. MCI_OPEN_MMIO = $00004000;
  932. MCI_READONLY = $00008000;
  933. //**************************************************/
  934. // parameters and flags for the MCI_OPEN message */
  935. // Digital Video, Video Overlay specific */
  936. //**************************************************/
  937. MCI_VID_OPEN_PARENT = $01000000;
  938. MCI_DGV_OPEN_PARENT = MCI_VID_OPEN_PARENT;
  939. MCI_OVLY_OPEN_PARENT = MCI_VID_OPEN_PARENT;
  940. type
  941. mci_Open_Parms = record
  942. hwndCallback : hwnd; // PM window handle for MCI notify message
  943. usDeviceID : Integer; // Device ID returned to user
  944. usReserved0 : Integer; // Reserved
  945. pszDeviceType : pChar; // Device name from SYSTEM.INI
  946. pszElementName : pChar; // Typically a file name or NULL
  947. pszAlias : pChar; // Optional device alias
  948. end;
  949. pmci_Open_Parms = ^mci_Open_Parms;
  950. //*********************************************************/
  951. // parameters for the AMP MCI_OPEN message */
  952. //*********************************************************/
  953. mci_Amp_Open_Parms = record
  954. hwndCallback : hwnd; // PM window handle for MCI notify message
  955. usDeviceID : Integer; // Device ID returned to user
  956. usReserved0 : Integer; // Reserved field
  957. pszDeviceType : pChar; // Device name from SYSTEM.INI
  958. pszElementName : pChar; // Typically a file name or NULL
  959. pszAlias : pChar; // Optional device alias
  960. pDevDataPtr : Pointer; // Pointer to device data
  961. end;
  962. pmci_Amp_Open_Parms = ^mci_Amp_Open_Parms;
  963. //*********************************************************/
  964. // parameters for MCI_OPEN message for video devices */
  965. //*********************************************************/
  966. mci_Vid_Open_Parms = record
  967. hwndCallback : hwnd; // PM window handle for MCI notify message
  968. usDeviceID : Integer; // Device ID returned to user
  969. usReserved0 : Integer; // Reserved field
  970. pszDeviceType : pChar; // Device name from SYSTEM.INI
  971. pszElementName : pChar; // Typically a file name or NULL
  972. pszAlias : pChar; // Optional device alias
  973. hwndParent : hwnd; // Parent window handle
  974. end;
  975. pmci_Vid_Open_Parms = ^mci_Vid_Open_Parms;
  976. mci_dgv_Open_Parms = mci_Vid_Open_Parms;
  977. pmci_dgv_Open_Parms = ^mci_dgv_Open_Parms;
  978. mci_Ovly_Open_Parms = mci_Vid_Open_Parms;
  979. pmci_Ovly_Open_Parms = ^mci_Ovly_Open_Parms;
  980. //**************************************************/
  981. // MCI_PLAY flag values for videodisc */
  982. //**************************************************/
  983. CONST
  984. MCI_VD_PLAY_REVERSE = $00001000;
  985. MCI_VD_PLAY_FAST = $00002000;
  986. MCI_VD_PLAY_SPEED = $00004000;
  987. MCI_VD_PLAY_SCAN = $00008000;
  988. MCI_VD_PLAY_SLOW = $00010000;
  989. //**************************************************/
  990. // MCI_PLAY flag values for digital video */
  991. //**************************************************/
  992. MCI_DGV_PLAY_REVERSE = $00001000;
  993. MCI_DGV_PLAY_FAST = $00002000;
  994. MCI_DGV_PLAY_SPEED = $00004000;
  995. MCI_DGV_PLAY_SCAN = $00008000;
  996. MCI_DGV_PLAY_SLOW = $00010000;
  997. MCI_DGV_PLAY_REPEAT = $00020000;
  998. type
  999. mci_Play_Parms = record
  1000. hwndCallback : hwnd;
  1001. ulFrom : LongInt;
  1002. ulTo : LongInt;
  1003. end;
  1004. pmci_Play_Parms = ^mci_Play_Parms;
  1005. mci_VD_Play_Parms = record
  1006. hwndCallback : hwnd;
  1007. ulFrom : LongInt;
  1008. ulTo : LongInt;
  1009. ulFactor : LongInt;
  1010. end;
  1011. pmci_VD_Play_Parms = ^mci_VD_Play_Parms;
  1012. mci_DGV_play_Parms = record
  1013. hwndCallback : hwnd;
  1014. ulFrom : LongInt;
  1015. ulTo : LongInt;
  1016. ulSpeed : LongInt;
  1017. end;
  1018. pmci_DGV_play_Parms = ^mci_DGV_play_Parms;
  1019. //********************************************************************/
  1020. // parameters for the MCI_PUT message */
  1021. // 0x00000X00 are reserved for MCI_PUT flags */
  1022. //********************************************************************/
  1023. CONST
  1024. MCI_VID_PUT_RECT = $00000100;
  1025. MCI_VID_PUT_DESTINATION = $00000200;
  1026. MCI_VID_PUT_SOURCE = $00000400;
  1027. MCI_VID_PUT_WINDOW_MOVE = $00000800;
  1028. MCI_VID_PUT_WINDOW_SIZE = $00001000;
  1029. MCI_DGV_PUT_RECT = MCI_VID_PUT_RECT;
  1030. MCI_DGV_PUT_DESTINATION = MCI_VID_PUT_DESTINATION;
  1031. MCI_DGV_PUT_SOURCE = MCI_VID_PUT_SOURCE;
  1032. MCI_DGV_PUT_WINDOW_MOVE = MCI_VID_PUT_WINDOW_MOVE;
  1033. MCI_DGV_PUT_WINDOW_SIZE = MCI_VID_PUT_WINDOW_SIZE;
  1034. MCI_DGV_MONITOR = $00010000;
  1035. MCI_DGV_RECORD = $00020000;
  1036. MCI_OVLY_PUT_RECT = MCI_VID_PUT_RECT;
  1037. MCI_OVLY_PUT_DESTINATION = MCI_VID_PUT_DESTINATION;
  1038. MCI_OVLY_PUT_SOURCE = MCI_VID_PUT_SOURCE;
  1039. MCI_OVLY_PUT_WINDOW_MOVE = MCI_VID_PUT_WINDOW_MOVE;
  1040. MCI_OVLY_PUT_WINDOW_SIZE = MCI_VID_PUT_WINDOW_SIZE;
  1041. //**************************************************/
  1042. // Rectangle parameters for MCI_PUT, MCI_WHERE, */
  1043. // MCI_FREEZE, and MCI_UNFREEZE */
  1044. //**************************************************/
  1045. type
  1046. mci_Vid_Rect_Parms = record
  1047. hwndCallback : hwnd; // PM window handle for MCI notify message
  1048. rc : RectL; // rectangle array specifying the offset
  1049. // and size of a rectangle
  1050. end;
  1051. mci_Dgv_Rect_Parms = mci_Vid_Rect_Parms;
  1052. pmci_Dgv_Rect_Parms = ^mci_Dgv_Rect_Parms;
  1053. mci_Ovly_Rect_Parms = mci_Vid_Rect_Parms;
  1054. pmci_Ovly_Rect_Parms = ^mci_Ovly_Rect_Parms;
  1055. //********************************************************************/
  1056. // parameters for the MCI_RECORD message */
  1057. // 0x00000X00 are reserved for MCI_RECORD flags */
  1058. //********************************************************************/
  1059. CONST
  1060. MCI_RECORD_INSERT = $00000100;
  1061. MCI_RECORD_OVERWRITE = $00000200;
  1062. MCI_DGV_RECORD_RECT = $00000400;
  1063. type
  1064. mci_Record_Parms = record
  1065. hwndCallback : hwnd; // PM window handle for MCI notify message
  1066. ulFrom : LongInt; // Record from position
  1067. ulTo : LongInt; // Record to position
  1068. end;
  1069. pmci_Record_Parms = ^mci_Record_Parms;
  1070. //********************************************************************/
  1071. // parameters for the MCI_RELEASEDEVICE message */
  1072. // 0xXXXXXX00 are reserved for MCI_RELEASEDEVICE message */
  1073. //********************************************************************/
  1074. CONST
  1075. MCI_RETURN_RESOURCE = $00000100;
  1076. //********************************************************************/
  1077. // parameters for the MCI_RESTORE message */
  1078. // 0x0000XX00 are reserved for MCI_RESTORE flags */
  1079. // MCI_CONVERT is defined by MCI_CAPTURE message as 0x00001000L */
  1080. //********************************************************************/
  1081. MCI_RESTORE_SRC_RECT = $00000100;
  1082. MCI_RESTORE_DEST_RECT = $00000200;
  1083. type mci_Restore_Parms = record
  1084. hwndCallback : hwnd; // PM window handle for MCI notify message
  1085. SrcRect : RectL; // Rectangle array specifying the source
  1086. // area to be restored
  1087. RestRect : RectL; // Rectangle array specifying the destination
  1088. // area to be restored
  1089. end;
  1090. pmci_Restore_Parms = ^mci_Restore_Parms;
  1091. //********************************************************************/
  1092. // parameters for the MCI_SAVE message */
  1093. // 0x00000X00 are reserved for MCI_SAVE flags */
  1094. //********************************************************************/
  1095. const
  1096. MCI_SAVE_FILE = $00000100;
  1097. //************************************************/
  1098. // Digital Video MCI_SAVE */
  1099. //************************************************/
  1100. MCI_DGV_SAVE_VIDEO_FILE = $00001000;
  1101. MCI_DGV_SAVE_IMAGE_FILE = $00002000;
  1102. type
  1103. mci_Save_Parms = record
  1104. hwndCallback : hwnd; // PM window handle for MCI notify message
  1105. pszFileName : pChar; // Filename to save data to
  1106. end;
  1107. pmci_Save_Parms = ^mci_Save_Parms;
  1108. //********************************************************************/
  1109. // parameters for the MCI_SEEK message */
  1110. // 0x00000X00 are reserved for MCI_SEEK flags */
  1111. //********************************************************************/
  1112. const
  1113. MCI_TO_START = $00000100;
  1114. MCI_TO_END = $00000200;
  1115. //************************************************/
  1116. // Digital Video MCI_SEEK */
  1117. //************************************************/
  1118. MCI_DGV_SEEK_TO_NEAREST_IFRAME = $00100000;
  1119. //************************************************/
  1120. // Videodisc MCI_SEEK */
  1121. //************************************************/
  1122. MCI_VD_SEEK_REVERSE = $00001000;
  1123. type
  1124. mci_Seek_Parms = record
  1125. hwndCallback : hwnd; // PM window handle for MCI notify message
  1126. ulTo : LongInt; // Seek to this position
  1127. end;
  1128. pmci_Seek_Parms = ^mci_Seek_Parms;
  1129. //********************************************************************/
  1130. // Flags for the MCI_SET message */
  1131. // 0x00XXXX00 are reserved for MCI_SET flags */
  1132. //********************************************************************/
  1133. const
  1134. MCI_SET_ITEM = $00000100;
  1135. MCI_SET_ON = $00000200;
  1136. MCI_SET_OFF = $00000400;
  1137. MCI_SET_VIDEO = $00000800;
  1138. MCI_SET_AUDIO = $00001000;
  1139. MCI_SET_DOOR_OPEN = $00002000;
  1140. MCI_SET_DOOR_CLOSED = $00004000;
  1141. MCI_SET_SPEED_FORMAT = $00008000;
  1142. MCI_SET_TIME_FORMAT = $00010000;
  1143. MCI_SET_DOOR_LOCK = $00020000;
  1144. MCI_SET_DOOR_UNLOCK = $00040000;
  1145. MCI_SET_VOLUME = $00080000;
  1146. MCI_SET_ITEM_FOURCC = $00100000;
  1147. MCI_SET_REVERSE = $00200000;
  1148. //******************************************************/
  1149. // Values for the ulAudio field */
  1150. //******************************************************/
  1151. MCI_SET_AUDIO_ALL = $00000000;
  1152. MCI_SET_AUDIO_LEFT = $00000001;
  1153. MCI_SET_AUDIO_RIGHT = $00000002;
  1154. //******************************************************/
  1155. // MCI_SET flags for CDXA */
  1156. //******************************************************/
  1157. MCI_CDXA_SET_CHANNEL = $01000000;
  1158. MCI_CDXA_AUDIO_DEVICE = $10000000;
  1159. MCI_CDXA_AUDIO_BUFFER = $02000000;
  1160. MCI_CDXA_VIDEO_BUFFER = $04000000;
  1161. MCI_CDXA_DATA_BUFFER = $08000000;
  1162. //******************************************************/
  1163. // MCI_SET flags for videodisc */
  1164. //******************************************************/
  1165. MCI_VD_SET_ON = MCI_SET_ON;
  1166. MCI_VD_SET_OFF = MCI_SET_OFF;
  1167. MCI_VD_SET_VIDEO = MCI_SET_VIDEO;
  1168. MCI_VD_SET_CHANNEL = $00100000;
  1169. MCI_VD_SET_DISPLAY = $00200000;
  1170. MCI_VD_SET_DONTCARE = $00400000; // Dont care!
  1171. //******************************************************/
  1172. // Generic MCI_SET item values for video devices */
  1173. //******************************************************/
  1174. MCI_VID_SET_VIDEO_COMPRESSION = MCI_VID_ITEM_BASE;
  1175. MCI_VID_SET_IMAGE_COMPRESSION = MCI_VID_ITEM_BASE+1;
  1176. MCI_VID_SET_IMAGE_BITSPERPEL = MCI_VID_ITEM_BASE+2;
  1177. MCI_VID_SET_IMAGE_PELFORMAT = MCI_VID_ITEM_BASE+3;
  1178. MCI_VID_SET_BRIGHTNESS = MCI_VID_ITEM_BASE+4;
  1179. MCI_VID_SET_CONTRAST = MCI_VID_ITEM_BASE+5;
  1180. MCI_VID_SET_HUE = MCI_VID_ITEM_BASE+6;
  1181. MCI_VID_SET_SATURATION = MCI_VID_ITEM_BASE+7;
  1182. MCI_VID_SET_SHARPNESS = MCI_VID_ITEM_BASE+8;
  1183. MCI_VID_SET_GREYSCALE = MCI_VID_ITEM_BASE+9;
  1184. MCI_VID_SET_IMAGE_QUALITY = MCI_VID_ITEM_BASE+10;
  1185. MCI_VID_SET_VIDEO_QUALITY = MCI_VID_ITEM_BASE+11;
  1186. MCI_VID_SET_IMAGE_COMPRESSION_METHOD = MCI_VID_ITEM_BASE+12;
  1187. MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE = MCI_VID_ITEM_BASE+13;
  1188. MCI_VID_SET_IMAGE_FILE_FORMAT = MCI_VID_ITEM_BASE+14;
  1189. MCI_VID_SET_REF_INTERVAL = MCI_VID_ITEM_BASE+15;
  1190. MCI_VID_SET_MAXDATARATE = MCI_VID_ITEM_BASE+16;
  1191. MCI_VID_SET_VIDEO_FILE_FORMAT = MCI_VID_ITEM_BASE+17;
  1192. //******************************************************/
  1193. // MCI_SET item values for video overlay */
  1194. //******************************************************/
  1195. MCI_OVLY_SET_IMAGE_COMPRESSION = MCI_VID_SET_IMAGE_COMPRESSION;
  1196. MCI_OVLY_SET_IMAGE_BITSPERPEL = MCI_VID_SET_IMAGE_BITSPERPEL;
  1197. MCI_OVLY_SET_IMAGE_PELFORMAT = MCI_VID_SET_IMAGE_PELFORMAT;
  1198. MCI_OVLY_SET_BRIGHTNESS = MCI_VID_SET_BRIGHTNESS;
  1199. MCI_OVLY_SET_CONTRAST = MCI_VID_SET_CONTRAST;
  1200. MCI_OVLY_SET_HUE = MCI_VID_SET_HUE;
  1201. MCI_OVLY_SET_SATURATION = MCI_VID_SET_SATURATION;
  1202. MCI_OVLY_SET_SHARPNESS = MCI_VID_SET_SHARPNESS;
  1203. MCI_OVLY_SET_GREYSCALE = MCI_VID_SET_GREYSCALE;
  1204. MCI_OVLY_SET_IMAGE_QUALITY = MCI_VID_SET_IMAGE_QUALITY;
  1205. MCI_OVLY_SET_IMAGE_COMPRESSION_METHOD = MCI_VID_SET_IMAGE_COMPRESSION_METHOD;
  1206. MCI_OVLY_SET_MINIMUM_VIDEO_REFRESH_RATE = MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE;
  1207. MCI_OVLY_SET_IMAGE_FILE_FORMAT = MCI_VID_SET_IMAGE_FILE_FORMAT;
  1208. //******************************************************/
  1209. // MCI_SET item values for digital video */
  1210. //******************************************************/
  1211. MCI_DGV_SET_VIDEO_COMPRESSION = MCI_VID_SET_VIDEO_COMPRESSION;
  1212. MCI_DGV_SET_IMAGE_COMPRESSION = MCI_VID_SET_IMAGE_COMPRESSION;
  1213. MCI_DGV_SET_IMAGE_BITSPERPEL = MCI_VID_SET_IMAGE_BITSPERPEL;
  1214. MCI_DGV_SET_IMAGE_PELFORMAT = MCI_VID_SET_IMAGE_PELFORMAT;
  1215. MCI_DGV_SET_BRIGHTNESS = MCI_VID_SET_BRIGHTNESS;
  1216. MCI_DGV_SET_CONTRAST = MCI_VID_SET_CONTRAST;
  1217. MCI_DGV_SET_HUE = MCI_VID_SET_HUE;
  1218. MCI_DGV_SET_SATURATION = MCI_VID_SET_SATURATION;
  1219. MCI_DGV_SET_SHARPNESS = MCI_VID_SET_SHARPNESS;
  1220. MCI_DGV_SET_GREYSCALE = MCI_VID_SET_GREYSCALE;
  1221. MCI_DGV_SET_IMAGE_QUALITY = MCI_VID_SET_IMAGE_QUALITY;
  1222. MCI_DGV_SET_VIDEO_QUALITY = MCI_VID_SET_VIDEO_QUALITY;
  1223. MCI_DGV_SET_IMAGE_COMPRESSION_METHOD = MCI_VID_SET_IMAGE_COMPRESSION_METHOD;
  1224. MCI_DGV_SET_MONITOR = MCI_SET_MONITOR;
  1225. MCI_DGV_SET_MINIMUM_VIDEO_REFRESH_RATE = MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE;
  1226. MCI_DGV_SET_IMAGE_FILE_FORMAT = MCI_VID_SET_IMAGE_FILE_FORMAT;
  1227. MCI_DGV_SET_REF_INTERVAL = MCI_VID_SET_REF_INTERVAL;
  1228. MCI_DGV_SET_MAXDATARATE = MCI_VID_SET_MAXDATARATE;
  1229. MCI_DGV_SET_VIDEO_FILE_FORMAT = MCI_VID_SET_VIDEO_FILE_FORMAT;
  1230. MCI_DGV_SET_AUDIO_COMPRESSION = MCI_DGV_ITEM_BASE;
  1231. MCI_DGV_SET_AUDIO_QUALITY = MCI_DGV_ITEM_BASE+1;
  1232. MCI_DGV_SET_CHANNELS = MCI_DGV_ITEM_BASE+2;
  1233. MCI_DGV_SET_BITSPERSAMPLE = MCI_DGV_ITEM_BASE+3;
  1234. MCI_DGV_SET_SAMPLESPERSEC = MCI_DGV_ITEM_BASE+4;
  1235. MCI_DGV_SET_FORMATTAG = MCI_DGV_ITEM_BASE+5;
  1236. MCI_DGV_SET_BLOCKALIGN = MCI_DGV_ITEM_BASE+6;
  1237. MCI_DGV_SET_AVGBYTESPERSEC = MCI_DGV_ITEM_BASE+7;
  1238. MCI_DGV_SET_VIDEO_COMPRESSION_SUBTYPE = MCI_DGV_ITEM_BASE+8;
  1239. MCI_DGV_SET_VIDEO_RECORD_RATE = MCI_DGV_ITEM_BASE+9;
  1240. MCI_DGV_SET_VIDEO_RECORD_FRAME_DURATION = MCI_DGV_ITEM_BASE+10;
  1241. MCI_DGV_SET_RECORD_AUDIO = MCI_DGV_ITEM_BASE+11;
  1242. MCI_DGV_SET_TRANSPARENT_COLOR = MCI_DGV_ITEM_BASE+12;
  1243. MCI_DGV_SET_GRAPHIC_TRANSPARENT_COLOR = MCI_DGV_ITEM_BASE+12;
  1244. MCI_DGV_SET_AUDIOSYNC = MCI_DGV_ITEM_BASE+13;
  1245. MCI_DGV_SET_VIDEO_TRANSPARENT_COLOR = MCI_DGV_ITEM_BASE+14;
  1246. //******************************************************/
  1247. // Video file format */
  1248. //******************************************************/
  1249. MCI_VID_FILE_FORMAT_AVI = $20495641;
  1250. //******************************************************/
  1251. // Audio/video/image compression types */
  1252. //******************************************************/
  1253. MCI_AUD_COMP_ADPCM4 = $00000001;
  1254. MCI_AUD_COMP_PCM8 = $00000002;
  1255. MCI_VID_COMP_RTV_2_0 = $00000101;
  1256. MCI_VID_COMP_RTV_2_1 = $00000102;
  1257. MCI_VID_COMP_ULTI = $49544C55;
  1258. MCI_VID_COMP_RT21 = $31325452;
  1259. MCI_VID_COMP_NONE = $20424944; // This is 'DIB ' now.
  1260. MCI_IMG_COMP_NONE = $00000201;
  1261. MCI_IMG_COMP_PIC9_1_0 = $00000202;
  1262. MCI_IMG_COMP_PIC16_1_0 = $00000203;
  1263. MCI_IMG_COMP_JPEG9 = $00000204;
  1264. MCI_IMG_COMP_JPEG9_1_0 = MCI_IMG_COMP_JPEG9;
  1265. MCI_IMG_COMP_BMP_RLE4 = $00000205;
  1266. MCI_IMG_COMP_BMP_RLE8 = $00000206;
  1267. MCI_IMG_COMP_JPEGN = $00000207;
  1268. //******************************************************/
  1269. // PEL Formats (video/image) */
  1270. //******************************************************/
  1271. MCI_VID_PALETTE = $00000001;
  1272. MCI_VID_RGB = $00000002;
  1273. MCI_VID_YUV = $00000003;
  1274. MCI_IMG_PALETTE = MCI_VID_PALETTE;
  1275. MCI_IMG_RGB = MCI_VID_RGB;
  1276. MCI_IMG_YUV = MCI_VID_YUV;
  1277. //******************************************************/
  1278. // Audio/video/image quality levels */
  1279. //******************************************************/
  1280. MCI_AUD_QUALITY_HIGH = $00000001;
  1281. MCI_AUD_QUALITY_MED = $00000002;
  1282. MCI_AUD_QUALITY_LOW = $00000003;
  1283. MCI_VID_QUALITY_HIGH = $00000101;
  1284. MCI_VID_QUALITY_MED = $00000102;
  1285. MCI_VID_QUALITY_LOW = $00000103;
  1286. MCI_VID_QUALITY_BEST = MCI_VID_QUALITY_HIGH;
  1287. MCI_VID_QUALITY_CDROM = MCI_VID_QUALITY_MED;
  1288. MCI_VID_QUALITY_COMPACT = MCI_VID_QUALITY_LOW;
  1289. MCI_VID_QUALITY_BETTER = MCI_VID_QUALITY_MED;
  1290. MCI_VID_QUALITY_GOOD = MCI_VID_QUALITY_LOW;
  1291. MCI_IMG_QUALITY_HIGH = $00000201;
  1292. MCI_IMG_QUALITY_MED = $00000202;
  1293. MCI_IMG_QUALITY_LOW = $00000203;
  1294. //******************************************************/
  1295. // MCI_SET flags for wave audio */
  1296. //******************************************************/
  1297. MCI_WAVE_SET_SAMPLESPERSEC = $01000000;
  1298. MCI_WAVE_SET_AVGBYTESPERSEC = $02000000;
  1299. MCI_WAVE_SET_BLOCKALIGN = $04000000;
  1300. MCI_WAVE_SET_FORMATTAG = $08000000;
  1301. MCI_WAVE_SET_CHANNELS = $10000000;
  1302. MCI_WAVE_SET_BITSPERSAMPLE = $80000000;
  1303. //******************************************************/
  1304. // Wave format tag defines */
  1305. //******************************************************/
  1306. MCI_WAVE_FORMAT_PCM = DATATYPE_WAVEFORM;
  1307. MCI_WAVE_FORMAT_ADPCM = $0002;
  1308. MCI_WAVE_FORMAT_IBM_CVSD = $0005;
  1309. MCI_WAVE_FORMAT_ALAW = DATATYPE_RIFF_ALAW;
  1310. MCI_WAVE_FORMAT_MULAW = DATATYPE_RIFF_MULAW;
  1311. MCI_WAVE_FORMAT_OKI_ADPCM = $0010;
  1312. MCI_WAVE_FORMAT_DVI_ADPCM = $0011;
  1313. MCI_WAVE_FORMAT_DIGISTD = $0015;
  1314. MCI_WAVE_FORMAT_DIGIFIX = $0016;
  1315. MCI_WAVE_FORMAT_AVC_ADPCM = DATATYPE_ADPCM_AVC;
  1316. MCI_WAVE_FORMAT_IBM_ADPCM = DATATYPE_ADPCM_AVC;
  1317. MCI_WAVE_FORMAT_IBM_MULAW = DATATYPE_MULAW;
  1318. MCI_WAVE_FORMAT_IBM_ALAW = DATATYPE_ALAW;
  1319. MCI_WAVE_FORMAT_CT_ADPCM = DATATYPE_CT_ADPCM;
  1320. MCI_WAVE_FORMAT_MPEG1 = DATATYPE_MPEG1AUDIO;
  1321. //******************************************************/
  1322. // MCI_SET flags for sequencer */
  1323. //******************************************************/
  1324. MCI_SEQ_SET_TEMPO = $00100000;
  1325. MCI_SEQ_SET_PORT = $00200000;
  1326. MCI_SEQ_ENABLE_PORT_MAPPER = $00400000;
  1327. MCI_SEQ_DISABLE_PORT_MAPPER = $00800000;
  1328. MCI_SEQ_SET_OFFSET = $01000000;
  1329. MCI_SEQ_SET_MASTER = $02000000;
  1330. MCI_SEQ_SET_SLAVE = $04000000;
  1331. //*********************************************/
  1332. // SEQ time formats */
  1333. //*********************************************/
  1334. MCI_SEQ_SET_SMPTE_24 = $00000100;
  1335. MCI_SEQ_SET_SMPTE_25 = $00000200;
  1336. MCI_SEQ_SET_SMPTE_30 = $00000300;
  1337. MCI_SEQ_SET_SMPTE_30DROP = $00000400;
  1338. MCI_SEQ_SET_SONGPTR = $00000500;
  1339. //*********************************************/
  1340. // SEQ synchronization types */
  1341. //*********************************************/
  1342. MCI_SEQ_MIDI = $00000001;
  1343. MCI_SEQ_SMPTE = $00000002;
  1344. MCI_SEQ_FILE = $00000003;
  1345. MCI_SEQ_NONE = $00000004;
  1346. //*********************************************/
  1347. // SEQ PORT TYPES */
  1348. //*********************************************/
  1349. MCI_SET_NONE = $10000000;
  1350. MIDI_MAPPER = $20000000;
  1351. MCI_MIDI_MAPPER = MIDI_MAPPER;
  1352. type
  1353. mci_Set_Parms = record
  1354. hwndCallback : hwnd; // PM window handle for MCI notify message
  1355. ulTimeFormat : Longint; // Time format to be used by the device
  1356. ulSpeedFormat : Longint; // Speed format used by this device
  1357. ulAudio : Longint; // Channel number for this operation
  1358. // (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,
  1359. // MCI_SET_AUDIO_ALL)
  1360. ulLevel : Longint; // Volume, treble or bass level as % of max.
  1361. ulOver : Longint; // Delay time for vectored change in millisecond
  1362. ulItem : Longint; // Item field for set item flags
  1363. ulValue : Longint; // Value associated with item flag
  1364. end;
  1365. pmci_Set_Parms = ^mci_Set_Parms;
  1366. mci_Amp_Set_Parms = mci_Set_Parms;
  1367. pmci_Amp_Set_Parms = ^mci_Amp_Set_Parms;
  1368. mci_DGV_Set_Parms = mci_Set_Parms;
  1369. pmci_DGV_Set_Parms = ^mci_DGV_Set_Parms;
  1370. mci_Ovly_Set_Parms = mci_Set_Parms;
  1371. pmci_Ovly_Set_Parms = ^mci_Ovly_Set_Parms;
  1372. mci_CDXA_Set_Parms = record
  1373. hwndCallback : hwnd; // PM window handle for MCI notify message
  1374. ulTimeFormat : Longint; // Time format to be used by the device
  1375. ulSpeedFormat : Longint; // Speed format used by this device
  1376. ulAudio : Longint; // Channel number for this operation
  1377. // (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,
  1378. // MCI_SET_AUDIO_ALL)
  1379. ulLevel : Longint; // Volume, treble or bass level as % of max.
  1380. ulOver : Longint; // Delay time for vectored change in milliseconds
  1381. ulItem : Longint; // Item field for set item flags
  1382. ulValue : Longint; // Value associated with item flag
  1383. ulChannel : Longint; // Channel number
  1384. pPlayList : Pointer; // Pointer to play list
  1385. ulPlayListSize : Longint; // Play list size
  1386. end;
  1387. pmci_CDXA_Set_Parms = ^mci_CDXA_Set_Parms;
  1388. mci_VD_Set_Parms = record
  1389. hwndCallback : hwnd; // PM window handle for MCI notify message
  1390. ulTimeFormat : LongInt; // Time format to be used by the device
  1391. ulSpeedFormat : LongInt; // Speed format used by this device
  1392. ulAudio : LongInt; // Channel number for this operation
  1393. // (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,
  1394. // MCI_SET_AUDIO_ALL)
  1395. ulLevel : LongInt; // Volume, treble or bass level as % of max.
  1396. ulOver : LongInt; // Delay time for vectored change in milliseconds
  1397. ulItem : LongInt; // Item field for set item flags
  1398. ulValue : LongInt; // Value associated with item flag
  1399. ulChannel : LongInt; // Videodisc channel
  1400. end;
  1401. pmci_VD_Set_Parms = ^mci_VD_Set_Parms;
  1402. mci_Wave_Set_Parms = record
  1403. hwndCallback : hwnd; // PM window handle for MCI notify message
  1404. ulTimeFormat : Longint; // Time format to be used by the device
  1405. ulSpeedFormat : Longint; // Speed format used by this device
  1406. ulAudio : Longint; // Channel number for this operation
  1407. // (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,
  1408. // MCI_SET_AUDIO_ALL)
  1409. ulLevel : Longint; // Volume, trebble or bass level as % of max.
  1410. ulOver : Longint; // Delay time for vectored change in milliseconds
  1411. ulItem : Longint; // Item field for set item flags
  1412. ulValue : Longint; // Value associated with item flag
  1413. usInput : Integer; // Channel for input
  1414. usReserved0 : Integer; // Reserved field
  1415. usOutput : Integer; // Channel for output
  1416. usReserved1 : Integer; // Reserved field
  1417. usFormatTag : Integer; // Format tag
  1418. usReserved2 : Integer; // Reserved field
  1419. usChannels : Integer; // mono(1) or stereo(2)
  1420. usReserved3 : Integer; // Reserved field
  1421. ulSamplesPerSec : Longint; // Samples per seconds
  1422. ulAvgBytesPerSec : LongInt; // Bytes per seconds
  1423. usBlockAlign : Integer; // Block alignment of data
  1424. usReserved4 : Integer; // Reserved field
  1425. usBitsPerSample : Integer; // Bits per seconds
  1426. usReserved5 : Integer; // Reserved field
  1427. end;
  1428. pmci_Wave_Set_Parms = ^mci_Wave_Set_Parms;
  1429. mci_Seq_Set_Parms = record
  1430. hwndCallback : hwnd; // PM window handle for MCI notify message
  1431. ulTimeFormat : Longint; // Time format to be used by the device
  1432. ulSpeedFormat : Longint; // Speed format used by this device
  1433. ulAudio : Longint; // Channel number for this operation
  1434. // (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,
  1435. // MCI_SET_AUDIO_ALL)
  1436. ulLevel : Longint; // Volume, trebble or bass level as % of max.
  1437. ulOver : Longint; // Delay time for vectored change in millisecond
  1438. ulItem : Longint; // Item field for set item flags
  1439. ulValue : Longint; // Value associated with item flag
  1440. ulTempo : Longint; // Specified the tempo
  1441. ulPort : Longint; // Output port
  1442. ulSlave : Longint; // Unused field
  1443. ulMaster : Longint; // Unused field
  1444. ulOffset : Longint; // Specified the data offset
  1445. end;
  1446. pmci_Seq_Set_Parms = ^mci_Seq_Set_Parms;
  1447. //********************************************************************/
  1448. // parameters for the MCI_SET_CUEPOINT message */
  1449. // 0x00000x00 are reserved for MCI_SET_CUEPOINT flags */
  1450. //********************************************************************/
  1451. CONST
  1452. MCI_SET_CUEPOINT_ON = $00000100;
  1453. MCI_SET_CUEPOINT_OFF = $00000200;
  1454. type
  1455. mci_CuePoint_Parms = record
  1456. hwndCallback : hwnd; // PM window handle for MCI notify message
  1457. ulCuepoint : Longint; // Specifies the cuepoint location
  1458. usUserParm : Integer; // User parmameter returned on cuepoint
  1459. // notify message
  1460. usReserved0 : Integer; // Reserved field
  1461. end;
  1462. pmci_CuePoint_Parms = ^mci_CuePoint_Parms;
  1463. //********************************************************************/
  1464. // parameters for the MCI_SETIMAGEPALETTE message */
  1465. // 0x000XXX00 are reserved for MCI_SETIMAGEPALETTE flags */
  1466. //********************************************************************/
  1467. CONST
  1468. MCI_SET_REGISTERED = $00000100;
  1469. //********************************************************************/
  1470. // flags and parameter structure for the MCI_SET_POSITION_ADVISE msg */
  1471. // 0x00000X00 are reserved for MCI_SET_POSITION_ADVISE flags */
  1472. //********************************************************************/
  1473. MCI_SET_POSITION_ADVISE_ON = $00000100;
  1474. MCI_SET_POSITION_ADVISE_OFF = $00000200;
  1475. type
  1476. mci_Position_Parms = record
  1477. hwndCallback : hwnd; // PM window handle for MCI notify message
  1478. ulUnits : Longint; // Specifies position change notifiication
  1479. // granularity
  1480. usUserParm : Integer; // User parameter returned on position change
  1481. // notification message.
  1482. Reserved0 : Integer; // Reserved field
  1483. Reserved1 : LongInt; // Reserved field
  1484. end;
  1485. pmci_Position_Parms = ^mci_Position_Parms;
  1486. //********************************************************************/
  1487. // parameter structure for the MCI_SET_SYNC_OFFSET message */
  1488. //********************************************************************/
  1489. mci_Sync_Offset_Parms = record
  1490. hwndCallback : hwnd; // PM window handle for MCI notify message
  1491. ulOffset : LongInt; // Specifies the device media position offset
  1492. // in the currently specified device units.
  1493. end;
  1494. pmci_Sync_Offset_Parms = ^mci_Sync_Offset_Parms;
  1495. //********************************************************************/
  1496. // flags for the MCI_SPIN message */
  1497. // 0x00000X00 are reserved for MCI_SPIN flags */
  1498. //********************************************************************/
  1499. CONST
  1500. MCI_SPIN_UP = $00000100;
  1501. MCI_SPIN_DOWN = $00000200;
  1502. //********************************************************************/
  1503. // MCI_STATUS message flags */
  1504. // 0x000XXX00 are reserved for MCI_STATUS flags */
  1505. // MCI_VOLUME and MCI_VOLUME_DELAY are 0x00000100 and 0x00000200 */
  1506. //********************************************************************/
  1507. MCI_STATUS_ITEM = $00000100;
  1508. MCI_STATUS_START = $00000200;
  1509. MCI_STATUS_CONNECTOR = $00000400;
  1510. //************************************************/
  1511. // General MCI_STATUS item values */
  1512. //************************************************/
  1513. MCI_STATUS_CURRENT_TRACK = $00000001;
  1514. MCI_STATUS_LENGTH = $00000002;
  1515. MCI_STATUS_MODE = $00000003;
  1516. MCI_STATUS_NUMBER_OF_TRACKS = $00000004;
  1517. MCI_STATUS_POSITION = $00000005;
  1518. MCI_STATUS_POSITION_IN_TRACK = $00000006;
  1519. MCI_STATUS_MEDIA_PRESENT = $00000007;
  1520. MCI_STATUS_VOLUME = $00000008;
  1521. MCI_STATUS_READY = $00000009;
  1522. MCI_STATUS_TIME_FORMAT = $0000000A;
  1523. MCI_STATUS_SPEED_FORMAT = $0000000B;
  1524. MCI_STATUS_MONITOR = $0000000C;
  1525. MCI_STATUS_AUDIO = $0000000D;
  1526. MCI_STATUS_VIDEO = $0000000E;
  1527. MCI_STATUS_CLIPBOARD = $0000000F;
  1528. MCI_STATUS_CAN_PASTE = $00000010;
  1529. MCI_STATUS_CAN_REDO = $00000020;
  1530. MCI_STATUS_CAN_UNDO = $00000030;
  1531. //************************************************/
  1532. // ulValue field values for MCI_STATUS_AUDIO */
  1533. //************************************************/
  1534. MCI_STATUS_AUDIO_ALL = $00000000;
  1535. MCI_STATUS_AUDIO_LEFT = $00000001;
  1536. MCI_STATUS_AUDIO_RIGHT = $00000002;
  1537. //************************************************/
  1538. // MCI_STATUS item values for amp/mixer */
  1539. //************************************************/
  1540. MCI_AMP_STATUS_PITCH = MCI_AMP_ITEM_BASE;
  1541. MCI_AMP_STATUS_TREBLE = MCI_AMP_ITEM_BASE+1;
  1542. MCI_AMP_STATUS_BASS = MCI_AMP_ITEM_BASE+2;
  1543. MCI_AMP_STATUS_BALANCE = MCI_AMP_ITEM_BASE+3;
  1544. MCI_AMP_STATUS_GAIN = MCI_AMP_ITEM_BASE+4;
  1545. MCI_AMP_STATUS_MONITOR = MCI_AMP_ITEM_BASE+5;
  1546. MCI_AMP_STATUS_MID = MCI_AMP_ITEM_BASE+6;
  1547. MCI_AMP_STATUS_VOLUME = MCI_STATUS_VOLUME;
  1548. MCI_AMP_STATUS_LOUDNESS = MCI_AMP_ITEM_BASE+7;
  1549. MCI_AMP_STATUS_CROSSOVER = MCI_AMP_ITEM_BASE+8;
  1550. MCI_AMP_STATUS_REVERB = MCI_AMP_ITEM_BASE+9;
  1551. MCI_AMP_STATUS_ALC = MCI_AMP_ITEM_BASE+10;
  1552. MCI_AMP_STATUS_CHORUS = MCI_AMP_ITEM_BASE+11;
  1553. MCI_AMP_STATUS_CUSTOM1 = MCI_AMP_ITEM_BASE+12;
  1554. MCI_AMP_STATUS_CUSTOM2 = MCI_AMP_ITEM_BASE+13;
  1555. MCI_AMP_STATUS_CUSTOM3 = MCI_AMP_ITEM_BASE+14;
  1556. MCI_AMP_STATUS_MUTE = MCI_AMP_ITEM_BASE+15;
  1557. MCI_AMP_STATUS_STEREOENHANCE = MCI_AMP_ITEM_BASE+16;
  1558. //************************************************/
  1559. // MCI_STATUS item values for cd audio */
  1560. //************************************************/
  1561. MCI_CD_STATUS_TRACK_TYPE = MCI_CD_ITEM_BASE;
  1562. MCI_CD_STATUS_TRACK_COPYPERMITTED = MCI_CD_ITEM_BASE+1;
  1563. MCI_CD_STATUS_TRACK_CHANNELS = MCI_CD_ITEM_BASE+2;
  1564. MCI_CD_STATUS_TRACK_PREEMPHASIS = MCI_CD_ITEM_BASE+3;
  1565. //***********************************************/
  1566. // return values for CD MCI_STATUS message with */
  1567. // MCI_CD_STATUS_TRACK_TYPE set */
  1568. //***********************************************/
  1569. MCI_CD_TRACK_AUDIO = $00000001;
  1570. MCI_CD_TRACK_DATA = $00000002;
  1571. MCI_CD_TRACK_OTHER = $00000003;
  1572. //************************************************/
  1573. // MCI_STATUS item values for CDXA */
  1574. //************************************************/
  1575. MCI_CDXA_STATUS_CHANNEL = MCI_CDXA_ITEM_BASE;
  1576. //***********************************************/
  1577. //returned from call for MCI_CDXA_STATUS_CHANNEL*/
  1578. //***********************************************/
  1579. MCI_CDXA_NONE = $00000000;
  1580. //************************************************/
  1581. // MCI_STATUS item values for sequencer */
  1582. //************************************************/
  1583. MCI_SEQ_STATUS_TEMPO = MCI_SEQ_ITEM_BASE;
  1584. MCI_SEQ_STATUS_OFFSET = MCI_SEQ_ITEM_BASE+1;
  1585. MCI_SEQ_STATUS_DIVTYPE = MCI_SEQ_ITEM_BASE+2;
  1586. MCI_SEQ_STATUS_MASTER = MCI_SEQ_ITEM_BASE+3;
  1587. MCI_SEQ_STATUS_PORT = MCI_SEQ_ITEM_BASE+4;
  1588. MCI_SEQ_STATUS_SLAVE = MCI_SEQ_ITEM_BASE+5;
  1589. //*********************************************/
  1590. // Return value for current division type */
  1591. //*********************************************/
  1592. MCI_SEQ_DIV_PPQN = $00000001;
  1593. MCI_SEQ_DIV_SMPTE_24 = $00000002;
  1594. MCI_SEQ_DIV_SMPTE_25 = $00000003;
  1595. MCI_SEQ_DIV_SMPTE_30DROP = $00000004;
  1596. MCI_SEQ_DIV_SMPTE_30 = $00000005;
  1597. //************************************************/
  1598. // MCI_STATUS items for videodisc */
  1599. //************************************************/
  1600. MCI_VD_STATUS_SPEED = MCI_VD_ITEM_BASE;
  1601. MCI_VD_STATUS_FORWARD = MCI_VD_ITEM_BASE+1;
  1602. MCI_VD_MEDIA_TYPE = MCI_VD_ITEM_BASE+2;
  1603. MCI_VD_STATUS_SIDE = MCI_VD_ITEM_BASE+3;
  1604. MCI_VD_STATUS_DISC_SIZE = MCI_VD_ITEM_BASE+4;
  1605. //**********************************************/
  1606. // return values for videodisc status command */
  1607. //**********************************************/
  1608. MCI_VD_SPEED_NORMAL = $00000000;
  1609. MCI_VD_SPEED_FAST = $00000001;
  1610. MCI_VD_SPEED_SLOW = $00000002;
  1611. //************************************************/
  1612. // MCI_STATUS items for wave audio */
  1613. //************************************************/
  1614. MCI_WAVE_STATUS_LEVEL = MCI_WAVE_ITEM_BASE;
  1615. MCI_WAVE_STATUS_SAMPLESPERSEC = MCI_WAVE_ITEM_BASE+1;
  1616. MCI_WAVE_STATUS_AVGBYTESPERSEC = MCI_WAVE_ITEM_BASE+2;
  1617. MCI_WAVE_STATUS_BLOCKALIGN = MCI_WAVE_ITEM_BASE+3;
  1618. MCI_WAVE_STATUS_FORMATTAG = MCI_WAVE_ITEM_BASE+4;
  1619. MCI_WAVE_STATUS_CHANNELS = MCI_WAVE_ITEM_BASE+5;
  1620. MCI_WAVE_STATUS_BITSPERSAMPLE = MCI_WAVE_ITEM_BASE+6;
  1621. //************************************************/
  1622. // Common video MCI_STATUS items */
  1623. //************************************************/
  1624. MCI_VID_STATUS_hwnd = MCI_VID_ITEM_BASE;
  1625. MCI_VID_STATUS_AUDIO_COMPRESSION = MCI_VID_ITEM_BASE+1;
  1626. MCI_VID_STATUS_VIDEO_COMPRESSION = MCI_VID_ITEM_BASE+2;
  1627. MCI_VID_STATUS_IMAGE_COMPRESSION = MCI_VID_ITEM_BASE+3;
  1628. MCI_VID_STATUS_AUDIO_QUALITY = MCI_VID_ITEM_BASE+4;
  1629. MCI_VID_STATUS_VIDEO_QUALITY = MCI_VID_ITEM_BASE+5;
  1630. MCI_VID_STATUS_IMAGE_QUALITY = MCI_VID_ITEM_BASE+6;
  1631. MCI_VID_STATUS_IMAGE_BITSPERPEL = MCI_VID_ITEM_BASE+7;
  1632. MCI_VID_STATUS_IMAGE_PELFORMAT = MCI_VID_ITEM_BASE+8;
  1633. MCI_VID_STATUS_FORWARD = MCI_VID_ITEM_BASE+9;
  1634. MCI_VID_STATUS_NORMAL_RATE = MCI_VID_ITEM_BASE+10;
  1635. MCI_VID_STATUS_VIDEO_X_EXTENT = MCI_VID_ITEM_BASE+11;
  1636. MCI_VID_STATUS_VIDEO_Y_EXTENT = MCI_VID_ITEM_BASE+12;
  1637. MCI_VID_STATUS_IMAGE_X_EXTENT = MCI_VID_ITEM_BASE+13;
  1638. MCI_VID_STATUS_IMAGE_Y_EXTENT = MCI_VID_ITEM_BASE+14;
  1639. MCI_VID_STATUS_BRIGHTNESS = MCI_VID_ITEM_BASE+15;
  1640. MCI_VID_STATUS_CONTRAST = MCI_VID_ITEM_BASE+16;
  1641. MCI_VID_STATUS_HUE = MCI_VID_ITEM_BASE+17;
  1642. MCI_VID_STATUS_SATURATION = MCI_VID_ITEM_BASE+18;
  1643. MCI_VID_STATUS_GREYSCALE = MCI_VID_ITEM_BASE+19;
  1644. MCI_VID_STATUS_SHARPNESS = MCI_VID_ITEM_BASE+20;
  1645. MCI_VID_STATUS_SPEED = MCI_VID_ITEM_BASE+21;
  1646. MCI_VID_STATUS_IMAGE_FILE_FORMAT = MCI_VID_ITEM_BASE+22;
  1647. MCI_VID_STATUS_TRANSPARENT_TYPE = MCI_VID_ITEM_BASE+23;
  1648. MCI_VID_STATUS_REF_INTERVAL = MCI_VID_ITEM_BASE+24;
  1649. MCI_VID_STATUS_MAXDATARATE = MCI_VID_ITEM_BASE+25;
  1650. MCI_VID_STATUS_VIDEO_FILE_FORMAT = MCI_VID_ITEM_BASE+26;
  1651. //************************************************/
  1652. // Status Transparent Type returns */
  1653. // MCI_VID_PALETTE */
  1654. // MCI_VID_RGB */
  1655. // MCI_VID_YUV */
  1656. //************************************************/
  1657. MCI_VID_STATUS_TRANSPARENT_COLOR = MCI_VID_ITEM_BASE+24;
  1658. //************************************************/
  1659. // MCI_STATUS items for digital video */
  1660. //************************************************/
  1661. MCI_DGV_STATUS_hwnd = MCI_VID_STATUS_hwnd;
  1662. MCI_DGV_STATUS_AUDIO_COMPRESSION = MCI_VID_STATUS_AUDIO_COMPRESSION;
  1663. MCI_DGV_STATUS_VIDEO_COMPRESSION = MCI_VID_STATUS_VIDEO_COMPRESSION;
  1664. MCI_DGV_STATUS_IMAGE_COMPRESSION = MCI_VID_STATUS_IMAGE_COMPRESSION;
  1665. MCI_DGV_STATUS_AUDIO_QUALITY = MCI_VID_STATUS_AUDIO_QUALITY;
  1666. MCI_DGV_STATUS_VIDEO_QUALITY = MCI_VID_STATUS_VIDEO_QUALITY;
  1667. MCI_DGV_STATUS_IMAGE_QUALITY = MCI_VID_STATUS_IMAGE_QUALITY;
  1668. MCI_DGV_STATUS_IMAGE_BITSPERPEL = MCI_VID_STATUS_IMAGE_BITSPERPEL;
  1669. MCI_DGV_STATUS_IMAGE_PELFORMAT = MCI_VID_STATUS_IMAGE_PELFORMAT;
  1670. MCI_DGV_STATUS_FORWARD = MCI_VID_STATUS_FORWARD;
  1671. MCI_DGV_STATUS_NORMAL_RATE = MCI_VID_STATUS_NORMAL_RATE;
  1672. MCI_DGV_STATUS_VIDEO_X_EXTENT = MCI_VID_STATUS_VIDEO_X_EXTENT;
  1673. MCI_DGV_STATUS_VIDEO_Y_EXTENT = MCI_VID_STATUS_VIDEO_Y_EXTENT;
  1674. MCI_DGV_STATUS_IMAGE_X_EXTENT = MCI_VID_STATUS_IMAGE_X_EXTENT;
  1675. MCI_DGV_STATUS_IMAGE_Y_EXTENT = MCI_VID_STATUS_IMAGE_Y_EXTENT;
  1676. MCI_DGV_STATUS_BRIGHTNESS = MCI_VID_STATUS_BRIGHTNESS;
  1677. MCI_DGV_STATUS_CONTRAST = MCI_VID_STATUS_CONTRAST;
  1678. MCI_DGV_STATUS_HUE = MCI_VID_STATUS_HUE;
  1679. MCI_DGV_STATUS_SATURATION = MCI_VID_STATUS_SATURATION;
  1680. MCI_DGV_STATUS_SPEED = MCI_VID_STATUS_SPEED;
  1681. MCI_DGV_STATUS_SHARPNESS = MCI_VID_STATUS_SHARPNESS;
  1682. MCI_DGV_STATUS_REF_INTERVAL = MCI_VID_STATUS_REF_INTERVAL;
  1683. MCI_DGV_STATUS_MAXDATARATE = MCI_VID_STATUS_MAXDATARATE;
  1684. MCI_DGV_STATUS_VIDEO_FILE_FORMAT = MCI_VID_STATUS_VIDEO_FILE_FORMAT;
  1685. MCI_DGV_STATUS_CHANNELS = MCI_DGV_ITEM_BASE+13;
  1686. MCI_DGV_STATUS_BITSPERSAMPLE = MCI_DGV_ITEM_BASE+14;
  1687. MCI_DGV_STATUS_SAMPLESPERSEC = MCI_DGV_ITEM_BASE+15;
  1688. MCI_DGV_STATUS_FORMATTAG = MCI_DGV_ITEM_BASE+16;
  1689. MCI_DGV_STATUS_BLOCKALIGN = MCI_DGV_ITEM_BASE+17;
  1690. MCI_DGV_STATUS_AVGBYTESPERSEC = MCI_DGV_ITEM_BASE+18;
  1691. MCI_DGV_STATUS_VIDEO_COMPRESSION_SUBTYPE = MCI_DGV_ITEM_BASE+19;
  1692. MCI_DGV_STATUS_VIDEO_RECORD_RATE = MCI_DGV_ITEM_BASE+20;
  1693. MCI_DGV_STATUS_VIDEO_RECORD_FRAME_DURATION = MCI_DGV_ITEM_BASE+21;
  1694. MCI_DGV_STATUS_RECORD_AUDIO = MCI_DGV_ITEM_BASE+22;
  1695. MCI_DGV_STATUS_TRANSPARENT_COLOR = MCI_DGV_ITEM_BASE+23;
  1696. MCI_DGV_STATUS_GRAPHIC_TRANSPARENT_COLOR = MCI_DGV_ITEM_BASE+23; // MUST BE SAME AS TRANSPARENT COLOR
  1697. MCI_DGV_STATUS_hwnd_MONITOR = MCI_DGV_ITEM_BASE+24;
  1698. MCI_DGV_STATUS_DROPPED_FRAME_PCT = MCI_DGV_ITEM_BASE+25;
  1699. MCI_DGV_STATUS_AUDIOSYNC = MCI_DGV_ITEM_BASE+26;
  1700. MCI_DGV_STATUS_AUDIOSYNC_DIRECTION = MCI_DGV_ITEM_BASE+27;
  1701. MCI_DGV_STATUS_VIDEO_TRANSPARENT_COLOR = MCI_DGV_ITEM_BASE+28; // MUST BE SAME AS TRANSPARENT COLOR
  1702. MCI_DGV_STATUS_TUNER_TV_CHANNEL = MCI_DGV_ITEM_BASE+29;
  1703. MCI_DGV_STATUS_TUNER_LOW_TV_CHANNEL = MCI_DGV_ITEM_BASE+29;
  1704. MCI_DGV_STATUS_TUNER_HIGH_TV_CHANNEL = MCI_DGV_ITEM_BASE+29;
  1705. MCI_DGV_STATUS_TUNER_REGION = MCI_DGV_ITEM_BASE+30;
  1706. MCI_DGV_STATUS_TUNER_FINETUNE = MCI_DGV_ITEM_BASE+31;
  1707. MCI_DGV_STATUS_TUNER_FREQUENCY = MCI_DGV_ITEM_BASE+32;
  1708. MCI_DGV_STATUS_TUNER_AUDIO_CHANNEL = MCI_DGV_ITEM_BASE+33;
  1709. MCI_DGV_STATUS_TUNER_AFC = MCI_DGV_ITEM_BASE+34;
  1710. MCI_DGV_STATUS_VALID_SIGNAL = MCI_DGV_ITEM_BASE+35;
  1711. //************************************************/
  1712. // MCI_STATUS item values for video overlay */
  1713. //************************************************/
  1714. MCI_OVLY_STATUS_hwnd = MCI_VID_STATUS_hwnd;
  1715. MCI_OVLY_STATUS_IMAGE_COMPRESSION = MCI_VID_STATUS_IMAGE_COMPRESSION;
  1716. MCI_OVLY_STATUS_IMAGE_BITSPERPEL = MCI_VID_STATUS_IMAGE_BITSPERPEL;
  1717. MCI_OVLY_STATUS_IMAGE_PELFORMAT = MCI_VID_STATUS_IMAGE_PELFORMAT;
  1718. MCI_OVLY_STATUS_IMAGE_X_EXTENT = MCI_VID_STATUS_IMAGE_X_EXTENT;
  1719. MCI_OVLY_STATUS_IMAGE_Y_EXTENT = MCI_VID_STATUS_IMAGE_Y_EXTENT;
  1720. MCI_OVLY_STATUS_BRIGHTNESS = MCI_VID_STATUS_BRIGHTNESS;
  1721. MCI_OVLY_STATUS_CONTRAST = MCI_VID_STATUS_CONTRAST;
  1722. MCI_OVLY_STATUS_HUE = MCI_VID_STATUS_HUE;
  1723. MCI_OVLY_STATUS_SATURATION = MCI_VID_STATUS_SATURATION;
  1724. MCI_OVLY_STATUS_GREYSCALE = MCI_VID_STATUS_GREYSCALE;
  1725. MCI_OVLY_STATUS_IMAGE_QUALITY = MCI_VID_STATUS_IMAGE_QUALITY;
  1726. MCI_OVLY_STATUS_SHARPNESS = MCI_VID_STATUS_SHARPNESS;
  1727. MCI_OVLY_STATUS_IMAGE_FILE_FORMAT = MCI_VID_STATUS_IMAGE_FILE_FORMAT;
  1728. MCI_OVLY_STATUS_TRANSPARENT_TYPE = MCI_VID_STATUS_TRANSPARENT_TYPE;
  1729. MCI_OVLY_STATUS_TRANSPARENT_COLOR = MCI_VID_STATUS_TRANSPARENT_COLOR;
  1730. //************************************************/
  1731. // Status Mode return values */
  1732. //************************************************/
  1733. MCI_MODE_NOT_READY = $00000001;
  1734. MCI_MODE_PAUSE = $00000002;
  1735. MCI_MODE_PLAY = $00000003;
  1736. MCI_MODE_STOP = $00000004;
  1737. MCI_MODE_RECORD = $00000005;
  1738. MCI_MODE_SEEK = $00000006;
  1739. //************************************************/
  1740. // Status Direction return values */
  1741. //************************************************/
  1742. MCI_FORWARD = $00000000;
  1743. MCI_REVERSE = $00000001;
  1744. type
  1745. mci_Status_Parms = record
  1746. hwndCallback : hwnd; // PM window handle for MCI notify message
  1747. ulReturn : LongInt; // Return field
  1748. ulItem : LongInt; // Item field for STATUS item to query
  1749. ulValue : LongInt; // Status value field (this used to be)
  1750. // ulTrack but was changed in Rel 1.1
  1751. // to extend the status structure.
  1752. // See the programming reference on when
  1753. // ulValue is used and how...
  1754. end;
  1755. pmci_Status_Parms = ^mci_Status_Parms;
  1756. mci_CDXA_Status_Parms = record
  1757. hwndCallback : hwnd; // PM window handle for MCI notify message
  1758. ulReturn : LongInt; // Return field
  1759. ulItem : LongInt; // Item field for STATUS item to query
  1760. ulValue : LongInt; // Status value field (this used to be)
  1761. // ulTrack but was changed in Rel 1.1
  1762. // to extend the status structure.
  1763. // See the programming reference on when
  1764. // ulValue is used and how...
  1765. ulChannel : LongInt; // Channel
  1766. end;
  1767. pmci_CDXA_Status_Parms = ^mci_CDXA_Status_Parms;
  1768. //********************************************************************/
  1769. // flags and parameter structure for the MCI_STEP message */
  1770. // 0x00000X00 are reserved for MCI_STEP flags */
  1771. //********************************************************************/
  1772. CONST
  1773. MCI_STEP_FRAMES = $00000100;
  1774. MCI_STEP_REVERSE = $00000200;
  1775. type
  1776. mci_Step_Parms = record
  1777. hwndCallback : hwnd; // PM window handle for MCI notify message
  1778. ulStep : LongInt; // amount to step in current time format
  1779. end;
  1780. pmci_Step_Parms = ^mci_Step_Parms;
  1781. //********************************************************************/
  1782. // flags for the MCI_SYSINFO message */
  1783. // 0xXXXXXX00 are reserved for MCI_SYSINFO flags */
  1784. //********************************************************************/
  1785. CONST
  1786. MCI_SYSINFO_QUANTITY = $00000100;
  1787. MCI_SYSINFO_OPEN = $00000200;
  1788. MCI_SYSINFO_NAME = $00000400;
  1789. MCI_SYSINFO_INSTALLNAME = $00000800;
  1790. MCI_SYSINFO_ITEM = $00001000;
  1791. MCI_SYSINFO_INI_LOCK = $00002000;
  1792. //*******************************************************/
  1793. // Extended SYSINFO functions */
  1794. //*******************************************************/
  1795. MCI_SYSINFO_INSTALL_DRIVER = $00000001;
  1796. MCI_SYSINFO_QUERY_DRIVER = $00000002;
  1797. MCI_SYSINFO_DELETE_DRIVER = $00000004;
  1798. MCI_SYSINFO_SET_PARAMS = $00000008;
  1799. MCI_SYSINFO_QUERY_PARAMS = $00000010;
  1800. MCI_SYSINFO_SET_CONNECTORS = $00000020;
  1801. MCI_SYSINFO_QUERY_CONNECTORS = $00000040;
  1802. MCI_SYSINFO_SET_EXTENSIONS = $00000080;
  1803. MCI_SYSINFO_QUERY_EXTENSIONS = $00000100;
  1804. MCI_SYSINFO_SET_ALIAS = $00000200;
  1805. MCI_SYSINFO_QUERY_NAMES = $00000400;
  1806. MCI_SYSINFO_SET_DEFAULT = $00000800;
  1807. MCI_SYSINFO_QUERY_DEFAULT = $00001000;
  1808. MCI_SYSINFO_SET_TYPES = $00002000;
  1809. MCI_SYSINFO_QUERY_TYPES = $00004000;
  1810. //*******************************************************/
  1811. // Device Flags */
  1812. //*******************************************************/
  1813. MCI_SYSINFO_DEV_CONTROLLABLE = $00000001;
  1814. MCI_SYSINFO_DEV_NONCONTROLLABLE = $00000002;
  1815. MCI_SYSINFO_DEVICESETTINGS = $00000004;
  1816. //********************************************************************/
  1817. // parameter structures for the MCI_SYSINFO message */
  1818. //********************************************************************/
  1819. TYPE
  1820. MaxDevNameChar = array [0..Max_Device_Name-1] of CHAR;
  1821. MaxVerNumChar = array [0..Max_Version_Number-1] of CHAR;
  1822. MaxProdInfChar = array [0..Max_ProdInfo-1] of CHAR;
  1823. MaxPddNameChar = array [0..Max_Pdd_Name-1] of CHAR;
  1824. MaxClsShort = array [0..Max_Classes-1] of integer;
  1825. MaxClsShort2 = array [0..Max_Classes-1,0..Max_Classes-1] of integer;
  1826. MaxDevParmChar = array [0..Max_Dev_Params-1] of CHAR;
  1827. mci_SysInfo_Parms = record
  1828. hwndDummyCallback : hwnd; // NOTIFY not allowed for SYSINFO
  1829. pszReturn : pChar; // Pointer to return buffer
  1830. ulRetSize : LongInt; // Return buffer size
  1831. ulNumber : LongInt; // Ordinal Number
  1832. usDeviceType : Integer; // MCI device type number
  1833. usReserved0 : Integer; // Reserved field
  1834. ulItem : LongInt; // Used to indicate the MCI_SYSINFO
  1835. pSysInfoParm : Pointer; // extended function to perform
  1836. end;
  1837. pmci_SysInfo_Parms = ^mci_SysInfo_Parms;
  1838. mci_SysInfo_LogDevice = packed record
  1839. szInstallName : MaxDevNameChar; // Device install name
  1840. usDeviceType : Integer; // Device type number
  1841. ulDeviceFlag : Longint; // Flag indicating whether device
  1842. // device is controllable or not
  1843. szVersionNumber : MaxVerNumChar; // INI file version number
  1844. szProductInfo : MaxProdInfChar; // Textual product description
  1845. szMCDDriver : MaxDevNameChar; // MCI Driver dll name
  1846. szVSDDriver : MaxDevNameChar; // VSD dll name
  1847. szPDDName : MaxPddNameChar; // Device PDD name
  1848. szMCDTable : MaxDevNameChar; // Device type command table
  1849. szVSDTable : MaxDevNameChar; // Device specific command table
  1850. usShareType : Integer; // Device sharing mode
  1851. szResourceName : MaxDevNameChar; // Resource name
  1852. usResourceUnits : Integer; // Total resource units available
  1853. // for this device
  1854. usResourceClasses : Integer; // Number of resource classes for
  1855. // this device
  1856. ausClassArray : MaxClsShort; // Maximum number of resource
  1857. // units for each class
  1858. ausValidClassArray : MaxClsShort2; // Valid class combinations
  1859. end;
  1860. pmci_SysInfo_LogDevice = ^mci_SysInfo_LogDevice;
  1861. mci_SysInfo_DevParams = record
  1862. szInstallName : MaxDevNameChar; // Device install name
  1863. szDevParams : MaxDevParmChar; // Device specific parameters
  1864. end;
  1865. pmci_SysInfo_DevParams = ^mci_SysInfo_DevParams;
  1866. type
  1867. Connect = record
  1868. usConnectType : Integer; // Connector type
  1869. szToInstallName : MaxDevNameChar; // Install name this connector
  1870. // is connected to
  1871. usToConnectIndex : Integer; // Connector index this connector
  1872. // is connected to
  1873. end;
  1874. pConnect = ^Connect;
  1875. MaxCnctCnct = array[0..MAX_CONNECTORS-1] of Connect;
  1876. MaxExtChar2 = array[0..MAX_EXTENSIONS-1,0..MAX_EXTENSION_NAME-1] of CHAR;
  1877. MaxAliasNameChar = array[0..Max_Alias_Name-1] of Char;
  1878. MaxTypeBufChar = array[0..Max_TypeBuffer] of Char;
  1879. mci_SysInfo_ConParams = record
  1880. szInstallName : MaxDevNameChar; // Device install name
  1881. usNumConnectors : Integer; // Number of device connectors
  1882. ConnectorList : MaxCnctCnct; // Connector list array
  1883. end;
  1884. pmci_SysInfo_ConParams = ^mci_SysInfo_ConParams;
  1885. mci_SysInfo_Extension = record
  1886. szInstallName : MaxDevNameChar; // Device install name
  1887. usNumExtensions : Integer; // Number of extensions
  1888. szExtension : MaxExtChar2; // Extension name array
  1889. end;
  1890. pmci_SysInfo_Extension = ^mci_SysInfo_Extension;
  1891. mci_SysInfo_Alias = record
  1892. szInstallName : MaxDevNameChar; // Device install name
  1893. szAliasName : MaxAliasNameChar; // Alias name
  1894. end;
  1895. pmci_SysInfo_Alias = ^mci_SysInfo_Alias;
  1896. mci_SysInfo_DefaultDevice = record
  1897. szInstallName : MaxDevNameChar; // Device install name
  1898. usDeviceType : Integer; // Device type number
  1899. end;
  1900. pmci_SysInfo_DefaultDevice = ^mci_SysInfo_DefaultDevice;
  1901. mci_SysInfo_Query_Name = record
  1902. szInstallName : MaxDevNameChar; // Device install name
  1903. szLogicalName : MaxDevNameChar; // Logical device name
  1904. szAliasName : MaxAliasNameChar; // Alias name
  1905. usDeviceType : Integer; // Device type number
  1906. usDeviceOrd : Integer; // Device type ordinal
  1907. end;
  1908. pmci_SysInfo_Query_Name = ^mci_SysInfo_Query_Name;
  1909. mci_SysInfo_Types = record
  1910. szInstallName : MaxDevNameChar; // Device install name
  1911. szTypes : MaxTypeBufChar; // EA types
  1912. end;
  1913. pmci_SysInfo_Types = ^mci_SysInfo_Types;
  1914. //********************************************************************/
  1915. // flags for the MCI_UNFREEZE message */
  1916. // 0x00000X00 are reserved for MCI_UNFREEZE flags */
  1917. //********************************************************************/
  1918. CONST
  1919. MCI_OVLY_UNFREEZE_RECT = $00000100;
  1920. MCI_OVLY_UNFREEZE_RECT_OUTSIDE = $00000200;
  1921. //********************************************************************/
  1922. // flags for the MCI_WHERE message */
  1923. // 0x0000XX00 are reserved for MCI_WHERE flags */
  1924. //********************************************************************/
  1925. MCI_VID_WHERE_DESTINATION = $00000100;
  1926. MCI_VID_WHERE_SOURCE = $00000200;
  1927. MCI_VID_WHERE_WINDOW = $00000400;
  1928. MCI_DGV_WHERE_DESTINATION = MCI_VID_WHERE_DESTINATION;
  1929. MCI_DGV_WHERE_SOURCE = MCI_VID_WHERE_SOURCE;
  1930. MCI_DGV_WHERE_WINDOW = MCI_VID_WHERE_WINDOW;
  1931. MCI_DGV_WHERE_ADJUSTED = $00000800;
  1932. MCI_OVLY_WHERE_DESTINATION = MCI_VID_WHERE_DESTINATION;
  1933. MCI_OVLY_WHERE_SOURCE = MCI_VID_WHERE_SOURCE;
  1934. MCI_OVLY_WHERE_WINDOW = MCI_VID_WHERE_WINDOW;
  1935. //********************************************************************/
  1936. // flags and parameter structure for the MCI_WINDOW message */
  1937. // 0x0000XX00 are reserved for MCI_WINDOW flags */
  1938. //********************************************************************/
  1939. MCI_VID_WINDOW_hwnd = $00000100;
  1940. MCI_VID_WINDOW_STATE = $00000200;
  1941. MCI_VID_WINDOW_TEXT = $00000400;
  1942. MCI_VID_WINDOW_DEFAULT = $00000800;
  1943. MCI_DGV_WINDOW_hwnd = MCI_VID_WINDOW_hwnd;
  1944. MCI_DGV_WINDOW_STATE = MCI_VID_WINDOW_STATE;
  1945. MCI_DGV_WINDOW_TEXT = MCI_VID_WINDOW_TEXT;
  1946. MCI_DGV_WINDOW_DEFAULT = MCI_VID_WINDOW_DEFAULT;
  1947. MCI_OVLY_WINDOW_hwnd = MCI_VID_WINDOW_hwnd;
  1948. MCI_OVLY_WINDOW_STATE = MCI_VID_WINDOW_STATE;
  1949. MCI_OVLY_WINDOW_TEXT = MCI_VID_WINDOW_TEXT;
  1950. MCI_OVLY_WINDOW_DEFAULT = MCI_VID_WINDOW_DEFAULT;
  1951. type
  1952. mci_Vid_Window_Parms = record
  1953. hwndCallback : hwnd; // PM window handle for MCI notify message
  1954. hwndDest : hwnd; // Handle to the client window used for
  1955. // the destination of the video image
  1956. usCmdShow : Integer; // Specifies how the window is displayed
  1957. usReserved1 : Integer; // Reserved
  1958. pszText : pChar; // The text to use as the window caption
  1959. pszAlias : pChar; // The window alias for the display window
  1960. end;
  1961. pmci_Vid_Window_Parms = ^mci_Vid_Window_Parms;
  1962. mci_dgv_Window_Parms = mci_Vid_Window_Parms;
  1963. pmci_dgv_Window_Parms = ^mci_dgv_Window_Parms;
  1964. mci_Ovly_Window_Parms = mci_Vid_Window_Parms;
  1965. pmci_Ovly_Window_Parms = ^mci_Ovly_Window_Parms;
  1966. //********************************************************************/
  1967. // flags and parameter structure for the MCI_TUNER message */
  1968. //********************************************************************/
  1969. CONST
  1970. MCI_DGV_AUDIO_CHANNEL = $00010000;
  1971. MCI_DGV_TV_CHANNEL = $00020000;
  1972. MCI_DGV_FREQUENCY = $00040000;
  1973. MCI_DGV_FINETUNE_PLUS = $00080000;
  1974. MCI_DGV_FINETUNE_MINUS = $00100000;
  1975. MCI_DGV_REGION = $00200000;
  1976. MCI_DGV_AFC_ON = $00400000;
  1977. MCI_DGV_AFC_OFF = $00800000;
  1978. MCI_DGV_POLARIZATION = $00800000;
  1979. MCI_DGV_QUERY = $01000000;
  1980. type
  1981. mci_Dgv_Tuner_Parms = record
  1982. hwndCallback : hwnd; // PM window handle for MCI notify message
  1983. ulFrequency : LongInt; // Tuner Frequency
  1984. ulReserved0 : LongInt; // Reserved 0
  1985. ulTVChannel : LongInt; // TV Channel
  1986. lFineTune : LongInt; // Fine tuning adjustments.
  1987. pszRegion : pChar; // TV Channel Region
  1988. ulReserved1 : LongInt; // Reserved 1
  1989. ulReserved2 : LongInt; // Reserved 2
  1990. end;
  1991. pmci_Dgv_Tuner_Parms = ^mci_Dgv_Tuner_Parms;
  1992. //********************************************************************/
  1993. // */
  1994. // MCI system value defines */
  1995. // */
  1996. //********************************************************************/
  1997. CONST
  1998. MSV_CLOSEDCAPTION = $0;
  1999. MSV_MASTERVOLUME = $1;
  2000. MSV_HEADPHONES = $2;
  2001. MSV_SPEAKERS = $3;
  2002. MSV_WORKPATH = $4;
  2003. MSV_SYSQOSVALUE = $5;
  2004. MSV_SYSQOSERRORFLAG = $6;
  2005. MSV_MAX = $7;
  2006. //********************************************************************/
  2007. // Playlist defines */
  2008. //********************************************************************/
  2009. DATA_OPERATION = 0;
  2010. BRANCH_OPERATION = 1;
  2011. LOOP_OPERATION = 2;
  2012. CALL_OPERATION = 3;
  2013. RETURN_OPERATION = 4;
  2014. EXIT_OPERATION = 5;
  2015. NOP_OPERATION = 6;
  2016. MESSAGE_OPERATION = 7;
  2017. CUEPOINT_OPERATION = 8;
  2018. SEMWAIT_OPERATION = 9;
  2019. SEMPOST_OPERATION = 10;
  2020. //********************************************************************/
  2021. // */
  2022. // MCI Function prototypes */
  2023. // */
  2024. //********************************************************************/
  2025. function mciSendCommand(usDeviceID: Integer; usMessage: Integer; ulParam1: LongInt;
  2026. var Param2; usUserParm: Integer): longint; cdecl;
  2027. function mciSendString(pszCommandBuf: pChar; pszReturnString: pChar;
  2028. wReturnLength: Integer; hwndCallBack: hwnd; usUserParm: Integer): longInt; cdecl;
  2029. function mciGetErrorString(ulError: LongInt; pszBuffer: pChar; usLength: Integer): longint; cdecl;
  2030. function mciMakeGroup(var usDeviceGroupID:Integer; usDeviceCount: Integer;
  2031. var ausDeviceList: Integer; ulFlags: LongInt; ulMMTime: LongInt): longint; cdecl;
  2032. function mciDeleteGroup(usGroupID:Integer): longint; cdecl;
  2033. function mciSetSysValue(iSysValue: Integer; var Value): Boolean; cdecl;
  2034. function mciQuerySysValue(iSysValue: Integer;var Value): Boolean; cdecl;
  2035. function mciGetDeviceID(pszName: pChar): Longint; cdecl;
  2036. Implementation
  2037. function mSecToMM(Value: Cardinal): mmTime;
  2038. begin
  2039. If Value > $FFFFFFFF div 3 then
  2040. mSecToMM := 0
  2041. else
  2042. mSecToMM := Value div 3;
  2043. end;
  2044. function mSecFromMM(Value: mmTime): LongInt;
  2045. begin
  2046. mSecFromMM := (Value+1) div 3;
  2047. end;
  2048. function RedBookToMM(Value: Cardinal): mmTime;
  2049. begin
  2050. RedBookToMM := ( Value and $0000FF ) * 60 * 3000 +
  2051. ( Value and $00FF00 ) * $100 * 3000 +
  2052. ( Value and $FF0000 ) * $10000 * 3000 div 75;
  2053. end;
  2054. function fps24ToMM(Value: Cardinal): mmTime;
  2055. begin
  2056. fps24toMM := ( Value and $000000FF ) * 60 * 60 * 3000 +
  2057. ( Value and $0000FF00 ) * $100 * 60 * 3000 +
  2058. ( Value and $00FF0000 ) * $10000 * 3000 +
  2059. ( Value and $FF000000 ) * $10000 * 3000 div 24;
  2060. end;
  2061. function fps25ToMM(Value: Cardinal): mmTime;
  2062. begin
  2063. fps25ToMM := ( Value and $000000FF ) * 60 * 60 * 3000 +
  2064. ( Value and $0000FF00 ) * $100 * 60 * 3000 +
  2065. ( Value and $00FF0000 ) * $10000 * 3000 +
  2066. ( Value and $FF000000 ) * $10000 * 3000 div 25;
  2067. end;
  2068. function fps30ToMM(Value: Cardinal): mmTime;
  2069. begin
  2070. fps30ToMM := ( Value and $000000FF ) * 60 * 60 * 3000 +
  2071. ( Value and $0000FF00 ) * $100 * 60 * 3000 +
  2072. ( Value and $00FF0000 ) * $10000 * 3000 +
  2073. ( Value and $FF000000 ) * $10000 * 3000 div 30;
  2074. end;
  2075. function HMSToMM(Value: Cardinal): mmTime;
  2076. begin
  2077. HMSToMM := ( Value and $0000FF ) * 60 * 60 * 3000 +
  2078. ( Value and $00FF00 ) * $100 * 60 * 3000 +
  2079. ( Value and $FF0000 ) * $10000 * 3000;
  2080. end;
  2081. function RedBookFromMM(Value: mmTime): Cardinal;
  2082. begin
  2083. if Value+20 >= $100*60*3000 then
  2084. RedBookFromMM := 0
  2085. else
  2086. RedBookFromMM := (Value+20) div (60*3000) +
  2087. ((Value+20) mod ((60*3000) div 3000)) shl 8 +
  2088. ((Value+20) div ((3000 div 75) mod 75)) shl 16;
  2089. end;
  2090. function FPS24FromMM(Value: mmTime): Cardinal;
  2091. begin
  2092. if Value+63 >= $A4CB8000 then // $100*60*60*3000 then
  2093. FPS24FromMM := 0
  2094. else
  2095. FPS24FromMM := ((((Value+63) mod 3000) div (3000 div 24)) shl 24) and $FF000000 +
  2096. ((((Value+63) div 3000) mod 60) shl 16) and $00FF0000 +
  2097. (((((Value+63) div 3000) div 60) mod 60) shl 8) and $0000FF00 +
  2098. ((((Value+63) div 3000) div 60) div 60) and $000000FF;
  2099. end;
  2100. function FPS25FromMM(value: mmTime): Cardinal;
  2101. begin
  2102. if Value+60 >= $A4CB8000 then // $100*60*60*3000
  2103. FPS25FromMM := 0
  2104. else
  2105. FPS25FromMM := ((((Value+60) mod 3000) div (3000 div 25)) shl 24) and $FF000000 +
  2106. ((((Value+60) div 3000) mod 60) shl 16) and $00FF0000 +
  2107. (((((Value+60) div 3000) div 60) mod 60) shl 8) and $0000FF00 +
  2108. ((((Value+60) div 3000) div 60) div 60) and $000000FF;
  2109. end;
  2110. function FPS30FromMM(value: mmTime): Cardinal;
  2111. begin
  2112. if Value+50 >= $A4CB8000 then // $100*60*60*3000
  2113. FPS30FromMM := 0
  2114. else
  2115. FPS30FromMM := ((((Value+50) mod 3000) div (3000 div 30)) shl 24) and $FF000000 +
  2116. ((((Value+50) div 3000) mod 60) shl 16) and $00FF0000 +
  2117. (((((Value+50) div 3000) div 60) mod 60) shl 8) and $0000FF00 +
  2118. ((((Value+50) div 3000) div 60) div 60) and $000000FF;
  2119. end;
  2120. function HMSFromMM(value: mmTime): Cardinal;
  2121. begin
  2122. if Value+50 >= $A4CB8000 then // $100*60*60*3000
  2123. HMSFromMM := 0
  2124. else
  2125. HMSFromMM := (((( Value+50) div 3000) mod 60) shl 16) and $00FF0000 +
  2126. (((((Value+50) div 3000) div 60) mod 60) shl 8) and $0000FF00 +
  2127. (((( Value+50) div 3000) div 60) div 60) and $000000FF;
  2128. end;
  2129. function tmsf_track(time: mmTime): Byte;
  2130. begin
  2131. tmsf_track := byte(time);
  2132. end;
  2133. function tmsf_minute(time: mmTime): Byte;
  2134. begin
  2135. tmsf_minute := pbyte(pchar(@time)+1)^;
  2136. end;
  2137. function tmsf_second(time: mmTime): Byte;
  2138. begin
  2139. tmsf_second := pbyte(pchar(@time)+2)^;
  2140. end;
  2141. function tmsf_frame(time: mmTime): Byte;
  2142. begin
  2143. tmsf_frame := pbyte(pchar(@time)+3)^;
  2144. end;
  2145. function msf_minute(time: mmTime): Byte;
  2146. begin
  2147. msf_minute := byte(time);
  2148. end;
  2149. function msf_second(time: mmTime): Byte;
  2150. begin
  2151. msf_second := pbyte(pchar(@time)+1)^;
  2152. end;
  2153. function msf_frame(time: mmTime): Byte;
  2154. begin
  2155. msf_frame := pbyte(pchar(@time)+2)^;
  2156. end;
  2157. function uLong_lwlb(var ul): Byte; // Low word low byte
  2158. begin
  2159. uLong_lwlb := LongInt(ul);
  2160. end;
  2161. function uLong_lwhb(var ul): Byte; // Low word high byte
  2162. begin
  2163. uLong_lwhb := pbyte(pchar(@ul)+1)^;
  2164. end;
  2165. function uLong_hwlb(var ul): Byte; // High word low byte
  2166. begin
  2167. uLong_hwlb := pbyte(pchar(@ul)+2)^;
  2168. end;
  2169. function uLong_hwhb(var ul): Byte; // High word high byte
  2170. begin
  2171. uLong_hwhb := pbyte(pchar(@ul)+3)^;
  2172. end;
  2173. function uLong_lowd(var ul): Word; // Low word
  2174. begin
  2175. uLong_lowd:=pWord(pchar(@ul))^;
  2176. end;
  2177. function uLong_hiwd(var ul): Word; // High word
  2178. begin
  2179. uLong_hiwd := pWord(pchar(@ul)+Sizeof(Word))^;
  2180. end;
  2181. function mciSendCommand(usDeviceID: Integer; usMessage: Integer; ulParam1: LongInt;
  2182. var Param2; usUserParm: Integer): longint; cdecl; external 'MDM' index 1;
  2183. function mciSendString(pszCommandBuf: pChar; pszReturnString: pChar;
  2184. wReturnLength: Integer; hwndCallBack: hwnd; usUserParm: Integer): longInt; cdecl; external 'MDM' index 2;
  2185. function mciGetErrorString(ulError: LongInt; pszBuffer: pChar; usLength: Integer): longint; cdecl; external 'MDM' index 3;
  2186. function mciMakeGroup(var usDeviceGroupID:Integer; usDeviceCount: Integer;
  2187. var ausDeviceList: Integer; ulFlags: LongInt; ulMMTime: LongInt): longint; cdecl; external 'MDM' index 12;
  2188. function mciDeleteGroup(usGroupID:Integer): longint; cdecl; external 'MDM' index 13;
  2189. function mciSetSysValue(iSysValue: Integer; var Value): Boolean; cdecl; external 'MDM' index 10;
  2190. function mciQuerySysValue(iSysValue: Integer;var Value): Boolean; cdecl; external 'MDM' index 11;
  2191. function mciGetDeviceID(pszName: pChar): Longint; cdecl; external 'MDM' index 16;
  2192. End.