summaryrefslogtreecommitdiffstats
path: root/lib/rbcodec/codecs/libm4a/m4a.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbcodec/codecs/libm4a/m4a.c')
-rw-r--r--lib/rbcodec/codecs/libm4a/m4a.c15
1 files changed, 9 insertions, 6 deletions
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; i<demux_res->num_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