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
[email protected]
http://lists.slimdevices.com/mailman/listinfo/jive-checkins