diff --git a/lib/rbcodec/codecs/aac.c b/lib/rbcodec/codecs/aac.c index 8b06f5aa0e..0a4313e69e 100644 --- a/lib/rbcodec/codecs/aac.c +++ b/lib/rbcodec/codecs/aac.c @@ -202,12 +202,7 @@ enum codec_status codec_run(void) { ci->advance_buffer(file_offset - ci->curpos); } - else if (file_offset == 0) - { - LOGF("AAC: get_sample_offset error\n"); - return CODEC_ERROR; - } - + /* Request the required number of bytes from the input buffer */ buffer=ci->request_buffer(&n, FAAD_BYTE_BUFFER_SIZE); diff --git a/lib/rbcodec/codecs/libm4a/m4a.c b/lib/rbcodec/codecs/libm4a/m4a.c index 17af4cfece..958d0b1575 100644 --- a/lib/rbcodec/codecs/libm4a/m4a.c +++ b/lib/rbcodec/codecs/libm4a/m4a.c @@ -122,16 +122,19 @@ void stream_create(stream_t *stream,struct codec_api* ci) int m4a_check_sample_offset(demux_res_t *demux_res, uint32_t frame, uint32_t *start) { uint32_t i = *start; - for (i=0; inum_lookup_table; ++i) + for (;i < demux_res->num_lookup_table; ++i) { - if (demux_res->lookup_table[i].sample > frame || - demux_res->lookup_table[i].offset == 0) - return -1; - if (demux_res->lookup_table[i].sample == frame) + if (demux_res->lookup_table[i].sample > frame) break; + + if (demux_res->lookup_table[i].sample == frame) + { + *start = i; + return demux_res->lookup_table[i].offset; + } } *start = i; - return demux_res->lookup_table[i].offset; + return -1; } /* Seek to desired sound sample location. Return 1 on success (and modify