diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2004-01-10 22:36:35 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2004-01-10 22:36:35 +0000 |
commit | e6c0297f1ca2234477aafc62e76a6428c56595d7 (patch) | |
tree | 33271efce54d54b46381b45a72844e68c8b264cd | |
parent | 909678c70767b5eafe9f5619c42f9c0e72404097 (diff) | |
download | ffmpeg-e6c0297f1ca2234477aafc62e76a6428c56595d7.tar.gz |
fixing some seek failure issues
Originally committed as revision 2688 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | ffplay.c | 13 | ||||
-rw-r--r-- | libavformat/avidec.c | 4 |
2 files changed, 10 insertions, 7 deletions
@@ -1406,15 +1406,16 @@ static int decode_thread(void *arg) #endif if (is->seek_req) { /* XXX: must lock decoder threads */ - if (is->audio_stream >= 0) { - packet_queue_flush(&is->audioq); - } - if (is->video_stream >= 0) { - packet_queue_flush(&is->videoq); - } ret = av_seek_frame(is->ic, -1, is->seek_pos); if (ret < 0) { fprintf(stderr, "%s: error while seeking\n", is->ic->filename); + }else{ + if (is->audio_stream >= 0) { + packet_queue_flush(&is->audioq); + } + if (is->video_stream >= 0) { + packet_queue_flush(&is->videoq); + } } is->seek_req = 0; } diff --git a/libavformat/avidec.c b/libavformat/avidec.c index 551e906cd4..361a52ff36 100644 --- a/libavformat/avidec.c +++ b/libavformat/avidec.c @@ -496,7 +496,8 @@ static int avi_load_index(AVFormatContext *s) AVIContext *avi = s->priv_data; ByteIOContext *pb = &s->pb; uint32_t tag, size; - + offset_t pos= url_ftell(pb); + url_fseek(pb, avi->movi_end, SEEK_SET); #ifdef DEBUG_SEEK printf("movi_end=0x%llx\n", avi->movi_end); @@ -529,6 +530,7 @@ static int avi_load_index(AVFormatContext *s) } } the_end: + url_fseek(pb, pos, SEEK_SET); return 0; } |