mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-30 12:49:40 +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>
|
||||
|
||||
* gst/gst.h:
|
||||
|
|
|
@ -993,6 +993,22 @@ GST_START_TEST (test_value_subtract_fraction)
|
|||
g_value_unset (&src1);
|
||||
g_value_unset (&src2);
|
||||
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;
|
||||
|
|
|
@ -3282,7 +3282,7 @@ gboolean
|
|||
gst_value_fraction_subtract (GValue * dest,
|
||||
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 (subtrahend), FALSE);
|
||||
|
@ -3301,13 +3301,6 @@ gst_value_fraction_subtract (GValue * dest,
|
|||
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 (G_MAXINT / ABS (d1) >= ABS (n2), 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 (&src2);
|
||||
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;
|
||||
|
|
Loading…
Reference in a new issue