From a47881100d99fe388cbdcfc5b056e0871928f798 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Tue, 21 Nov 2017 10:15:02 +0100 Subject: [PATCH] videotestsrc: Avoid overflow calculation n_frames could end up being quite big (potentially up to G_MAXINT64). Which would result in overflowing 64bits when multiplying it by GST_SECOND. Instead move GST_SECOND to the num argument --- gst/videotestsrc/gstvideotestsrc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gst/videotestsrc/gstvideotestsrc.c b/gst/videotestsrc/gstvideotestsrc.c index cfa66197df..93d0b1320a 100644 --- a/gst/videotestsrc/gstvideotestsrc.c +++ b/gst/videotestsrc/gstvideotestsrc.c @@ -1138,7 +1138,7 @@ gst_video_test_src_fill (GstPushSrc * psrc, GstBuffer * buffer) } GST_LOG_OBJECT (src, - "creating buffer from pool for frame %d", (gint) src->n_frames); + "creating buffer from pool for frame %" G_GINT64_FORMAT, src->n_frames); if (!gst_video_frame_map (&frame, &src->info, buffer, GST_MAP_WRITE)) goto invalid_frame; @@ -1172,8 +1172,8 @@ gst_video_test_src_fill (GstPushSrc * psrc, GstBuffer * buffer) } GST_BUFFER_OFFSET_END (buffer) = GST_BUFFER_OFFSET (buffer) + 1; if (src->info.fps_n) { - next_time = gst_util_uint64_scale_int (src->n_frames * GST_SECOND, - src->info.fps_d, src->info.fps_n); + next_time = gst_util_uint64_scale (src->n_frames, + src->info.fps_d * GST_SECOND, src->info.fps_n); if (src->reverse) { GST_BUFFER_DURATION (buffer) = src->running_time - next_time; } else {