fakesrc: avoid time overflow with datarate
authorCélestin Marot <c.marot@intopix.com>
Fri, 18 Nov 2022 15:57:16 +0000 (16:57 +0100)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Sat, 19 Nov 2022 11:13:33 +0000 (11:13 +0000)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3433>

subprojects/gstreamer/plugins/elements/gstfakesrc.c

index 24c2766..7142e2c 100644 (file)
@@ -805,9 +805,11 @@ gst_fake_src_create (GstBaseSrc * basesrc, guint64 offset, guint length,
   GST_BUFFER_OFFSET (buf) = offset;
 
   if (src->datarate > 0) {
-    time = (src->bytes_sent * GST_SECOND) / src->datarate;
+    time =
+        gst_util_uint64_scale_int (src->bytes_sent, GST_SECOND, src->datarate);
 
-    GST_BUFFER_DURATION (buf) = size * GST_SECOND / src->datarate;
+    GST_BUFFER_DURATION (buf) =
+        gst_util_uint64_scale_int (size, GST_SECOND, src->datarate);
   } else if (gst_base_src_is_live (basesrc)) {
     GstClock *clock;