mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-26 16:06:52 +00:00
subparse/ssaparse: Fix event handling and order
This commit is contained in:
parent
027654e71e
commit
b19d64d785
2 changed files with 13 additions and 11 deletions
|
@ -83,8 +83,6 @@ gst_ssa_parse_init (GstSsaParse * parse)
|
||||||
GST_DEBUG_FUNCPTR (gst_ssa_parse_src_event));
|
GST_DEBUG_FUNCPTR (gst_ssa_parse_src_event));
|
||||||
gst_element_add_pad (GST_ELEMENT (parse), parse->srcpad);
|
gst_element_add_pad (GST_ELEMENT (parse), parse->srcpad);
|
||||||
gst_pad_use_fixed_caps (parse->srcpad);
|
gst_pad_use_fixed_caps (parse->srcpad);
|
||||||
gst_pad_set_caps (parse->srcpad,
|
|
||||||
gst_static_pad_template_get_caps (&src_templ));
|
|
||||||
|
|
||||||
parse->ini = NULL;
|
parse->ini = NULL;
|
||||||
parse->framed = FALSE;
|
parse->framed = FALSE;
|
||||||
|
|
|
@ -1443,6 +1443,7 @@ handle_buffer (GstSubParse * self, GstBuffer * buf)
|
||||||
GstFlowReturn ret = GST_FLOW_OK;
|
GstFlowReturn ret = GST_FLOW_OK;
|
||||||
GstCaps *caps = NULL;
|
GstCaps *caps = NULL;
|
||||||
gchar *line, *subtitle;
|
gchar *line, *subtitle;
|
||||||
|
gboolean need_tags = FALSE;
|
||||||
|
|
||||||
if (self->first_buffer) {
|
if (self->first_buffer) {
|
||||||
GstMapInfo map;
|
GstMapInfo map;
|
||||||
|
@ -1467,7 +1468,19 @@ handle_buffer (GstSubParse * self, GstBuffer * buf)
|
||||||
return GST_FLOW_EOS;
|
return GST_FLOW_EOS;
|
||||||
}
|
}
|
||||||
gst_caps_unref (caps);
|
gst_caps_unref (caps);
|
||||||
|
need_tags = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Push newsegment if needed */
|
||||||
|
if (self->need_segment) {
|
||||||
|
GST_LOG_OBJECT (self, "pushing newsegment event with %" GST_SEGMENT_FORMAT,
|
||||||
|
&self->segment);
|
||||||
|
|
||||||
|
gst_pad_push_event (self->srcpad, gst_event_new_segment (&self->segment));
|
||||||
|
self->need_segment = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (need_tags) {
|
||||||
/* push tags */
|
/* push tags */
|
||||||
if (self->subtitle_codec != NULL) {
|
if (self->subtitle_codec != NULL) {
|
||||||
GstTagList *tags;
|
GstTagList *tags;
|
||||||
|
@ -1544,15 +1557,6 @@ gst_sub_parse_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * buf)
|
||||||
|
|
||||||
self = GST_SUBPARSE (parent);
|
self = GST_SUBPARSE (parent);
|
||||||
|
|
||||||
/* Push newsegment if needed */
|
|
||||||
if (self->need_segment) {
|
|
||||||
GST_LOG_OBJECT (self, "pushing newsegment event with %" GST_SEGMENT_FORMAT,
|
|
||||||
&self->segment);
|
|
||||||
|
|
||||||
gst_pad_push_event (self->srcpad, gst_event_new_segment (&self->segment));
|
|
||||||
self->need_segment = FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = handle_buffer (self, buf);
|
ret = handle_buffer (self, buf);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in a new issue