aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2004-01-10 22:36:35 +0000
committerMichael Niedermayer <michaelni@gmx.at>2004-01-10 22:36:35 +0000
commite6c0297f1ca2234477aafc62e76a6428c56595d7 (patch)
tree33271efce54d54b46381b45a72844e68c8b264cd
parent909678c70767b5eafe9f5619c42f9c0e72404097 (diff)
downloadffmpeg-e6c0297f1ca2234477aafc62e76a6428c56595d7.tar.gz
fixing some seek failure issues
Originally committed as revision 2688 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--ffplay.c13
-rw-r--r--libavformat/avidec.c4
2 files changed, 10 insertions, 7 deletions
diff --git a/ffplay.c b/ffplay.c
index c5c2ca1349..6fbb91e158 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -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;
}