diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2009-08-28 15:32:26 +0200 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2009-08-28 15:32:26 +0200 |
commit | 378b1e30e764d99bd8dbed752d9cc87f013d350b (patch) | |
tree | a9b9ea2cada4139021e90fc751410e6817f7df14 | |
parent | 6cf894866301ec15c3873b8e68d28c7efc0f4845 (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.c | 6 |
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); } /** |