return gst_pad_query_default (pad, parent, query);
}
+static gboolean
+_mss_demux_pad_remove_eos_sticky (GstPad * pad, GstEvent ** event,
+ gpointer udata)
+{
+ if (GST_EVENT_TYPE (*event) == GST_EVENT_EOS) {
+ gst_event_replace (event, NULL);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static void
+gst_mss_demux_stream_clear_eos_state (GstMssDemuxStream * stream)
+{
+ GstPad *internal_pad;
+
+ internal_pad =
+ GST_PAD_CAST (gst_proxy_pad_get_internal (GST_PROXY_PAD (stream->pad)));
+ gst_pad_sticky_events_foreach (internal_pad,
+ _mss_demux_pad_remove_eos_sticky, NULL);
+ GST_OBJECT_FLAG_UNSET (internal_pad, GST_PAD_FLAG_EOS);
+
+ gst_object_unref (internal_pad);
+}
+
static gboolean
gst_mss_demux_stream_update_source (GstMssDemuxStream * stream,
const gchar * uri, const gchar * referer, gboolean refresh,
/* flush the proxypads so that the EOS state is reset */
gst_pad_push_event (stream->src_srcpad, gst_event_new_flush_start ());
gst_pad_push_event (stream->src_srcpad, gst_event_new_flush_stop (TRUE));
-
gst_element_set_state (stream->src, GST_STATE_READY);
+ gst_mss_demux_stream_clear_eos_state (stream);
}
static GstFlowReturn