summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2009-08-28 15:32:26 +0200
committerWim Taymans <wim.taymans@collabora.co.uk>2009-08-28 15:32:26 +0200
commit378b1e30e764d99bd8dbed752d9cc87f013d350b (patch)
treea9b9ea2cada4139021e90fc751410e6817f7df14
parent6cf894866301ec15c3873b8e68d28c7efc0f4845 (diff)
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.
-rw-r--r--gst/gstutils.c6
1 files 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);
}
/**