
=pod

=head1 NAME

SDL::CD -- SDL Bindings for structure SDL_CD

=head1 CATEGORY

Core, CDROM, Structure

=head1 SYNOPSIS

 use SDL;
 use SDL::CDROM;
 use SDL::CD;

 SDL::init(SDL_INIT_CDROM);

 my $drives = SDL::CDROM::num_drives;
 
 if( $drives > 0 )
 {
  my $CD = SDL::CD->new( 0 );
 
   if($CD)
   {
	... 
   }
  
 }
 
=head1 CONSTANTS

The constants are exported by default. You can avoid this by doing:

 use SDL::CD ();

and access them directly:

 SDL::CD::CD_TRAYEMPTY;

or by choosing the export tags below:

Export tag: ':status'

 CD_TRAYEMPTY
 CD_STOPPED
 CD_PLAYING
 CD_PAUSED
 CD_ERROR

Export tag: ':defaults'

 CD_FPS
 SDL_MAX_TRACKS

=head1 METHOD

=head2 new

 my $CD = SDL::CD->new($drive)

Makes a new SDL::CD object. Returns C<undef> if the drive is busy or inaccessible. 

=head2 status
 
 my $status = $CD->status(); 

Returns the current status of the CD tray 

Returns on of the following constants:

=over 

=item *

CD_TRAYEMPTY

=item *

CD_STOPPED

=item *

CD_PLAYING

=item *

CD_PAUSED

=item *

CD_ERROR

=back

=head2 play_tracks

 $CD->play_tracks($start_track, $start_frame, $ntracks, $nframes)

Plays the given SDL::CD starting at track $start_track, for $ntracks tracks.  

$start_frame is the frame offset, from the beginning of the $start_track, at which to start. $nframes is the frame offset, from the 
beginning of the last track ($start_track+$ntracks), at which to end playing.

play_tracks() should only be called after calling L</status> to get information about the CD.

B<Note: Data tracks are ignored.>

Returns C<0>, or C<-1> if there was an error.  

=head2 play
 
 $CD->play($start, $length);

Plays the given SDL::CD , starting a frame $start for $length frames. 

Returns C<0> on success, C<-1> on error

=head2 pause 

 $CD->pause();

Pauses play on CD

Returns C<0> on success, or C<-1> on an error.  

=head2 resume

 $CD->resume();

Returns C<0> on success, or C<-1> on an error.  

=head2 stop

 $CD->stop();

Stops play on the CD.  

Returns C<0> on success, or C<-1> on an error.  

=head2 eject

 $CD->eject();

Ejects the CD.

Returns C<0> on success, or C<-1> on an error.   

=head2 id

 $CD->id();

Private drive identifier

=head2 num_tracks

 $CD->num_tracks();

Number of tracks on the CD

=head2 cur_track 

 $CD->cur_track();

Current track on the CD;

=head2 track

 my $track =  $CD->track($number);
 
Retrives track description of track $number in CD. See L<SDL::CDTrack>.

=head2 FRAMES_TO_MSF

 my ($min, $sec, $fra) = FRAMES_TO_MSF($frames);

Conversion functions from frames to Minute/Second/Frames

=head2 MSF_TO_FRAMES

 my $frames = MSF_TO_FRAMES($min, $sec, $fra);

=head1 SEE ALSO

L<SDL::CDROM>, L<SDL::CDTrack>

=head1 AUTHORS

See L<SDL/AUTHORS>.

=cut
