summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/vl
diff options
context:
space:
mode:
authorMaarten Lankhorst <[email protected]>2013-01-19 23:03:53 +0100
committerMaarten Lankhorst <[email protected]>2013-01-21 23:49:56 +0100
commit3a91e7955ace2885cfb23089852018a8037ca134 (patch)
treee4114c731312cdcd151932070128ceb5cfef9f24 /src/gallium/auxiliary/vl
parent71c87e42e17a160dfc5c2a47c9cbaa297c34c484 (diff)
vl: round next_msc to integer frame, and kill skew_msc
This reduces jitter slightly in a cleaner way, without desynchronizing mplayer2 as badly when falling behind. Signed-off-by: Maarten Lankhorst <[email protected]> Reviewed-by: Christian König <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary/vl')
-rw-r--r--src/gallium/auxiliary/vl/vl_winsys_dri.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/src/gallium/auxiliary/vl/vl_winsys_dri.c b/src/gallium/auxiliary/vl/vl_winsys_dri.c
index 95aabac17e0..560c9147683 100644
--- a/src/gallium/auxiliary/vl/vl_winsys_dri.c
+++ b/src/gallium/auxiliary/vl/vl_winsys_dri.c
@@ -65,7 +65,7 @@ struct vl_dri_screen
xcb_dri2_wait_sbc_cookie_t wait_cookie;
xcb_dri2_get_buffers_cookie_t buffers_cookie;
- int64_t last_ust, ns_frame, last_msc, next_msc, skew_msc;
+ int64_t last_ust, ns_frame, last_msc, next_msc;
};
static const unsigned int attachments[1] = { XCB_DRI2_ATTACHMENT_BUFFER_BACK_LEFT };
@@ -81,9 +81,6 @@ vl_dri2_handle_stamps(struct vl_dri_screen* scrn,
if (scrn->last_ust && scrn->last_msc && (ust > scrn->last_ust) && (msc > scrn->last_msc))
scrn->ns_frame = (ust - scrn->last_ust) / (msc - scrn->last_msc);
- if (scrn->next_msc && (scrn->next_msc < msc))
- scrn->skew_msc++;
-
scrn->last_ust = ust;
scrn->last_msc = msc;
}
@@ -282,7 +279,7 @@ vl_screen_set_next_timestamp(struct vl_screen *vscreen, uint64_t stamp)
struct vl_dri_screen *scrn = (struct vl_dri_screen*)vscreen;
assert(scrn);
if (stamp && scrn->last_ust && scrn->ns_frame && scrn->last_msc)
- scrn->next_msc = ((int64_t)stamp - scrn->last_ust) / scrn->ns_frame + scrn->last_msc + scrn->skew_msc;
+ scrn->next_msc = ((int64_t)stamp - scrn->last_ust + scrn->ns_frame/2) / scrn->ns_frame + scrn->last_msc;
else
scrn->next_msc = 0;
}