Author: titmuss
Date: Fri Dec 19 15:21:38 2008
New Revision: 3589
URL: http://svn.slimdevices.com?rev=3589&root=Jive&view=rev
Log:
r3...@harrypotter (orig r3588): titmuss | 2008-12-19 23:20:54 +0000
r3...@harrypotter (orig r3587): titmuss | 2008-12-19 23:19:15 +0000
Bug: 10130
Description:
Fix crash with mp3 mono files.
Modified:
7.4/branches/pango/ (props changed)
7.4/branches/pango/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c
7.4/branches/pango/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h
Propchange: 7.4/branches/pango/
------------------------------------------------------------------------------
--- svk:merge (original)
+++ svk:merge Fri Dec 19 15:21:38 2008
@@ -2,8 +2,8 @@
bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.1/branches/discovery-refactor:2596
bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.1/trunk:2920
bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.2/trunk:2921
-bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.3/trunk:3550
-bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.4/trunk:3585
+bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.3/trunk:3587
+bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.4/trunk:3588
bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/7.0:2013
bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/SN:1083
bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/scrolling:1378
Modified:
7.4/branches/pango/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c
URL:
http://svn.slimdevices.com/7.4/branches/pango/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c?rev=3589&root=Jive&r1=3588&r2=3589&view=diff
==============================================================================
---
7.4/branches/pango/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c
(original)
+++
7.4/branches/pango/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c
Fri Dec 19 15:21:38 2008
@@ -20,7 +20,7 @@
*/
#define INPUT_BUFFER_SIZE 2890
-#define OUTPUT_BUFFER_FRAMES 2*32*36
+#define OUTPUT_BUFFER_FRAMES 2048
#define OUTPUT_BUFFER_BYTES (OUTPUT_BUFFER_FRAMES * sizeof(sample_t))
#define ID3_TAG_FLAG_FOOTERPRESENT 0x10
@@ -313,7 +313,7 @@
static void decode_mad_output(struct decode_mad *self) {
struct mad_pcm *pcm;
- sample_t *buf;
+ sample_t *buf, *buf_end;
mad_fixed_t *left, *right;
int i, offset = 0;
@@ -346,31 +346,17 @@
self->sample_rate = self->frame.header.samplerate;
buf = self->output_buffer;
+ buf_end = self->output_buffer + OUTPUT_BUFFER_FRAMES;
left = pcm->samples[0];
- right = pcm->samples[1];
if (pcm->channels == 2) {
- /* stero */
- assert(SAMPLES_TO_BYTES(pcm->length) <=
OUTPUT_BUFFER_BYTES);
-
- for (i=0; i<pcm->length; i++) {
- *buf++ = mad_fixed_to_32bit(*left++);
- *buf++ = mad_fixed_to_32bit(*right++);
- }
+ /* stereo */
+ right = pcm->samples[1];
}
else {
/* mono */
- sample_t s;
-
- assert(SAMPLES_TO_BYTES(pcm->length * 2) <=
OUTPUT_BUFFER_BYTES);
-
- for (i=0; i<pcm->length; i++) {
- s = mad_fixed_to_32bit(*left++);
-
- *buf++ = s;
- *buf++ = s;
- }
+ right = pcm->samples[0];
}
/* skip samples for the encoder delay */
@@ -384,8 +370,22 @@
DEBUG_TRACE("Skip encoder_delay=%d pcm->length=%d
offset=%d", self->encoder_delay, pcm->length, offset);
}
- decode_output_samples(self->output_buffer + (offset * 2),
- pcm->length - offset,
+ for (i=offset; i<pcm->length; i++) {
+ *buf++ = mad_fixed_to_32bit(*left++);
+ *buf++ = mad_fixed_to_32bit(*right++);
+
+ if (buf == buf_end) {
+ decode_output_samples(self->output_buffer,
+ (buf -
self->output_buffer) / 2,
+ self->sample_rate,
+ FALSE);
+
+ buf = self->output_buffer;
+ }
+ }
+
+ decode_output_samples(self->output_buffer,
+ (buf - self->output_buffer) / 2,
self->sample_rate,
FALSE);
}
Modified:
7.4/branches/pango/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h
URL:
http://svn.slimdevices.com/7.4/branches/pango/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h?rev=3589&root=Jive&r1=3588&r2=3589&view=diff
==============================================================================
---
7.4/branches/pango/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h
(original)
+++
7.4/branches/pango/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h
Fri Dec 19 15:21:38 2008
@@ -116,7 +116,7 @@
#define DECODE_FIFO_SIZE (10 * 2 * 44100 * sizeof(sample_t))
#define SAMPLES_TO_BYTES(n) (2 * (n) * sizeof(sample_t))
-#define BYTES_TO_SAMPLES(n) (n / (2 * sizeof(sample_t)))
+#define BYTES_TO_SAMPLES(n) ((n) / (2 * sizeof(sample_t)))
/* State variables for the current track */
extern u32_t decode_num_tracks_started;
_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/cgi-bin/mailman/listinfo/jive-checkins