baseparse: fix taglist update spam
authorTim-Philipp Müller <tim@centricular.com>
Thu, 24 Aug 2017 15:00:42 +0000 (16:00 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Fri, 25 Aug 2017 16:36:33 +0000 (17:36 +0100)
We would constantly re-post the taglist because
posted_avg_rate only gets set to avg_bitrate if
parse->priv->post_avg_bitrate is true, so if it's
false the posted rate will always differ from the
current average rate and we'd queue an update,
which leads to us spamming downstream and the
application with taglist updates.

Fix this by only queuing an update if the average
rate will actually be posted.

These taglists updates could cause expensive
operations on the application side, e.g. in Totem.

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

libs/gst/base/gstbaseparse.c

index 8da034bd8a49fdbd703c414cbba3cc7e8959864c..34e85b112501279412c15907204209e60cc04c53 100644 (file)
@@ -1823,7 +1823,8 @@ gst_base_parse_update_bitrates (GstBaseParse * parse, GstBaseParseFrame * frame)
   if (parse->priv->bitrate) {
     parse->priv->avg_bitrate = parse->priv->bitrate;
     /* spread this (confirmed) info ASAP */
-    if (parse->priv->posted_avg_bitrate != parse->priv->avg_bitrate)
+    if (parse->priv->post_avg_bitrate &&
+        parse->priv->posted_avg_bitrate != parse->priv->avg_bitrate)
       parse->priv->tags_changed = TRUE;
   }