gst/base/gstbasesrc.c (gst_base_src_query): Clean up percent position reporting.
authorAndy Wingo <wingo@pobox.com>
Fri, 21 Oct 2005 09:24:28 +0000 (09:24 +0000)
committerAndy Wingo <wingo@pobox.com>
Fri, 21 Oct 2005 09:24:28 +0000 (09:24 +0000)
Original commit message from CVS:
2005-10-21  Andy Wingo  <wingo@pobox.com>

* gst/base/gstbasesrc.c (gst_base_src_query): Clean up percent
position reporting.

ChangeLog
gst/base/gstbasesrc.c
libs/gst/base/gstbasesrc.c

index dfe2b7a..3428825 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-10-21  Andy Wingo  <wingo@pobox.com>
+
+       * gst/base/gstbasesrc.c (gst_base_src_query): Clean up percent
+       position reporting.
+
 2005-10-20  Wim Taymans  <wim@fluendo.com>
 
        * gst/gsterror.c: (gst_error_get_message):
index 68e9d5b..cbceeaf 100644 (file)
@@ -334,10 +334,11 @@ gst_base_src_query (GstPad * pad, GstQuery * query)
           return TRUE;
         case GST_FORMAT_PERCENT:
           b = gst_base_src_get_size (src, &ui64);
-          i64 = GST_FORMAT_PERCENT_MAX;
-          if (b)
-            i64 *= gst_guint64_to_gdouble (src->offset)
-                / gst_guint64_to_gdouble (ui64);
+          if (b && src->offset > ui64)
+            i64 = gst_util_uint64_scale (GST_FORMAT_PERCENT_MAX, src->offset,
+                ui64);
+          else
+            i64 = GST_FORMAT_PERCENT_MAX;
           gst_query_set_position (query, GST_FORMAT_PERCENT, i64);
           return TRUE;
         default:
index 68e9d5b..cbceeaf 100644 (file)
@@ -334,10 +334,11 @@ gst_base_src_query (GstPad * pad, GstQuery * query)
           return TRUE;
         case GST_FORMAT_PERCENT:
           b = gst_base_src_get_size (src, &ui64);
-          i64 = GST_FORMAT_PERCENT_MAX;
-          if (b)
-            i64 *= gst_guint64_to_gdouble (src->offset)
-                / gst_guint64_to_gdouble (ui64);
+          if (b && src->offset > ui64)
+            i64 = gst_util_uint64_scale (GST_FORMAT_PERCENT_MAX, src->offset,
+                ui64);
+          else
+            i64 = GST_FORMAT_PERCENT_MAX;
           gst_query_set_position (query, GST_FORMAT_PERCENT, i64);
           return TRUE;
         default: