mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-20 00:31:13 +00:00
multipartmux: Re-set need_segment flag after FLUSH_STOP
https://bugzilla.gnome.org/show_bug.cgi?id=703182
This commit is contained in:
parent
07e4dd3424
commit
aa2d96c46b
1 changed files with 26 additions and 0 deletions
|
@ -85,6 +85,8 @@ static GstPad *gst_multipart_mux_request_new_pad (GstElement * element,
|
||||||
static GstStateChangeReturn gst_multipart_mux_change_state (GstElement *
|
static GstStateChangeReturn gst_multipart_mux_change_state (GstElement *
|
||||||
element, GstStateChange transition);
|
element, GstStateChange transition);
|
||||||
|
|
||||||
|
static gboolean gst_multipart_mux_sink_event (GstCollectPads * pads,
|
||||||
|
GstCollectData * pad, GstEvent * event, GstMultipartMux * mux);
|
||||||
static GstFlowReturn gst_multipart_mux_collected (GstCollectPads * pads,
|
static GstFlowReturn gst_multipart_mux_collected (GstCollectPads * pads,
|
||||||
GstMultipartMux * mux);
|
GstMultipartMux * mux);
|
||||||
|
|
||||||
|
@ -150,6 +152,9 @@ gst_multipart_mux_init (GstMultipartMux * multipart_mux)
|
||||||
multipart_mux->boundary = g_strdup (DEFAULT_BOUNDARY);
|
multipart_mux->boundary = g_strdup (DEFAULT_BOUNDARY);
|
||||||
|
|
||||||
multipart_mux->collect = gst_collect_pads_new ();
|
multipart_mux->collect = gst_collect_pads_new ();
|
||||||
|
gst_collect_pads_set_event_function (multipart_mux->collect,
|
||||||
|
(GstCollectPadsEventFunction) GST_DEBUG_FUNCPTR (gst_multipart_mux_sink_event),
|
||||||
|
multipart_mux);
|
||||||
gst_collect_pads_set_function (multipart_mux->collect,
|
gst_collect_pads_set_function (multipart_mux->collect,
|
||||||
(GstCollectPadsFunction) GST_DEBUG_FUNCPTR (gst_multipart_mux_collected),
|
(GstCollectPadsFunction) GST_DEBUG_FUNCPTR (gst_multipart_mux_collected),
|
||||||
multipart_mux);
|
multipart_mux);
|
||||||
|
@ -376,6 +381,27 @@ gst_multipart_mux_queue_pads (GstMultipartMux * mux)
|
||||||
return bestpad;
|
return bestpad;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gst_multipart_mux_sink_event (GstCollectPads * pads, GstCollectData * data,
|
||||||
|
GstEvent * event, GstMultipartMux * mux)
|
||||||
|
{
|
||||||
|
gboolean ret;
|
||||||
|
|
||||||
|
switch (GST_EVENT_TYPE (event)) {
|
||||||
|
case GST_EVENT_FLUSH_STOP:
|
||||||
|
{
|
||||||
|
mux->need_segment = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = gst_collect_pads_event_default (pads, data, event, FALSE);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/* basic idea:
|
/* basic idea:
|
||||||
*
|
*
|
||||||
* 1) find a pad to pull on, this is done by pulling on all pads and
|
* 1) find a pad to pull on, this is done by pulling on all pads and
|
||||||
|
|
Loading…
Reference in a new issue