mmcdatyp.int 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. unit MMCDATyp;
  2. {$I COMPILER.INC}
  3. interface
  4. uses
  5. Windows,
  6. MMSystem,
  7. MMSCSI;
  8. const
  9. CDDADLL_VERSION = 20;
  10. const
  11. SECTOR_LEN = 2368;
  12. FRAME_SIZE = 2352;
  13. DATA_SECTOR = 2048;
  14. TIMEOUT = 10000;
  15. FRAME_OFFSET = 150;
  16. SINGLE_SPEED = 75*FRAME_SIZE;
  17. type
  18. THCDDA = integer;
  19. { ASPI Device Info }
  20. PASPIDeviceInfo = ^TASPIDeviceInfo;
  21. TASPIDeviceInfo = packed record
  22. Adapter : integer; // haId
  23. TargetId : integer;
  24. LUN : Integer;
  25. Data : TScsiInquiry;
  26. lpNext : PASPIDeviceInfo;
  27. end;
  28. {==========================================================================}
  29. PASPIInfo = ^TASPIInfo;
  30. TASPIInfo = packed record
  31. FNumAdapters : Byte;
  32. FDevices : PASPIDeviceInfo;
  33. end;
  34. {==========================================================================}
  35. TCDTrackType = (ttData,ttAudio);
  36. TCDISRC = array[0..12] of Char;
  37. TCDUPC = array[0..13] of Char;
  38. {==========================================================================}
  39. PCDTrack = ^TCDTrack; { Track-Info }
  40. TCDTrack = packed record
  41. Number : Integer;
  42. Start : Integer; // MSF
  43. Length : Integer; // MSF
  44. TrackType : TCDTrackType;
  45. CopyProtected : LongBool;
  46. PreEmphasis : LongBool;
  47. end;
  48. {==========================================================================}
  49. PCDTrackInfo = ^TCDTrackInfo; { TOC-Info }
  50. TCDTrackInfo = packed record
  51. nTracks : Integer;
  52. Tracks : array[0..99] of TCDTrack;
  53. end;
  54. TCDText = array[0..160] of Char;
  55. {==========================================================================}
  56. PCDTextTrack = ^TCDTextTrack; { CDText Track Info }
  57. TCDTextTrack = packed record
  58. TrackNr : integer;
  59. TrackTitle : TCDText;
  60. Performer : TCDText;
  61. SongWriter : TCDText;
  62. Composer : TCDText;
  63. Arranger : TCDText;
  64. Message : TCDText;
  65. DiskID : TCDText;
  66. GenreInfo : TCDText;
  67. UPC_EAN_ISRC : TCDText;
  68. end;
  69. {==========================================================================}
  70. PCDTextBlock = ^TCDTextBlock; { CDText Block (language) }
  71. TCDTextBlock = packed record
  72. nTracks : integer;
  73. Tracks : array[0..100] of TCDTextTrack; // Track 0 = AlbumTitle
  74. end;
  75. {==========================================================================}
  76. PCDTextInfo = ^TCDTextInfo; { CDText TOC-Info }
  77. TCDTextInfo = packed record
  78. Blocks : array[0..7] of PCDTextBlock;
  79. end;
  80. const
  81. AUTO = 'AutoDetect';
  82. ATAPI = 'ATAPI';
  83. CYBER = 'CYBER';
  84. DEC_ = 'DEC';
  85. GRUNDIG = 'GRUNDIG';
  86. HITACHI = 'HITACHI';
  87. HP = 'HP';
  88. IBM = 'IBM';
  89. IMS = 'IMS';
  90. KODAK = 'KODAK';
  91. MATSHITA = 'MATSHITA';
  92. MITSUMI = 'MITSUMI';
  93. MP = 'MP';
  94. MS = 'MS';
  95. NEC = 'NEC';
  96. PANASONIC = 'PANASONIC';
  97. PHILIPS = 'PHILIPS';
  98. PIONEER = 'PIONEER';
  99. PLASMON = 'PLASMON';
  100. PLEXTOR = 'PLEXTOR';
  101. RICOH = 'RICOH';
  102. SONY = 'SONY';
  103. TOSHIBA = 'TOSHIBA';
  104. TEAC = 'TEAC';
  105. YAMAHA = 'YAMAHA';
  106. type
  107. {==========================================================================}
  108. TCDDeviceType = (dtAUTO,
  109. dtATAPI,
  110. dtCYBER,
  111. dtDEC,
  112. dtGRUNDIG,
  113. dtHITACHI,
  114. dtHP,
  115. dtIBM,
  116. dtIMS,
  117. dtKODAK,
  118. dtMATSHITA,
  119. dtMITSUMI,
  120. dtMP,
  121. dtMS,
  122. dtNEC,
  123. dtPANASONIC,
  124. dtPHILIPS,
  125. dtPIONEER,
  126. dtPLASMON,
  127. dtPLEXTOR,
  128. dtRICOH,
  129. dtSONY,
  130. dtTOSHIBA,
  131. dtTEAC,
  132. dtYAMAHA);
  133. const
  134. {==========================================================================}
  135. CDDeviceTypes: array[0..24] of string =
  136. (AUTO,
  137. ATAPI,
  138. CYBER,
  139. DEC_,
  140. GRUNDIG,
  141. HITACHI,
  142. HP,
  143. IBM,
  144. IMS,
  145. KODAK,
  146. MATSHITA,
  147. MITSUMI,
  148. MP,
  149. MS,
  150. NEC,
  151. PANASONIC,
  152. PHILIPS,
  153. PIONEER,
  154. PLASMON,
  155. PLEXTOR,
  156. RICOH,
  157. SONY,
  158. TOSHIBA,
  159. TEAC,
  160. YAMAHA);
  161. const
  162. {==========================================================================}
  163. { ASPI Error codes }
  164. {==========================================================================}
  165. ASPI_ERRBASE = -100;
  166. ASPI_NOERROR = 0;
  167. ASPI_DLLERROR = ASPI_ERRBASE - 1;
  168. ASPI_NOMANAGER = ASPI_ERRBASE - 2;
  169. ASPI_NOADAPTER = ASPI_ERRBASE - 3;
  170. ASPI_INVALIDDEVICE = ASPI_ERRBASE - 4;
  171. ASPI_TIMEOUT = ASPI_ERRBASE - 5;
  172. ASPI_UNKNOWNERROR = ASPI_ERRBASE - 100;
  173. {==========================================================================}
  174. { CDDA Error codes }
  175. {==========================================================================}
  176. CDDA_ERRBASE = 0;
  177. CDDA_NOERROR = CDDA_ERRBASE;
  178. CDDA_INITFAILURE = CDDA_ERRBASE - 1;
  179. CDDA_INVALHANDLE = CDDA_ERRBASE - 2;
  180. CDDA_INVALPARAM = CDDA_ERRBASE - 3;
  181. CDDA_INVALIDDEVICE = CDDA_ERRBASE - 4;
  182. CDDA_ALLOCATED = CDDA_ERRBASE - 5;
  183. CDDA_NOTREADY = CDDA_ERRBASE - 6;
  184. CDDA_CANNOTOPEN = CDDA_ERRBASE - 7;
  185. CDDA_CANNOTCLOSE = CDDA_ERRBASE - 8;
  186. CDDA_CANNOTLOAD = CDDA_ERRBASE - 9;
  187. CDDA_CANNOTPLAY = CDDA_ERRBASE - 10;
  188. CDDA_CANNOTPAUSE = CDDA_ERRBASE - 11;
  189. CDDA_CANNOTRESUME = CDDA_ERRBASE - 12;
  190. CDDA_CANNOTSTOP = CDDA_ERRBASE - 13;
  191. CDDA_CANNOTLOCK = CDDA_ERRBASE - 14;
  192. CDDA_CANNOTREAD = CDDA_ERRBASE - 15;
  193. CDDA_SYNCERROR = CDDA_ERRBASE - 16;
  194. CDDA_NOTSUPPORTED = CDDA_ERRBASE - 17;
  195. CDDA_UNKNOWNERROR = CDDA_ERRBASE - 100;
  196. function MSFToFrame(MSF: Longint): Longint;
  197. function Frame2MSF(Frame: Longint; M, S, F: PInteger): Longint;
  198. function FrameToMSF(Frame: Longint): Longint;
  199. function MSFToSecond(MSF: Longint): Longint;
  200. function MSFToTime(MSF: Longint): Longint;
  201. function TimeToMSF(Time: Longint): Longint;
  202. implementation
  203. end.