From 04a38508e1b343304204dd19a17be8844bcf76cd Mon Sep 17 00:00:00 2001 From: Thomas Vander Stichele Date: Wed, 12 Oct 2005 21:56:52 +0000 Subject: [PATCH] gst/base/: fix more guint64<->gdouble conversions Original commit message from CVS: * gst/base/gstbasesink.c: (gst_base_sink_handle_object): * gst/base/gstbasesrc.c: (gst_base_src_query): fix more guint64<->gdouble conversions --- ChangeLog | 6 ++++++ gst/base/gstbasesink.c | 3 ++- gst/base/gstbasesrc.c | 4 +++- libs/gst/base/gstbasesink.c | 3 ++- libs/gst/base/gstbasesrc.c | 4 +++- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index ae3dbd80c3..fa65b14530 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-10-12 Thomas Vander Stichele + + * gst/base/gstbasesink.c: (gst_base_sink_handle_object): + * gst/base/gstbasesrc.c: (gst_base_src_query): + fix more guint64<->gdouble conversions + 2005-10-12 Thomas Vander Stichele * Makefile.am: diff --git a/gst/base/gstbasesink.c b/gst/base/gstbasesink.c index 7a11f8737c..0209612a57 100644 --- a/gst/base/gstbasesink.c +++ b/gst/base/gstbasesink.c @@ -524,7 +524,8 @@ gst_base_sink_handle_object (GstBaseSink * basesink, GstPad * pad, } /* use previous rate to calculate duration */ - basesink->segment_accum += (duration / ABS (basesink->segment_rate)); + basesink->segment_accum += gst_gdouble_to_guint64 ( + (gst_guint64_to_gdouble (duration) / ABS (basesink->segment_rate))); /* then update the current segment */ basesink->segment_rate = rate; basesink->segment_start = segment_start; diff --git a/gst/base/gstbasesrc.c b/gst/base/gstbasesrc.c index 86633a0cc8..72b690229b 100644 --- a/gst/base/gstbasesrc.c +++ b/gst/base/gstbasesrc.c @@ -338,7 +338,9 @@ gst_base_src_query (GstPad * pad, GstQuery * query) case GST_FORMAT_PERCENT: b = gst_base_src_get_size (src, &ui64); i64 = GST_FORMAT_PERCENT_MAX; - i64 *= b ? (src->offset / gst_guint64_to_gdouble (ui64)) : 1.0; + if (b) + i64 *= gst_guint64_to_gdouble (src->offset) + / gst_guint64_to_gdouble (ui64); gst_query_set_position (query, GST_FORMAT_PERCENT, i64, GST_FORMAT_PERCENT_MAX); return TRUE; diff --git a/libs/gst/base/gstbasesink.c b/libs/gst/base/gstbasesink.c index 7a11f8737c..0209612a57 100644 --- a/libs/gst/base/gstbasesink.c +++ b/libs/gst/base/gstbasesink.c @@ -524,7 +524,8 @@ gst_base_sink_handle_object (GstBaseSink * basesink, GstPad * pad, } /* use previous rate to calculate duration */ - basesink->segment_accum += (duration / ABS (basesink->segment_rate)); + basesink->segment_accum += gst_gdouble_to_guint64 ( + (gst_guint64_to_gdouble (duration) / ABS (basesink->segment_rate))); /* then update the current segment */ basesink->segment_rate = rate; basesink->segment_start = segment_start; diff --git a/libs/gst/base/gstbasesrc.c b/libs/gst/base/gstbasesrc.c index 86633a0cc8..72b690229b 100644 --- a/libs/gst/base/gstbasesrc.c +++ b/libs/gst/base/gstbasesrc.c @@ -338,7 +338,9 @@ gst_base_src_query (GstPad * pad, GstQuery * query) case GST_FORMAT_PERCENT: b = gst_base_src_get_size (src, &ui64); i64 = GST_FORMAT_PERCENT_MAX; - i64 *= b ? (src->offset / gst_guint64_to_gdouble (ui64)) : 1.0; + if (b) + i64 *= gst_guint64_to_gdouble (src->offset) + / gst_guint64_to_gdouble (ui64); gst_query_set_position (query, GST_FORMAT_PERCENT, i64, GST_FORMAT_PERCENT_MAX); return TRUE;