baseparse: update the duration variable before emitting the bus

Otherwise the application might still get the old value if it asks
between the message and the real update.
This commit is contained in:
Thiago Santos 2014-11-28 14:15:30 -03:00 committed by Thiago Santos
parent 53cbbcd8d9
commit 8f4ef80fc4

View 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));
}
}
}