mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 04:26:14 +00:00
Fix subtraction.
Original commit message from CVS: * check/gst/gstvalue.c: (GST_START_TEST): * gst/gstvalue.c: (gst_value_fraction_subtract): Fix subtraction.
This commit is contained in:
parent
f6afcd058c
commit
97d08eb1a3
4 changed files with 39 additions and 8 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2005-11-22 Jan Schmidt <thaytan@mad.scientist.com>
|
||||||
|
|
||||||
|
* check/gst/gstvalue.c: (GST_START_TEST):
|
||||||
|
* gst/gstvalue.c: (gst_value_fraction_subtract):
|
||||||
|
Fix subtraction.
|
||||||
|
|
||||||
2005-11-22 Stefan Kost <ensonic@users.sf.net>
|
2005-11-22 Stefan Kost <ensonic@users.sf.net>
|
||||||
|
|
||||||
* gst/gst.h:
|
* gst/gst.h:
|
||||||
|
|
|
@ -993,6 +993,22 @@ GST_START_TEST (test_value_subtract_fraction)
|
||||||
g_value_unset (&src1);
|
g_value_unset (&src1);
|
||||||
g_value_unset (&src2);
|
g_value_unset (&src2);
|
||||||
g_value_unset (&result);
|
g_value_unset (&result);
|
||||||
|
|
||||||
|
/* Subtract 12/13 from 4/3 */
|
||||||
|
g_value_init (&src1, GST_TYPE_FRACTION);
|
||||||
|
g_value_init (&src2, GST_TYPE_FRACTION);
|
||||||
|
g_value_init (&result, GST_TYPE_FRACTION);
|
||||||
|
gst_value_set_fraction (&src1, 4, 3);
|
||||||
|
gst_value_set_fraction (&src2, 12, 13);
|
||||||
|
fail_unless (gst_value_fraction_subtract (&result, &src1, &src2) == TRUE);
|
||||||
|
fail_unless (gst_value_get_fraction_numerator (&result) == 16);
|
||||||
|
fail_unless (gst_value_get_fraction_denominator (&result) == 39);
|
||||||
|
|
||||||
|
g_value_unset (&src1);
|
||||||
|
g_value_unset (&src2);
|
||||||
|
g_value_unset (&result);
|
||||||
|
|
||||||
|
/* Subtract 1/12 from 7/8 */
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_END_TEST;
|
GST_END_TEST;
|
||||||
|
|
|
@ -3282,7 +3282,7 @@ gboolean
|
||||||
gst_value_fraction_subtract (GValue * dest,
|
gst_value_fraction_subtract (GValue * dest,
|
||||||
const GValue * minuend, const GValue * subtrahend)
|
const GValue * minuend, const GValue * subtrahend)
|
||||||
{
|
{
|
||||||
gint gcd, n1, n2, d1, d2;
|
gint n1, n2, d1, d2;
|
||||||
|
|
||||||
g_return_val_if_fail (GST_VALUE_HOLDS_FRACTION (minuend), FALSE);
|
g_return_val_if_fail (GST_VALUE_HOLDS_FRACTION (minuend), FALSE);
|
||||||
g_return_val_if_fail (GST_VALUE_HOLDS_FRACTION (subtrahend), FALSE);
|
g_return_val_if_fail (GST_VALUE_HOLDS_FRACTION (subtrahend), FALSE);
|
||||||
|
@ -3301,13 +3301,6 @@ gst_value_fraction_subtract (GValue * dest,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
gcd = gst_greatest_common_divisor (n1, d2);
|
|
||||||
n1 /= gcd;
|
|
||||||
d2 /= gcd;
|
|
||||||
gcd = gst_greatest_common_divisor (n2, d1);
|
|
||||||
n2 /= gcd;
|
|
||||||
d1 /= gcd;
|
|
||||||
|
|
||||||
g_return_val_if_fail (n1 == 0 || G_MAXINT / ABS (n1) >= ABS (d2), FALSE);
|
g_return_val_if_fail (n1 == 0 || G_MAXINT / ABS (n1) >= ABS (d2), FALSE);
|
||||||
g_return_val_if_fail (G_MAXINT / ABS (d1) >= ABS (n2), FALSE);
|
g_return_val_if_fail (G_MAXINT / ABS (d1) >= ABS (n2), FALSE);
|
||||||
g_return_val_if_fail (G_MAXINT / ABS (d1) >= ABS (d2), FALSE);
|
g_return_val_if_fail (G_MAXINT / ABS (d1) >= ABS (d2), FALSE);
|
||||||
|
|
|
@ -993,6 +993,22 @@ GST_START_TEST (test_value_subtract_fraction)
|
||||||
g_value_unset (&src1);
|
g_value_unset (&src1);
|
||||||
g_value_unset (&src2);
|
g_value_unset (&src2);
|
||||||
g_value_unset (&result);
|
g_value_unset (&result);
|
||||||
|
|
||||||
|
/* Subtract 12/13 from 4/3 */
|
||||||
|
g_value_init (&src1, GST_TYPE_FRACTION);
|
||||||
|
g_value_init (&src2, GST_TYPE_FRACTION);
|
||||||
|
g_value_init (&result, GST_TYPE_FRACTION);
|
||||||
|
gst_value_set_fraction (&src1, 4, 3);
|
||||||
|
gst_value_set_fraction (&src2, 12, 13);
|
||||||
|
fail_unless (gst_value_fraction_subtract (&result, &src1, &src2) == TRUE);
|
||||||
|
fail_unless (gst_value_get_fraction_numerator (&result) == 16);
|
||||||
|
fail_unless (gst_value_get_fraction_denominator (&result) == 39);
|
||||||
|
|
||||||
|
g_value_unset (&src1);
|
||||||
|
g_value_unset (&src2);
|
||||||
|
g_value_unset (&result);
|
||||||
|
|
||||||
|
/* Subtract 1/12 from 7/8 */
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_END_TEST;
|
GST_END_TEST;
|
||||||
|
|
Loading…
Reference in a new issue