summaryrefslogtreecommitdiffstats
path: root/player
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-11-14 21:44:59 +0100
committerwm4 <wm4@nowhere>2015-11-14 21:49:48 +0100
commita790009a630ebf12772ead2915ca9d59ee7fdf72 (patch)
tree38aff47c3020b117db46e47d1fe8413238d8770e /player
parent542d88472f3e9ec8131d3470dfd02fd1cc36f3bd (diff)
downloadmpv-a790009a630ebf12772ead2915ca9d59ee7fdf72.tar.bz2
mpv-a790009a630ebf12772ead2915ca9d59ee7fdf72.tar.xz
player: account for minor VO underruns
If the player sends a frame with duration==0 to the VO, it can trivially underrun. Don't panic, but keep the correct time. Also, returning the absolute time from vo_get_next_frame_start_time() just to turn it into a float with relative time was silly. Rename it and make it return what the caller needs.
Diffstat (limited to 'player')
-rw-r--r--player/video.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/player/video.c b/player/video.c
index 043abeb3b1..531ad2ee06 100644
--- a/player/video.c
+++ b/player/video.c
@@ -1025,8 +1025,8 @@ static void handle_display_sync_frame(struct MPContext *mpctx,
// Estimate the video position, so we can calculate a good A/V difference
// value below. This is used to estimate A/V drift.
- double time_left = (vo_get_next_frame_start_time(vo) - mp_time_us()) / 1e6;
- time_left = MPMAX(time_left, 0);
+ double time_left = vo_get_delay(vo);
+
// We also know that the timing is (necessarily) off, because we have to
// align frame timings on the vsync boundaries. This is unavoidable, and
// for the sake of the A/V sync calculations we pretend it's perfect.