Mercurial > libavformat.hg
changeset 3774:fa5cc40e0164 libavformat
matroskadec: full seeking support in index-less files
when trying to seek past the last index entry, just parse more clusters to add them to the index, until an index entry match the desired position
author | aurel |
---|---|
date | Mon, 25 Aug 2008 00:15:49 +0000 |
parents | 2533332ca752 |
children | f4eb5cc927f9 |
files | matroskadec.c |
diffstat | 1 files changed, 7 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/matroskadec.c Mon Aug 25 00:09:08 2008 +0000 +++ b/matroskadec.c Mon Aug 25 00:15:49 2008 +0000 @@ -1657,12 +1657,16 @@ if (timestamp < 0) timestamp = 0; - index = av_index_search_timestamp(st, timestamp, flags); + while ((index = av_index_search_timestamp(st, timestamp, flags)) < 0) { + matroska_clear_queue(matroska); + if (matroska_parse_cluster(matroska) < 0) + break; + } + + matroska_clear_queue(matroska); if (index < 0) return 0; - matroska_clear_queue(matroska); - url_fseek(s->pb, st->index_entries[index].pos, SEEK_SET); matroska->skip_to_keyframe = !(flags & AVSEEK_FLAG_ANY); matroska->skip_to_stream = st;