From 378b1e30e764d99bd8dbed752d9cc87f013d350b Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 28 Aug 2009 15:32:26 +0200 Subject: [PATCH] utils: use shift instead of division We can use a shift for scaling the denominator instead of a divide since the denom is always positive. This avoids having the compiler generate code for the different rounding rules when scaling negative values. --- gst/gstutils.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gst/gstutils.c b/gst/gstutils.c index 8cb785991e..eeea4bfd99 100644 --- a/gst/gstutils.c +++ b/gst/gstutils.c @@ -521,7 +521,7 @@ gst_util_uint64_scale (guint64 val, guint64 num, guint64 denom) guint64 gst_util_uint64_scale_round (guint64 val, guint64 num, guint64 denom) { - return _gst_util_uint64_scale (val, num, denom, denom / 2); + return _gst_util_uint64_scale (val, num, denom, denom >> 1); } /** @@ -622,7 +622,9 @@ gst_util_uint64_scale_int (guint64 val, gint num, gint denom) guint64 gst_util_uint64_scale_int_round (guint64 val, gint num, gint denom) { - return _gst_util_uint64_scale_int (val, num, denom, denom / 2); + /* we can use a shift to divide by 2 because denom is required to be + * positive. */ + return _gst_util_uint64_scale_int (val, num, denom, denom >> 1); } /**