uridecodebin: Set source element to READY before querying it

Generating the source element is done when uridecodebin is doing the
READY to PAUSED state change, so it is reasonable to set the new source
element to that state.

This also allows detecting early failures with backing libraries or
hardware (checks done in NULL->READY).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3857>
This commit is contained in:
Thibault Saunier 2023-01-31 13:21:48 -03:00 committed by GStreamer Marge Bot
parent 485c8ef4b5
commit 4067bbdd91

View file

@ -2309,6 +2309,10 @@ setup_source (GstURIDecodeBin * decoder)
/* stream admin setup */
decoder->streams = g_hash_table_new_full (NULL, NULL, NULL, free_stream);
if (gst_element_set_state (source,
GST_STATE_READY) != GST_STATE_CHANGE_SUCCESS)
goto state_fail;
/* see if the source element emits raw audio/video all by itself,
* if so, we can create streams for the pads and be done with it.
* Also check that is has source pads, if not, we assume it will
@ -2372,6 +2376,12 @@ no_source:
/* error message was already posted */
return FALSE;
}
state_fail:
{
GST_ELEMENT_ERROR (decoder, CORE, FAILED,
(_("Source element can't be prepared")), (NULL));
return FALSE;
}
invalid_source:
{
GST_ELEMENT_ERROR (decoder, CORE, FAILED,