mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
dashdemux: handle a few more error cases
related to missing plugins, bad URI and a lockup on dealing with errors from the source.
This commit is contained in:
parent
173c353716
commit
733c7c0f16
1 changed files with 14 additions and 6 deletions
|
@ -2005,8 +2005,11 @@ gst_dash_demux_stream_update_source (GstDashDemuxStream * stream,
|
|||
{
|
||||
GstDashDemux *demux = stream->demux;
|
||||
|
||||
if (!gst_uri_is_valid (uri))
|
||||
if (!gst_uri_is_valid (uri)) {
|
||||
GST_WARNING_OBJECT (stream->pad, "Invalid URI: %s", uri);
|
||||
stream->last_ret = GST_FLOW_ERROR;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (stream->src != NULL) {
|
||||
gchar *old_protocol, *new_protocol;
|
||||
|
@ -2047,7 +2050,8 @@ gst_dash_demux_stream_update_source (GstDashDemuxStream * stream,
|
|||
|
||||
stream->src = gst_element_make_from_uri (GST_URI_SRC, uri, NULL, NULL);
|
||||
if (stream->src == NULL) {
|
||||
GST_WARNING_OBJECT (demux, "No element to handle uri: %s", uri);
|
||||
GST_ELEMENT_ERROR (demux, CORE, MISSING_PLUGIN,
|
||||
("Missing plugin to handle URI: '%s'", uri), (NULL));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -2110,8 +2114,10 @@ gst_dash_demux_stream_download_uri (GstDashDemux * demux,
|
|||
GST_DEBUG_OBJECT (stream->pad, "Downloading uri: %s, range:%" G_GINT64_FORMAT
|
||||
" - %" G_GINT64_FORMAT, uri, start, end);
|
||||
|
||||
/* TODO check return */
|
||||
gst_dash_demux_stream_update_source (stream, uri, NULL, FALSE, TRUE);
|
||||
if (!gst_dash_demux_stream_update_source (stream, uri, NULL, FALSE, TRUE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (gst_element_set_state (stream->src,
|
||||
GST_STATE_READY) != GST_STATE_CHANGE_FAILURE) {
|
||||
if (start != 0 || end != -1) {
|
||||
|
@ -2290,8 +2296,10 @@ gst_dash_demux_stream_download_fragment (GstDashDemux * demux,
|
|||
exit:
|
||||
g_mutex_unlock (&stream->fragment_download_lock);
|
||||
|
||||
/* TODO a race can set it to READY after it was set to NULL */
|
||||
gst_element_set_state (stream->src, GST_STATE_READY);
|
||||
if (stream->last_ret == GST_FLOW_OK)
|
||||
gst_element_set_state (stream->src, GST_STATE_READY);
|
||||
else
|
||||
gst_element_set_state (stream->src, GST_STATE_NULL);
|
||||
}
|
||||
|
||||
/* gst_dash_demux_stream_get_next_fragment:
|
||||
|
|
Loading…
Reference in a new issue