diff --git a/ChangeLog b/ChangeLog index ab1fb89ebb..149c8b478d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-11-25 Wim Taymans + + * gst/gstutils.c: (gst_util_uint64_scale_int64), + (gst_util_uint64_scale_int): + Optimisations, remove unneeded vars. + 2005-11-25 Wim Taymans * check/gst/gstutils.c: (GST_START_TEST), (gst_utils_suite): diff --git a/gst/gstutils.c b/gst/gstutils.c index 3a182c9369..361684ab41 100644 --- a/gst/gstutils.c +++ b/gst/gstutils.c @@ -504,24 +504,22 @@ gst_util_uint64_scale_int (guint64 val, gint num, gint denom) /* simple case */ result.ll = val * num / denom; } else { - GstUInt64 gval, low, high, temp; + GstUInt64 low, high; /* do 96 bits mult/div */ - gval.ll = val; - low.ll = ((guint64) gval.l.low) * num; - high.ll = ((guint64) gval.l.high) * num + (low.l.high); - result.ll = (high.ll / denom); - temp.l.high = (high.ll % denom); - temp.l.low = (low.l.low); - temp.ll /= denom; + low.ll = val; + result.ll = ((guint64) low.l.low) * num; + high.ll = ((guint64) low.l.high) * num + (result.l.high); + + low.ll = high.ll / denom; + result.l.high = high.ll % denom; + result.ll /= denom; /* avoid overflow */ - if (result.ll + temp.l.high > G_MAXUINT32) + if (low.ll + result.l.high > G_MAXUINT32) goto overflow; - result.l.high = result.l.low; - result.l.low = 0; - result.ll += temp.ll; + result.l.high += low.l.low; } return result.ll;