#!/usr/bin/perl use strict; use MyBuffer; use ExtUtils::testlib; use Soundzero; use Time::HiRes qw (usleep); use Audio::Wav; my $fname = shift || exit; my $buf = new MyBuffer (); my $wav = Audio::Wav->new->read ($fname); my $sample_rate = $wav->details->{'sample_rate'}; my $bits_sample = $wav->details->{'bits_sample'}; my $num_channels = $wav->details->{'channels'}; sub my_callback; my $cnt = 0; my $pa = new Soundzero ({samplerate => $sample_rate, bufferlen => 128, callback => \&my_callback }); my $chunksize = 512; my $topbnd = $chunksize * 2; my $rbuf = ""; my $res; $pa->start; while (defined ($rbuf = $wav->read_raw ($chunksize))) { print length ($rbuf), "\n"; $buf->write ($rbuf); while ($buf->remaining > $topbnd) { usleep (($chunksize * (1000000/$sample_rate))/5); } } # die "Error during read: $!" # unless ($res == 0); # while ($buf->remaining > 1024) { }; $pa->stop; exit (0); sub my_callback { my $in = shift; $cnt++; return $buf->read (length ($in)); }