aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarton Balint <cus@passwd.hu>2011-10-09 16:52:28 +0200
committerMarton Balint <cus@passwd.hu>2011-10-16 19:21:01 +0200
commitabb0e4f63772fe96f5e221b8a579180cb4ebe5a9 (patch)
tree56234b2b299f2ef6e2bdd7e8d78c45088b5b9738
parentd2d8e1e599a4b5c01e5be9267ac85105e843d928 (diff)
downloadffmpeg-abb0e4f63772fe96f5e221b8a579180cb4ebe5a9.tar.gz
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>
-rw-r--r--ffplay.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/ffplay.c b/ffplay.c
index 58ed5b8788..a0c8487637 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -1142,7 +1142,8 @@ retry:
return;
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 */
is->video_current_pts = vp->pts;