diff options
author | wm4 <wm4@nowhere> | 2015-11-14 21:44:59 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-11-14 21:49:48 +0100 |
commit | a790009a630ebf12772ead2915ca9d59ee7fdf72 (patch) | |
tree | 38aff47c3020b117db46e47d1fe8413238d8770e /player/video.c | |
parent | 542d88472f3e9ec8131d3470dfd02fd1cc36f3bd (diff) | |
download | mpv-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/video.c')
-rw-r--r-- | player/video.c | 4 |
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. |