From 0f646a2233fed90fe9c2c403805b889eb840f3df Mon Sep 17 00:00:00 2001 From: Aurelien Jacobs Date: Mon, 25 Aug 2008 00:15:49 +0000 Subject: [PATCH] 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 Originally committed as revision 14959 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/matroskadec.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 9ab8126aea..68d3aa38c1 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -1657,11 +1657,15 @@ static int matroska_read_seek(AVFormatContext *s, int stream_index, if (timestamp < 0) timestamp = 0; - index = av_index_search_timestamp(st, timestamp, flags); - if (index < 0) - return 0; + 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; url_fseek(s->pb, st->index_entries[index].pos, SEEK_SET); matroska->skip_to_keyframe = !(flags & AVSEEK_FLAG_ANY);