Fixed the pod path in archive
[sdlgit/SDL_perl.git] / test / loopwave.pl
CommitLineData
8fde61e3 1#!/usr/bin/env perl
2
3use SDL;
24379be6 4use SDL::Event;
084b921f 5use Carp;
8fde61e3 6
084b921f 7croak "Could not initialize SDL: ", SDL::GetError()
24379be6 8 if ( 0 > SDL::Init(SDL_INIT_AUDIO));
8fde61e3 9
10$ARGV[0] ||= 'data/sample.wav';
11
084b921f 12croak "usage: $0 [wavefile]\n"
8fde61e3 13 if ( in $ARGV[0], qw/ -h --help -? /);
14
15my ($wav_spec,$wav_buffer,$wav_len,$wav_pos) = (0,0,0,0);
16
17my $done = 0;
18
19$fillerup = sub {
20 my ($data,$len) = @_;
21
22 $wav_ptr = $wav_buffer + $wav_pos;
23 $wav_remainder = $wav_len - $wav_pos;
24
25 while ( $wav_remainder <= $len ) {
26 SDL::MixAudio($data,$wav_ptr,$wav_remainder,SDL_MIX_MAXVOLUME);
27 $data += $wav_remainder;
28 $len -= $wav_remainder;
29 $wav_ptr = $wav_buffer;
30 $wav_remainder = $wav_len;
31 $wav_pos = 0;
32 }
33 SDL::MixAudio($data,$wav_ptr,$len,SDL_MIX_MAXVOLUME);
34 $wav_pos += $len;
35};
36
37$poked = sub {
38 $done = 1;
39};
40
41$SIG{HUP} = $poked;
42$SIG{INT} = $poked;
43$SIG{QUIT} = $poked;
44$SIG{TERM} = $poked;
45
46$spec = SDL::NewAudioSpec(44100,AUDIO_S16,2,4096);
47
48$wave = SDL::LoadWAV($ARGV[0],$spec);
49
50($wav_spec,$wav_buffer,$wav_len) = @$wave;
51
084b921f 52croak "Could not load wav file $ARGV[0], ", SDL::GetError(), "\n" unless ( $wav_len );
8fde61e3 53
084b921f 54croak "Could not open audio ", SDL::GetError()
8fde61e3 55 if (0 > SDL::OpenAudio($wav_spec,$fillerup));
56
57SDL::PauseAudio(0);
58
59print "Using audio driver: ", SDL::AudioDriverName(), "\n";
60
24379be6 61while (! $done && ( SDL::GetAudioStatus() == SDL_AUDIO_PLAYING)) {
8fde61e3 62 SDL::Delay(1000);
63}
64
65