CD-ROM Function Reference
Function definitions:
Returns the number of CD-ROM drives on the system
Returns a human-readable, system-dependent identifier for the CD-ROM.
Opens a CD-ROM drive for access. It returns a drive handle on success,
or
This function returns the current status of the given drive.
Play the given CD starting at ' // Play entire CD: if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) SDL_CDPlayTracks(cdrom, 0, 0, 0, 0); // Play last track: if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) { SDL_CDPlayTracks(cdrom, cdrom->numtracks-1, 0, 0, 0); } // Play first and second track and 10 seconds of third track: if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) SDL_CDPlayTracks(cdrom, 0, 0, 2, 10);This function returns 0 , or -1 if there was an error.
Play the given CD starting at '
Pause play -- returns
Resume play -- returns
Stop play -- returns
Eject CD-ROM -- returns
Closes the handle for the CD-ROM drive
Structure definitions:
/* The possible states which a CD-ROM drive can be in. */ typedef enum { CD_TRAYEMPTY, CD_STOPPED, CD_PLAYING, CD_PAUSED, CD_ERROR = -1 } CDstatus; /* The structure identifying a track on the CD */ typedef struct { Uint8 id; /* Track number */ Uint8 type; /* Data or audio track */ Uint16 length; /* Length, in frames, of this track */ Uint32 offset; /* Offset, in frames, from start of disk */ } SDL_CDtrack; /* This structure is only current as of the last call to SDL_CDStatus() */ typedef struct SDL_CD { int id; /* Private drive identifier */ CDstatus status; /* Current drive status */ /* The rest of this structure is only valid if there's a CD in drive */ int numtracks; /* Number of tracks on disk */ int cur_track; /* Current track position */ int cur_frame; /* Current frame offset within current track */ SDL_CDtrack track[SDL_MAX_TRACKS+1]; } SDL_CD; Useful Macros
/* Given a status, returns true if there's a disk in the drive */ #define CD_INDRIVE(status) ((int)status > 0) /* Conversion functions from frames to Minute/Second/Frames and vice versa */ #define CD_FPS 75 #define FRAMES_TO_MSF(f, M,S,F) { \ int value = f; \ *(F) = value%CD_FPS; \ value /= CD_FPS; \ *(S) = value%60; \ value /= 60; \ *(M) = value; \ } #define MSF_TO_FRAMES(M, S, F) ((M)*60*CD_FPS+(S)*CD_FPS+(F)) |