summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/codecs/aac.c10
-rw-r--r--apps/codecs/libm4a/m4a.c3
-rw-r--r--docs/CREDITS1
3 files changed, 8 insertions, 6 deletions
diff --git a/apps/codecs/aac.c b/apps/codecs/aac.c
index 60460355da..7d706f4fd8 100644
--- a/apps/codecs/aac.c
+++ b/apps/codecs/aac.c
@@ -53,6 +53,7 @@ enum codec_status codec_main(void)
int err;
uint32_t s = 0;
unsigned char c = 0;
+ void *ret;
/* Generic codec initialisation */
ci->configure(DSP_SET_STEREO_MODE, STEREO_NONINTERLEAVED);
@@ -179,11 +180,10 @@ next_track:
buffer=ci->request_buffer(&n,sample_byte_size);
/* Decode one block - returned samples will be host-endian */
- NeAACDecDecode(decoder, &frame_info, buffer, n);
- /* Ignore return value, we access samples in the decoder struct
- * directly.
- */
- if (frame_info.error > 0) {
+ ret = NeAACDecDecode(decoder, &frame_info, buffer, n);
+
+ /* NeAACDecDecode may sometimes return NULL without setting error. */
+ if (ret == NULL || frame_info.error > 0) {
LOGF("FAAD: decode error '%s'\n", NeAACDecGetErrorMessage(frame_info.error));
err = CODEC_ERROR;
goto done;
diff --git a/apps/codecs/libm4a/m4a.c b/apps/codecs/libm4a/m4a.c
index f0666403ed..92e619db35 100644
--- a/apps/codecs/libm4a/m4a.c
+++ b/apps/codecs/libm4a/m4a.c
@@ -194,7 +194,8 @@ unsigned int get_sample_offset(demux_res_t *demux_res, uint32_t sample)
prev_chunk_samples = demux_res->sample_to_chunk[i].num_samples;
}
- if (sample >= demux_res->sample_to_chunk[0].num_samples)
+ if (prev_chunk_samples > 0 &&
+ sample >= demux_res->sample_to_chunk[0].num_samples)
{
chunk = prev_chunk + (sample - total_samples) / prev_chunk_samples;
}
diff --git a/docs/CREDITS b/docs/CREDITS
index 0eddfbef49..23fe2ee292 100644
--- a/docs/CREDITS
+++ b/docs/CREDITS
@@ -508,6 +508,7 @@ Simon Rothen
Pavel Rzehák
Diego Herranz
Viktor Varga
+Juliusz Chroboczek
The libmad team
The wavpack team