ffplay: add delay multiple times to frame_timer if it is less than current time
If the picture queue is empty, or when the calculated delay is 0, frame_timer is not increased but we are still displaying the old frame. When we eventually get a frame, where the computed delay is positive, so we don't need to drop any more frames, then it is best to update frame_timer to be as near as the current time as it can. This way we dont't have to wait several frames to add the necesarry delays to frame_timer to reach current time, therefore there are no extra frame drops after reaching a positive delay. Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
d2d8e1e599
commit
abb0e4f637
3
ffplay.c
3
ffplay.c
@ -1142,7 +1142,8 @@ retry:
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
is->frame_last_pts = vp->pts;
|
is->frame_last_pts = vp->pts;
|
||||||
is->frame_timer += delay;
|
if (delay > 0)
|
||||||
|
is->frame_timer += delay * FFMAX(1, floor((time-is->frame_timer) / delay));
|
||||||
|
|
||||||
/* update current video pts */
|
/* update current video pts */
|
||||||
is->video_current_pts = vp->pts;
|
is->video_current_pts = vp->pts;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user