Author: ayoung Date: Wed Feb 9 07:44:15 2011 New Revision: 9312 URL: http://svn.slimdevices.com/jive?rev=9312&view=rev Log: bug 16908: ALAC fixed at 44100/2/16 & poor error handling Correct number-of-frames calculation.
Modified: 7.6/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alac.c Modified: 7.6/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alac.c URL: http://svn.slimdevices.com/jive/7.6/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alac.c?rev=9312&r1=9311&r2=9312&view=diff ============================================================================== --- 7.6/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alac.c (original) +++ 7.6/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alac.c Wed Feb 9 07:44:15 2011 @@ -49,6 +49,7 @@ int i, frames; size_t conf_size; u8_t *conf; + int samplesize; if (current_decoder_state & DECODE_STATE_ERROR) { return FALSE; @@ -112,7 +113,20 @@ return FALSE; } - frames = outputsize / sizeof(u16_t) / self->num_channels; + switch (self->alacdec.sample_fmt) { + case SAMPLE_FMT_S16: + samplesize = 2; + break; + case SAMPLE_FMT_S32: + samplesize = 4; + break; + default: + LOG_WARN(log_audio_codec, "unsupported sample format: %d", self->alacdec.sample_fmt); + current_decoder_state |= DECODE_STATE_ERROR | DECODE_STATE_NOT_SUPPORTED; + return FALSE; + } + + frames = outputsize / samplesize / self->num_channels; wptr = ((sample_t *)(void *)self->output_buffer) + (frames * 2); @@ -156,11 +170,6 @@ /* nothing to do */ } break; - - default: - LOG_WARN(log_audio_codec, "unsupported sample format: %d", self->alacdec.sample_fmt); - current_decoder_state |= DECODE_STATE_ERROR | DECODE_STATE_NOT_SUPPORTED; - return FALSE; } decode_output_samples(self->output_buffer, _______________________________________________ Jive-checkins mailing list Jive-checkins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/jive-checkins