You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-09-16 08:36:51 +02:00
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:
13
ffplay.c
13
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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user