| /* -*- tab-width: 8; c-basic-offset: 4 -*- */ | |
| /* | |
| * Header file for CD-ROM support | |
| * | |
| * Copyright 1994 Martin Ayotte | |
| * Copyright 1999 Eric Pouech | |
| * Copyright 2000 Andreas Mohr | |
| */ | |
| #ifndef __WINE_CDROM_H__ | |
| #define __WINE_CDROM_H__ | |
| #include <stdlib.h> | |
| #include <unistd.h> | |
| #include "config.h" | |
| #include "windef.h" | |
| #include "wine/windef16.h" | |
| #ifdef HAVE_LINUX_CDROM_H | |
| # include <linux/cdrom.h> | |
| #endif | |
| #ifdef HAVE_LINUX_UCDROM_H | |
| # include <linux/ucdrom.h> | |
| #endif | |
| #ifdef HAVE_SYS_CDIO_H | |
| # include <sys/cdio.h> | |
| #endif | |
| typedef struct { | |
| const char *devname; | |
| #if defined(linux) | |
| struct cdrom_subchnl sc; | |
| #elif defined(__FreeBSD__) || defined(__NetBSD__) | |
| struct cd_sub_channel_info sc; | |
| #endif | |
| /* those data reflect the cdaudio structure and | |
| * don't change while playing | |
| */ | |
| UINT16 nTracks; | |
| UINT16 nFirstTrack; | |
| UINT16 nLastTrack; | |
| LPDWORD lpdwTrackLen; | |
| LPDWORD lpdwTrackPos; | |
| LPBYTE lpbTrackFlags; | |
| DWORD dwFirstFrame; | |
| DWORD dwLastFrame; | |
| /* those data change while playing */ | |
| int cdaMode; | |
| UINT16 nCurTrack; | |
| DWORD dwCurFrame; | |
| } WINE_CDAUDIO; | |
| #define WINE_CDA_DONTKNOW 0x00 | |
| #define WINE_CDA_NOTREADY 0x01 | |
| #define WINE_CDA_OPEN 0x02 | |
| #define WINE_CDA_PLAY 0x03 | |
| #define WINE_CDA_STOP 0x04 | |
| #define WINE_CDA_PAUSE 0x05 | |
| int CDROM_Open(WINE_CDAUDIO* wcda, int drive); | |
| int CDROM_OpenDev(WINE_CDAUDIO* wcda); | |
| int CDROM_GetMediaType(WINE_CDAUDIO* wcda, int parentdev); | |
| int CDROM_CloseDev(int dev); | |
| int CDROM_Close(WINE_CDAUDIO* wcda); | |
| int CDROM_Reset(WINE_CDAUDIO* wcda, int parentdev); | |
| int CDROM_Audio_Play(WINE_CDAUDIO* wcda, DWORD start, DWORD stop, int parentdev); | |
| int CDROM_Audio_Stop(WINE_CDAUDIO* wcda, int parentdev); | |
| int CDROM_Audio_Pause(WINE_CDAUDIO* wcda, int pauseOn, int parentdev); | |
| int CDROM_Audio_Seek(WINE_CDAUDIO* wcda, DWORD at, int parentdev); | |
| int CDROM_SetDoor(WINE_CDAUDIO* wcda, int open, int parentdev); | |
| UINT16 CDROM_Audio_GetNumberOfTracks(WINE_CDAUDIO* wcda, int parentdev); | |
| BOOL CDROM_Audio_GetTracksInfo(WINE_CDAUDIO* wcda, int parentdev); | |
| BOOL CDROM_Audio_GetCDStatus(WINE_CDAUDIO* wcda, int parentdev); | |
| WORD CDROM_Data_FindBestVoldesc(int fd); | |
| DWORD CDROM_Audio_GetSerial(WINE_CDAUDIO* wcda); | |
| DWORD CDROM_Data_GetSerial(WINE_CDAUDIO* wcda, int parentdev); | |
| DWORD CDROM_GetSerial(int drive); | |
| DWORD CDROM_GetLabel(int drive, char *label); | |
| #define CDFRAMES_PERSEC 75 | |
| #define SECONDS_PERMIN 60 | |
| #define CDFRAMES_PERMIN ((CDFRAMES_PERSEC) * (SECONDS_PERMIN)) | |
| #ifndef CDROM_DATA_TRACK | |
| #define CDROM_DATA_TRACK 0x04 | |
| #endif | |
| #define CDROM_MSF_MINUTE(msf) ((BYTE)(msf)) | |
| #define CDROM_MSF_SECOND(msf) ((BYTE)(((WORD)(msf)) >> 8)) | |
| #define CDROM_MSF_FRAME(msf) ((BYTE)((msf)>>16)) | |
| #define CDROM_MAKE_MSF(m, s, f) ((DWORD)(((BYTE)(m) | \ | |
| ((WORD)(s)<<8)) | \ | |
| (((DWORD)(BYTE)(f))<<16))) | |
| /* values borrowed from Linux 2.2.x cdrom.h */ | |
| #define CDS_NO_INFO 0 | |
| #define CDS_AUDIO 100 | |
| #define CDS_DATA_1 101 | |
| #define CDS_DATA_2 102 | |
| #define CDS_XA_2_1 103 | |
| #define CDS_XA_2_2 104 | |
| #define CDS_MIXED 105 | |
| #endif | |