home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / header45.zip / cdaudos2.h < prev    next >
C/C++ Source or Header  |  1999-03-15  |  12KB  |  237 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /* Module Name:  CDAUDOS2.H                                                 */
  4. /*                                                                          */
  5. /* FUNCTION:  This file contains the macro definition and common record     */
  6. /*            structures used between the CD Audio MCI Driver, its VSDs     */
  7. /*            (Vendor Specific Drivers), and the CD look-up table,          */
  8. /*            MMPMCD.INI.                                                   */
  9. /*                                                                          */
  10. /* Copyright (c) International Business Machines Corporation 1991 - 1993    */
  11. /*                        All Rights Reserved                               */
  12. /*                                                                          */
  13. /****************************************************************************/
  14. #ifdef __cplusplus
  15.    extern "C" {
  16. #endif
  17.  
  18.  
  19. /*******************************************************************/
  20. /* CD MCD and VSD values and inter-modual communications           */
  21. /*******************************************************************/
  22.  
  23.  
  24. /**********************************/
  25. /* Macro Definitions              */
  26. /**********************************/
  27.  
  28. #define UPC_SIZE              7     /* UPC code size, CD serial number */
  29. #define CDMCD_CUEPOINT_MAX   20     /* maximum number of cuepoints */
  30. #define CDROM_SPEC_START   6000     /* 2 seconds, greatest min start address */
  31.  
  32.  
  33. /*************************************************************************/
  34. /* Internal messages between the MCI Driver and the VSD.                 */
  35. /*************************************************************************/
  36.  
  37. #define MCIDRV_REGISTER_DISC    MCI_INTERNAL_MESSAGES_START + 1
  38. #define MCIDRV_REGISTER_DRIVE   MCI_INTERNAL_MESSAGES_START + 2
  39. #define MCIDRV_REGISTER_TRACKS  MCI_INTERNAL_MESSAGES_START + 3
  40. #define MCIDRV_CD_READ_LONG     MCI_INTERNAL_MESSAGES_START + 4
  41. #define MCIDRV_CD_SET_VERIFY    MCI_INTERNAL_MESSAGES_START + 5
  42. #define MCIDRV_CD_STATUS_CVOL   MCI_INTERNAL_MESSAGES_START + 6
  43.  
  44.  
  45. /*************************************************************************/
  46. /* Internal callback routine to the VSD from the MCI Driver.             */
  47. /*************************************************************************/
  48.  
  49. typedef ULONG (APIENTRY FNCDVSD) (PVOID, USHORT, ULONG *, PVOID, USHORT);
  50. typedef FNCDVSD *PFNCDVSD;
  51.  
  52.  
  53. /*************************************************************************/
  54. /* Internal callback routine from the VSD to the MCI Driver.             */
  55. /*************************************************************************/
  56.  
  57. typedef VOID (*PFNCDMCD) (ULONG, ULONG, ULONG);
  58.  
  59.  
  60. /***********************************/
  61. /* CDAudRegister record structures */
  62. /***********************************/
  63. #pragma pack(1)
  64.  
  65. /*** ID a disc, used to verify a disc change ***/
  66. typedef struct _MCI_CD_ID
  67. {                              /* must stay at 8 bytes to equal size of UPC */
  68.    BYTE   Mode;                           /* mode, 0=UPC, 1=ID              */
  69.    USHORT usTrack1;                       /* address of track one in MMTIME */
  70.    BYTE   NumTracks;                      /* number of tracks               */
  71.    ULONG  ulLeadOut;                      /* address of lead out track      */
  72. } MCI_CD_ID;
  73.  
  74. /*** CD-ROM Drive information, determines capabilities ***/
  75. typedef struct _MCI_CD_REGDRIVE_PARMS
  76. {
  77.    USHORT usCaps;                         /* capabilities                   */
  78.    ULONG  ulPrerollType;                  /* preroll type                   */
  79.    ULONG  ulPrerollTime;                  /* preroll time                   */
  80.    ULONG  ulMinStartTime;                 /* minimum starting time          */
  81.    ULONG  ulCDMCDID;                      /* CD MCD ID for instance         */
  82.    PFNCDMCD pCDMCDReturn;                 /* addr of CD MCD Return function */
  83. } MCI_CD_REGDRIVE_PARMS;
  84.  
  85. /*************************************************/
  86. /* These flags are valid for the usCaps Field    */
  87. /*************************************************/
  88. #define CDVSD_CAP_CAN_RECORD  0x0001    /* Can record audio               */
  89. #define CDVSD_CAP_HAS_AUDIO   0x0002    /* Can play audio                 */
  90. #define CDVSD_CAP_HAS_VIDEO   0x0004    /* Can play video                 */
  91. #define CDVSD_CAP_CAN_CLSDOOR 0x0008    /* Can retract tray/close door    */
  92. #define CDVSD_CAP_CAN_EJECT   0x0010    /* Can eject disc                 */
  93. #define CDVSD_CAP_CAN_STREAM  0x0020    /* Can stream                     */
  94. #define CDVSD_CAP_HAS_DAC     0x0040    /* Can process internal           */
  95. #define CDVSD_CAP_CAN_LOCK    0x0080    /* Can disable manual eject       */
  96. #define CDVSD_CAP_CAN_VOLUME  0x0100    /* Can manipulate volume settings */
  97. #define CDVSD_CAP_CAN_REVERSE 0x0200    /* Can play in reverse            */
  98. #define CDVSD_CAP_CAN_V_SPEED 0x0400    /* Can vary play speed            */
  99. #define CDVSD_CAP_CAN_CUE     0x0800    /* Can read sequent. after break  */
  100.                                         /* Used for Cue, Pause, and Seek  */
  101.  
  102.  
  103. /*** Information about the disc ***/
  104. typedef struct _MCI_CD_REGDISC_PARMS
  105. {
  106.    BYTE   LowestTrackNum;                 /* lowest track number  */
  107.    BYTE   HighestTrackNum;                /* highest track number */
  108.    BYTE   UPC[UPC_SIZE];                  /* upc, 13 BCD + 4bit 0 */
  109.    MCI_CD_ID DiscID;                      /* Disc ID              */
  110. } MCI_CD_REGDISC_PARMS;
  111.  
  112. /*** Information about each track ***/
  113. typedef struct _MCI_CD_REGTRACK_REC
  114. {
  115.    BYTE   TrackNum;                       /* track number               */
  116.    ULONG  ulStartAddr;                    /* starting address in MMTIME */
  117.    ULONG  ulEndAddr;                      /* ending address             */
  118.    BYTE   TrackControl;                   /* track control information  */
  119. } MCI_CD_REGTRACK_REC;
  120.  
  121. /*** Track information, used to verify address ***/
  122. typedef struct _MCI_CD_REGTRACKS_PARMS
  123. {
  124.    MCI_CD_REGTRACK_REC *TrackRecArr;      /* ptr to array of track recs  */
  125.    ULONG  ulBufSize;                      /* size of buffer              */
  126. } MCI_CD_REGTRACKS_PARMS;
  127.  
  128.  
  129. /********************************************/
  130. /* Environment settings to save and restore */
  131. /********************************************/
  132.  
  133. typedef struct _MCIDRV_CD_SAVE_PARMS
  134. {
  135.    ULONG ulPosition;                      /* current position in MMTIME       */
  136.    ULONG ulEndPlay;                       /* end play position                */
  137.    ULONG ulMode;                          /* Play mode: playing, paused, etc. */
  138.    ULONG ulLevel;                         /* volume levels                    */
  139.    ULONG ulVSDData;                       /* Extra VSD data storage area      */
  140. } MCIDRV_CD_SAVE_PARMS;
  141.  
  142. /********************************************/
  143. /* Read Long (2352-Byte) Sectors            */
  144. /********************************************/
  145.  
  146. /**************************************************************************/
  147. /* Flag for the MCIDRV_CD_READ_LONG message                               */
  148. /*   Default addressing mode for the ulFrom field is Hardware Red Book.   */
  149. /*   Absolute sector addressing for ISO-9660, or High Sierra Group        */
  150. /*   requires a flag, as does an MMTIME address.                          */
  151. /**************************************************************************/
  152.  
  153. #define MCI_CD_READLONG_HSG          0x00000100L
  154. #define MCI_CD_READLONG_MMTIME       0x00000200L
  155.  
  156. typedef struct _MCI_CD_READLONG_PARMS
  157. {
  158.    ULONG   ulFrom;                        /* read from this position   */
  159.    USHORT  usCount;                       /* Number of sectors to read */
  160.    PVOID   pReturn;                       /* Pointer to return buffer  */
  161.    ULONG   ulRetSize;                     /* Return buffer size        */
  162. } MCI_CD_READLONG_PARMS;
  163.  
  164. #pragma pack()
  165.  
  166.  
  167. /*******************************************************************/
  168. /* CD Table INI file, MMPMCD.INI, values                           */
  169. /*******************************************************************/
  170.  
  171. /*******************************************************************/
  172. /* Capability Flags I from the CD drive look-up table, MMPMCD.INI  */
  173. /*******************************************************************/
  174.  
  175. #define CDHW_CAP_CAN_EJECT    0x00000001  /* Can software eject disc         */
  176. #define CDHW_CAP_CAN_LOCK     0x00000002  /* Can lock drive/disable eject    */
  177. #define CDHW_CAP_READS_RAW    0x00000004  /* Can read raw sectors            */
  178. #define CDHW_CAP_CAN_WRITE    0x00000008  /* Can write to disc               */
  179. #define CDHW_CAP_CAN_PLAY     0x00000010  /* Can play CD-DA tracks           */
  180. #define CDHW_CAP_CAN_INTERLEV 0x00000020  /* Supports ISO-9660 interleaving  */
  181. #define CDHW_CAP_CAN_PREFETCH 0x00000080  /* Can prefetch internally         */
  182. #define CDHW_CAP_MANIP_AUDIO  0x00000100  /* Can manipulte audio channels    */
  183. #define CDHW_CAP_USES_REDBOOK 0x00000200  /* Can use Red Book mode           */
  184. #define CDHW_CAP_READS_XA     0x00000400  /* Can read CD-ROM/XA data         */
  185. #define CDHW_CAP_CONT_READS   0x00000800  /* Continues to read DA after stop */
  186. #define CDHW_CAP_CAN_REVERSE  0x00001000  /* Can play in reverse             */
  187. #define CDHW_CAP_READS_CDDA   0x40000000  /* Can read CD-DA audio tracks     */
  188.  
  189.  
  190. /*******************************************************************/
  191. /* Capability Flags II from the CD drive look-up table, MMPMCD.INI */
  192. /*******************************************************************/
  193.  
  194. #define CDHW_VOL_DEP_MASK     0x00000007  /* Volume dependency mask        */
  195. #define CDHW_VOL_DEP_NONE              0  /* Volume without dependency     */
  196. #define CDHW_VOL_DEP_HIGH              2  /* Volume is highest value       */
  197. #define CDHW_VOL_DEP_LOW               3  /* Volume is lowest value        */
  198. #define CDHW_VOL_DEP_LEFT              4  /* Volume is left volume         */
  199. #define CDHW_VOL_DEP_RIGHT             5  /* Volume is right volume        */
  200. #define CDHW_VOL_INDEP_MUTE   0x00000008  /* Mute has no dependency        */
  201. #define CDHW_CAP_LOCK_MOUNT   0x00000010  /* Can only lock when mounted    */
  202. #define CDHW_CAP_PLAY_VIDEO   0x00000020  /* Can play video                */
  203. #define CDHW_CAP_MODAL_ONLY   0x00000040  /* Stop req to interrupt PLAY    */
  204. #define CDHW_CAP_SUP_SEEK     0x00000080  /* Supports SEEK IOCTL           */
  205. #define CDHW_CAP_SUP_UPC      0x00000100  /* Supports UPC IOCTL            */
  206. #define CDHW_CAP_SUP_SUBCHAN  0x00000200  /* Supports sub-channel IOCTL    */
  207. #define CDHW_CAP_CAN_CLS_TRAY 0x00000400  /* Can close door/retract caddy  */
  208. #define CDHW_CAP_NO_STREAM    0x00001000  /* Cannot stream CD-DA when PDD  */
  209.                                           /*   says it can                 */
  210. #define CDHW_CAP_VAR_PLAY     0x80000000  /* Supports variable speeds      */
  211.  
  212. /* INI file record structure */
  213. #define CDINI_APPSIZE                  8  /* Application name size    */
  214. #define CDINI_KEYSIZE                 16  /* Key name size            */
  215. #define CDINI_VSD_NAME_SIZE            8  /* size of file name        */
  216. #define VOLUME_CONTROL               101  /* num of values, 0% - 100% */
  217.  
  218. #pragma pack(1)
  219.  
  220. typedef struct _MMPMCD_REC
  221. {
  222.    USHORT usEntryVer;                     /* Entry version                 */
  223.    ULONG  ulCaps1;                        /* Capability flag I             */
  224.    ULONG  ulCaps2;                        /* Capability flag II            */
  225.    CHAR   VSDName[CDINI_VSD_NAME_SIZE];   /* DLL name for VSD              */
  226.    ULONG  ulMinStart;                     /* Min starting addr, 0x00MMSSFF */
  227.    USHORT usVolCnt;                       /* volume level counter          */
  228.    USHORT ausVolValues[VOLUME_CONTROL];   /* volume control values         */
  229. } MMPMCD_REC;
  230.  
  231. #pragma pack()
  232.  
  233. #ifdef __cplusplus
  234. }
  235. #endif
  236.  
  237.