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

Reply via email to