baseparse: avg_bitrate calculation critical warning fix
authorPhilippe Normand <philn@igalia.com>
Thu, 30 Aug 2018 16:44:07 +0000 (17:44 +0100)
committerPhilippe Normand <philn@igalia.com>
Fri, 31 Aug 2018 14:35:35 +0000 (15:35 +0100)
The avg_bitrate is an unsigned int, so the gst_util_uin64_scale() function can't
be used for it, as it expects signed integers for the fraction parts arguments.

https://bugzilla.gnome.org/show_bug.cgi?id=797054

libs/gst/base/gstbaseparse.c

index 1830796..6b153be 100644 (file)
@@ -1863,7 +1863,7 @@ gst_base_parse_update_bitrates (GstBaseParse * parse, GstBaseParseFrame * frame)
     if (avg_bitrate > G_MAXUINT)
       return;
 
-    parse->priv->avg_bitrate = avg_bitrate;
+    parse->priv->avg_bitrate = (guint) avg_bitrate;
   } else {
     /* No way to figure out frame duration (is this even possible?) */
     return;
@@ -1914,7 +1914,7 @@ gst_base_parse_update_bitrates (GstBaseParse * parse, GstBaseParseFrame * frame)
 
     /* Only update the tag on a 2% change */
     if (parse->priv->post_avg_bitrate && parse->priv->avg_bitrate) {
-      guint64 diffprev = gst_util_uint64_scale_int (100,
+      guint64 diffprev = gst_util_uint64_scale (100,
           ABSDIFF (parse->priv->avg_bitrate, parse->priv->posted_avg_bitrate),
           parse->priv->avg_bitrate);
       if (diffprev >= UPDATE_THRESHOLD)