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 <cus@passwd.hu>
This commit is contained in:
Marton Balint 2013-11-24 22:51:13 +01:00
parent 90539cea33
commit 318bf57c3f
1 changed files with 4 additions and 9 deletions

View File

@ -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;
}