hlsdemux: query the uri upstream before updating the playlist
This commit is contained in:
parent
9aff2de625
commit
6a0aec0639
@ -304,6 +304,7 @@ gst_hls_demux_sink_event (GstPad * pad, GstEvent * event)
|
|||||||
{
|
{
|
||||||
GstHLSDemux *demux = GST_HLS_DEMUX (gst_pad_get_parent (pad));
|
GstHLSDemux *demux = GST_HLS_DEMUX (gst_pad_get_parent (pad));
|
||||||
GstQuery *query;
|
GstQuery *query;
|
||||||
|
gboolean ret;
|
||||||
gchar *uri;
|
gchar *uri;
|
||||||
|
|
||||||
|
|
||||||
@ -318,17 +319,20 @@ gst_hls_demux_sink_event (GstPad * pad, GstEvent * event)
|
|||||||
|
|
||||||
GST_DEBUG_OBJECT (demux, "Got EOS on the sink pad: main playlist fetched");
|
GST_DEBUG_OBJECT (demux, "Got EOS on the sink pad: main playlist fetched");
|
||||||
|
|
||||||
|
query = gst_query_new_uri ();
|
||||||
|
ret = gst_pad_peer_query (demux->sinkpad, query);
|
||||||
|
if (ret) {
|
||||||
|
gst_query_parse_uri (query, &uri);
|
||||||
|
gst_hls_demux_set_location (demux, uri);
|
||||||
|
g_free (uri);
|
||||||
|
}
|
||||||
|
|
||||||
playlist = g_strndup ((gchar *) GST_BUFFER_DATA (demux->playlist),
|
playlist = g_strndup ((gchar *) GST_BUFFER_DATA (demux->playlist),
|
||||||
GST_BUFFER_SIZE (demux->playlist));
|
GST_BUFFER_SIZE (demux->playlist));
|
||||||
gst_m3u8_client_update (demux->client, playlist);
|
gst_m3u8_client_update (demux->client, playlist);
|
||||||
gst_buffer_unref (demux->playlist);
|
gst_buffer_unref (demux->playlist);
|
||||||
|
|
||||||
query = gst_query_new_uri ();
|
if (!ret && gst_m3u8_client_is_live (demux->client)) {
|
||||||
if (gst_pad_peer_query (demux->sinkpad, query)) {
|
|
||||||
gst_query_parse_uri (query, &uri);
|
|
||||||
gst_hls_demux_set_location (demux, uri);
|
|
||||||
g_free (uri);
|
|
||||||
} else if (gst_m3u8_client_is_live (demux->client)) {
|
|
||||||
GST_ELEMENT_ERROR (demux, RESOURCE, NOT_FOUND,
|
GST_ELEMENT_ERROR (demux, RESOURCE, NOT_FOUND,
|
||||||
("Failed querying the playlist uri, "
|
("Failed querying the playlist uri, "
|
||||||
"required for live sources."), NULL);
|
"required for live sources."), NULL);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user