summaryrefslogtreecommitdiff
path: root/ffplay.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2009-04-19 20:24:44 +0000
committerMichael Niedermayer <michaelni@gmx.at>2009-04-19 20:24:44 +0000
commit75bb7b0addbe11b1a2a656107a074b7d5dc492e5 (patch)
tree33a9fd8c325dea78d735da0b20d4899455fe9b5d /ffplay.c
parent120b4557f3deb855d3438a336a1e610d03c1d8ce (diff)
Make sure that video frames are flushed at EOF.
This should fix a regression. Originally committed as revision 18624 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'ffplay.c')
-rw-r--r--ffplay.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/ffplay.c b/ffplay.c
index fb053860a1..6984ff8ecf 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 = &params;
+ 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);