#!/usr/bin/perl use strict; use MyBuffer; use ExtUtils::testlib; use Soundzero; use Time::HiRes qw (usleep); my $buf = new MyBuffer (); sub my_callback; my $cnt = 0; my $pa = new Soundzero ({samplerate => 22050, bufferlen => 128, callback => \&my_callback }); my $chunksize = 1024; my $topbnd = $chunksize * 2; my $rbuf = ""; my $res; open (my $fh, "<", "tallis-22050-8-1.raw") or die "Can't open tallis: $!"; $pa->start; while ((defined ($res = read ($fh, $rbuf, $chunksize))) and $res) { $buf->write ($rbuf); while ($buf->remaining > $topbnd) { usleep (20000); } } die "Error during read: $!" unless ($res == 0); while ($buf->remaining > 1024) { }; $pa->stop; close ($fh); exit (0); sub my_callback { my $in = shift; $cnt++; return $buf->read (length ($in)); }