[Slimp3-checkins] CVS: slimp3/server/lib/SliMP3 Stream.pm,1.58,1.59
Brought to you by:
blackketter,
slimdevices
From: dean b. <bla...@us...> - 2003-08-22 02:08:34
|
Update of /cvsroot/slimp3/slimp3/server/lib/SliMP3 In directory sc8-pr-cvs1:/tmp/cvs-serv13382/lib/SliMP3 Modified Files: Stream.pm Log Message: Fixed another problem with CUE files. We were inserting the occasional space character between songs. This forces the MP3 decoder in SLIMP3 to resync, which is usually fine, except with CUE files. So now, we do some extra work to send an even number of bytes of contiguous data. Another fix for the number button functions when browsing the music library from the remote. Index: Stream.pm =================================================================== RCS file: /cvsroot/slimp3/slimp3/server/lib/SliMP3/Stream.pm,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** Stream.pm 17 Jul 2003 23:36:34 -0000 1.58 --- Stream.pm 21 Aug 2003 20:33:02 -0000 1.59 *************** *** 37,40 **** --- 37,41 ---- my %fullness; # number of bytes in the buffer as of the last packet my %lastAck; # timeout in the case that the player disappears completely. + my %lastByte; # if we get an odd number of bytes from the upper level, hold on to the last one. # *************** *** 384,387 **** --- 385,390 ---- $requestedChunkSize = $remainingSpace; } + + if (defined($lastByte{$client})) { $requestedChunkSize--; } my $chunkRef = SliMP3::Playlist::nextChunk($client, $requestedChunkSize); *************** *** 393,404 **** } ! my $newChunkRef = $chunkRef; ! $len = length($$newChunkRef); ! # We must send an even number of bytes. if (($len % 2) != 0) { ! my $chunk = $$newChunkRef . ' '; ! $newChunkRef = \$chunk; ! $len++; } --- 396,413 ---- } ! if (defined($lastByte{$client})) { ! $$chunkRef = $lastByte{$client} . $$chunkRef; ! delete($lastByte{$client}); ! } ! ! $len = length($$chunkRef); ! # We must send an even number of bytes. if (($len % 2) != 0) { ! use bytes; ! $lastByte{$client} = substr($$chunkRef, -1, 1); ! print ord($lastByte{$client}); ! $$chunkRef = substr($$chunkRef, 0, -1); ! $len--; } *************** *** 416,420 **** $pkt->{'wptr'} = $curWptr; $pkt->{'len'} = $len; ! $pkt->{'chunkref'} = $newChunkRef; $curWptr = $curWptr + $len/2; --- 425,429 ---- $pkt->{'wptr'} = $curWptr; $pkt->{'len'} = $len; ! $pkt->{'chunkref'} = $chunkRef; $curWptr = $curWptr + $len/2; |