Author: agrundman
Date: Tue Jul 20 11:34:22 2010
New Revision: 8973

URL: http://svn.slimdevices.com/jive?rev=8973&view=rev
Log:
Fix a few bugs related to the 64-bit size of lame_samples_remain

Modified:
    7.6/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c

Modified: 7.6/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c
URL: 
http://svn.slimdevices.com/jive/7.6/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c?rev=8973&r1=8972&r2=8973&view=diff
==============================================================================
--- 7.6/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c 
(original)
+++ 7.6/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c Tue Jul 
20 11:34:22 2010
@@ -74,7 +74,7 @@
        struct mad_bitptr ptr = self->stream.anc_ptr;
        unsigned int bitlen = self->stream.anc_bitlen;
        u32_t magic, flags, frames;
-
+
        if (bitlen < 64) {
                LOG_DEBUG(log_audio_codec, "no xing header");
                return;
@@ -156,11 +156,11 @@
                self->encoder_padding = 0;
        }
        
-       self->lame_samples        = frames * 1152UL;
+       self->lame_samples        = frames * 1152ULL;
        self->lame_samples_remain = self->lame_samples - self->encoder_delay - 
self->encoder_padding;
 
        LOG_DEBUG(log_audio_codec, "encoder delay=%d padding=%d", 
self->encoder_delay, self->encoder_padding);
-       LOG_DEBUG(log_audio_codec, "total LAME samples %ld", 
self->lame_samples);
+       LOG_DEBUG(log_audio_codec, "total LAME samples %llu", 
self->lame_samples);
 }
 
 
@@ -427,9 +427,9 @@
         */
        if (self->encoder_padding && !streambuf_is_icy()) {
                if (pcm->length > self->lame_samples_remain) {
-                       LOG_DEBUG(log_audio_codec, "Removing encoder padding, 
lame_samples_remain=%ld", self->lame_samples_remain);
-
-                       pcm->length = self->lame_samples_remain;
+                       LOG_DEBUG(log_audio_codec, "Removing encoder padding, 
lame_samples_remain=%llu", self->lame_samples_remain);
+
+                       pcm->length = (unsigned short)self->lame_samples_remain;
                }
 
                /* Bug 16233, if total decoded samples gets beyond lame_samples 
+ 1152, assume we were given
@@ -449,8 +449,14 @@
                        nsamples = (buf - self->output_buffer) / 2;
                        decode_output_samples(self->output_buffer, nsamples, 
self->sample_rate);
                        
-                       if (self->encoder_padding)
-                               self->lame_samples_remain -= nsamples;
+                       if (self->encoder_padding) {
+                               if (nsamples > self->lame_samples_remain) {
+                                       self->lame_samples_remain = 0;
+                               }
+                               else {
+                                       self->lame_samples_remain -= nsamples;
+                               }
+                       }
 
                        buf = self->output_buffer;
                }
@@ -460,8 +466,14 @@
        if (nsamples) {
                decode_output_samples(self->output_buffer, nsamples, 
self->sample_rate);
                
-               if (self->encoder_padding)
-                       self->lame_samples_remain -= nsamples;
+               if (self->encoder_padding) {
+                       if (nsamples > self->lame_samples_remain) {
+                               self->lame_samples_remain = 0;
+                       }
+                       else {
+                               self->lame_samples_remain -= nsamples;
+                       }
+               }
        }
 
        /* If we've come to the guard pointer, we're done */

_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/jive-checkins

Reply via email to