discoverer: Don't switch to PLAYING if we saw an error

If we saw an error on the bus, we can't be guaranteed that element will
function properly anyway. Avoids weird state change races also
This commit is contained in:
Edward Hervey 2017-11-04 19:48:13 +01:00 committed by Edward Hervey
parent fcf09c18f2
commit 89238f9de1

View file

@ -1312,8 +1312,10 @@ discoverer_collect (GstDiscoverer * dc)
if (gst_element_query_duration (pipeline, GST_FORMAT_TIME, &dur)) {
GST_DEBUG ("Got duration %" GST_TIME_FORMAT, GST_TIME_ARGS (dur));
dc->priv->current_info->duration = (guint64) dur;
} else {
} else if (dc->priv->current_info->result != GST_DISCOVERER_ERROR) {
GstStateChangeReturn sret;
/* Note: We don't switch to PLAYING if we previously saw an ERROR since
* the state of various element isn't guaranteed anymore */
/* Some parsers may not even return a rough estimate right away, e.g.
* because they've only processed a single frame so far, so if we