baseparse: update the duration variable before emitting the bus
authorThiago Santos <thiago.sousa.santos@collabora.com>
Fri, 28 Nov 2014 17:15:30 +0000 (14:15 -0300)
committerThiago Santos <thiagoss@osg.samsung.com>
Fri, 28 Nov 2014 20:00:17 +0000 (17:00 -0300)
Otherwise the application might still get the old value if it asks
between the message and the real update.

libs/gst/base/gstbaseparse.c

index bf14447..fec1af8 100644 (file)
@@ -1543,16 +1543,18 @@ gst_base_parse_update_duration (GstBaseParse * baseparse)
         /* inform if duration changed, but try to avoid spamming */
         parse->priv->estimated_drift +=
             dest_value - parse->priv->estimated_duration;
+
+        parse->priv->estimated_duration = dest_value;
+        GST_LOG_OBJECT (parse,
+            "updated estimated duration to %" GST_TIME_FORMAT,
+            GST_TIME_ARGS (dest_value));
+
         if (parse->priv->estimated_drift > GST_SECOND ||
             parse->priv->estimated_drift < -GST_SECOND) {
           gst_element_post_message (GST_ELEMENT (parse),
               gst_message_new_duration_changed (GST_OBJECT (parse)));
           parse->priv->estimated_drift = 0;
         }
-        parse->priv->estimated_duration = dest_value;
-        GST_LOG_OBJECT (parse,
-            "updated estimated duration to %" GST_TIME_FORMAT,
-            GST_TIME_ARGS (dest_value));
       }
     }
   }