gst/gstutils.c: Optimisations, remove unneeded vars.

Original commit message from CVS:
* gst/gstutils.c: (gst_util_uint64_scale_int64),
(gst_util_uint64_scale_int):
Optimisations, remove unneeded vars.
This commit is contained in:
Wim Taymans 2005-11-25 11:38:38 +00:00
parent fb7302fc41
commit 7386cce105
2 changed files with 16 additions and 12 deletions

View file

@ -1,3 +1,9 @@
2005-11-25 Wim Taymans <wim@fluendo.com>
* gst/gstutils.c: (gst_util_uint64_scale_int64),
(gst_util_uint64_scale_int):
Optimisations, remove unneeded vars.
2005-11-25 Wim Taymans <wim@fluendo.com>
* check/gst/gstutils.c: (GST_START_TEST), (gst_utils_suite):

View file

@ -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;