OCamlSDL 0.9.1 : Sdlcdrom

# Module Sdlcdrom

    module Sdlcdrom: sig .. end

This module provides CD-ROM handling

    exception SDLcdrom_exception of string

Exception used to report errors

    exception Trayempty

Exception to report that thre's no cd in the drive

### Types

    type cdrom_drive

abstract type for handling cdrom
`type ``cdrom_drive_status =`

`|` | `CD_TRAYEMPTY` | `(*` | cdrom drive is empty | `*)`
`|` | `CD_STOPPED` | `(*` | cdrom drive is stopped | `*)`
`|` | `CD_PLAYING` | `(*` | cdrom drive is playing | `*)`
`|` | `CD_PAUSED` | `(*` | cdrom drive is paused | `*)`

enumeration of different status cdrom drive
`type ``track_type =`

`|` | `TRACK_AUDIO` | `(*` | audio track type | `*)`
`|` | `TRACK_DATA` | `(*` | data track type | `*)`

the types of CD-ROM track possible
`type ``track = {`

`` | `id : `int`;`
`` | `kind : `track_type`;`
`` | `length : `int`;`
`` | `offset : `int`;`

}
`type ``cdrom_info = {`

`` | `num_tracks : `int`;`
`` | `curr_track : `int`;`
`` | `curr_frame : `int`;`
`` | `tracks : `track array`;`

}

### General API

An SDLcdrom_exception is raised on errors

    val get_num_drives : unit -> int

`get_num_drives` returns the number of CD-ROM drives on the system

    val drive_name : int -> string

`drive_name drive` returns a human-readable, system-dependent identifier for the CD-ROM. `drive` is the index of the drive. Drive indices start to 0 and end at `get_num_drives()-1`.

### CD-ROM drive handling

    val cd_open : int -> cdrom_drive

`cd_open drive` open a CD-ROM drive for access

    val cd_close : cdrom_drive -> unit

Closes the handle for the cdrom_drive

    val cd_status : cdrom_drive -> cdrom_drive_status

Returns the current status of the given drive.

    val cd_info : cdrom_drive -> cdrom_info

Raises `Trayempty` if there's no cd in the drive
Returns the table of contents of the CD and current play position

### Playing audio tracks

    val msf_of_frames : int -> int * int * int

    val frames_of_msf : int * int * int -> int

    val cd_play_tracks : cdrom_drive ->
           start_track:int ->
           start_frame:int -> num_tracks:int -> num_frames:int -> unit

`cd_play_tracks cdrom_drive start_track start_frame num_tracks num_frames` play the given CD with these parameters
Raises `Trayempty` if there's no cd in the drive
`start_track` : the starting track
`start_frame` : the starting frame
`num_tracks` : the number of tracks to play
`num_frames` : the number of frames to play

    val cd_play_track : cdrom_drive -> track -> unit

Play the track n on the given cdrom_drive

    val cd_pause : cdrom_drive -> unit

Pause play

    val cd_resume : cdrom_drive -> unit

Resume play

    val cd_stop : cdrom_drive -> unit

Stop play

    val cd_eject : cdrom_drive -> unit

Eject CD-ROM