From 318bf57c3fb89a96008b114731e59063301ad6d1 Mon Sep 17 00:00:00 2001 From: Marton Balint Date: Sun, 24 Nov 2013 22:51:13 +0100 Subject: ffplay: do not wait for flushing the picture queue on flush packet It is no longer necessary. Also do frame timer and video current pos reset in the main thread because with the wait removed, the timing would not be optimal in the read thread. Signed-off-by: Marton Balint --- ffplay.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) (limited to 'ffplay.c') diff --git a/ffplay.c b/ffplay.c index bcbc30d545..104598b78c 100644 --- a/ffplay.c +++ b/ffplay.c @@ -1376,10 +1376,14 @@ retry: if (vp->serial != is->videoq.serial) { pictq_next_picture(is); + is->video_current_pos = -1; redisplay = 0; goto retry; } + if (lastvp->serial != vp->serial && !redisplay) + is->frame_timer = av_gettime() / 1000000.0; + if (is->paused) goto display; @@ -1670,15 +1674,6 @@ static int get_video_frame(VideoState *is, AVFrame *frame, AVPacket *pkt, int *s if (pkt->data == flush_pkt.data) { avcodec_flush_buffers(is->video_st->codec); - - SDL_LockMutex(is->pictq_mutex); - // Make sure there are no long delay timers (ideally we should just flush the queue but that's harder) - while (is->pictq_size && !is->videoq.abort_request) { - SDL_CondWait(is->pictq_cond, is->pictq_mutex); - } - is->video_current_pos = -1; - is->frame_timer = (double)av_gettime() / 1000000.0; - SDL_UnlockMutex(is->pictq_mutex); return 0; } -- cgit v1.2.3