From 3d968fc620da8781b06044af2ec38ea2a9f95d41 Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 18 Aug 2014 23:01:13 +0200 Subject: video: add VOCTRL_GET_RECENT_FLIP_TIME This could be used by VO implementations to report a recent vsync time to the generic VO code, which in turn will use it and the display FPS to estimate at which point in time the next vsync will happen. --- video/out/vo.c | 7 ++++++- video/out/vo.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/video/out/vo.c b/video/out/vo.c index f047704c05..f920e12da8 100644 --- a/video/out/vo.c +++ b/video/out/vo.c @@ -589,7 +589,12 @@ static bool render_frame(struct vo *vo) else vo->driver->flip_page(vo); - in->last_flip = mp_time_us(); + in->last_flip = -1; + + vo->driver->control(vo, VOCTRL_GET_RECENT_FLIP_TIME, &in->last_flip); + + if (in->last_flip < 0) + in->last_flip = mp_time_us(); long phase = in->last_flip % in->vsync_interval; MP_DBG(vo, "phase: %ld\n", phase); diff --git a/video/out/vo.h b/video/out/vo.h index 93094117a6..a384ed5ad6 100644 --- a/video/out/vo.h +++ b/video/out/vo.h @@ -86,6 +86,7 @@ enum mp_voctrl { VOCTRL_GET_ICC_PROFILE_PATH, // char** VOCTRL_GET_DISPLAY_FPS, // double* + VOCTRL_GET_RECENT_FLIP_TIME, // int64_t* (using mp_time_us()) VOCTRL_GET_PREF_DEINT, // int* }; -- cgit v1.2.3