/
CD.pm
44 lines (36 loc) · 988 Bytes
/
CD.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package SDL::CD;
use strict;
use warnings;
use vars qw(@ISA @EXPORT @EXPORT_OK);
require Exporter;
require DynaLoader;
use SDL::Constants ':SDL::CDROM';
our @ISA = qw(Exporter DynaLoader);
use SDL::Internal::Loader;
internal_load_dlls(__PACKAGE__);
bootstrap SDL::CD;
use base 'Exporter';
our @EXPORT = @{ $SDL::Constants::EXPORT_TAGS{'SDL::CDROM'} };
our %EXPORT_TAGS = (
all => \@EXPORT,
format => $SDL::Constants::EXPORT_TAGS{'SDL::CDROM/default'},
status => $SDL::Constants::EXPORT_TAGS{'SDL::CDROM/status'},
track_type => $SDL::Constants::EXPORT_TAGS{'SDL::CDROM/track_type'}
);
# Conversion functions from frames to Minute/Second/Frames and vice versa
sub FRAMES_TO_MSF {
my $frames = shift;
my $F = $frames % CD_FPS;
$frames /= CD_FPS;
my $S = $frames % 60;
$frames /= 60;
my $M = $frames;
return ( $M, $S, $F );
}
sub MSF_TO_FRAMES {
my $M = shift;
my $S = shift;
my $F = shift;
return ( $M * 60 * CD_FPS + $S * CD_FPS + $F );
}
1;