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