From: michael Date: Sun, 19 Apr 2009 20:24:44 +0000 (+0000) Subject: Make sure that video frames are flushed at EOF. X-Git-Url: http://rtime.felk.cvut.cz/gitweb/frescor/ffmpeg.git/commitdiff_plain/4cafd99a4b24f9b7911f18d385e8c83aa7a8be67 Make sure that video frames are flushed at EOF. This should fix a regression. git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18624 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b --- diff --git a/ffplay.c b/ffplay.c index fb053860a..6984ff8ec 100644 --- a/ffplay.c +++ b/ffplay.c @@ -1919,6 +1919,7 @@ static int decode_thread(void *arg) int err, i, ret, video_index, audio_index, subtitle_index; AVPacket pkt1, *pkt = &pkt1; AVFormatParameters params, *ap = ¶ms; + int eof=0; video_index = -1; audio_index = -1; @@ -2072,7 +2073,7 @@ static int decode_thread(void *arg) SDL_Delay(10); continue; } - if(url_feof(ic->pb)) { + if(url_feof(ic->pb) || eof) { av_init_packet(pkt); pkt->data=NULL; pkt->size=0; @@ -2082,11 +2083,12 @@ static int decode_thread(void *arg) } ret = av_read_frame(ic, pkt); if (ret < 0) { - if (ret != AVERROR_EOF && url_ferror(ic->pb) == 0) { - SDL_Delay(100); /* wait for user event */ - continue; - } else + if (ret == AVERROR_EOF) + eof=1; + if (url_ferror(ic->pb)) break; + SDL_Delay(100); /* wait for user event */ + continue; } if (pkt->stream_index == is->audio_stream) { packet_queue_put(&is->audioq, pkt);