mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-05 15:08:53 +00:00
basetextoverlay: just forward the seek event to sink pads like other events
https://bugzilla.gnome.org/show_bug.cgi?id=735844
This commit is contained in:
parent
501a295fa1
commit
ef5823cc9b
1 changed files with 8 additions and 49 deletions
|
@ -1084,48 +1084,11 @@ static gboolean
|
||||||
gst_base_text_overlay_src_event (GstPad * pad, GstObject * parent,
|
gst_base_text_overlay_src_event (GstPad * pad, GstObject * parent,
|
||||||
GstEvent * event)
|
GstEvent * event)
|
||||||
{
|
{
|
||||||
gboolean ret = FALSE;
|
GstBaseTextOverlay *overlay;
|
||||||
GstBaseTextOverlay *overlay = NULL;
|
gboolean ret;
|
||||||
|
|
||||||
overlay = GST_BASE_TEXT_OVERLAY (parent);
|
overlay = GST_BASE_TEXT_OVERLAY (parent);
|
||||||
|
|
||||||
switch (GST_EVENT_TYPE (event)) {
|
|
||||||
case GST_EVENT_SEEK:{
|
|
||||||
GstSeekFlags flags;
|
|
||||||
|
|
||||||
/* We don't handle seek if we have not text pad */
|
|
||||||
if (!overlay->text_linked) {
|
|
||||||
GST_DEBUG_OBJECT (overlay, "seek received, pushing upstream");
|
|
||||||
ret = gst_pad_push_event (overlay->video_sinkpad, event);
|
|
||||||
goto beach;
|
|
||||||
}
|
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (overlay, "seek received, driving from here");
|
|
||||||
|
|
||||||
gst_event_parse_seek (event, NULL, NULL, &flags, NULL, NULL, NULL, NULL);
|
|
||||||
|
|
||||||
/* Flush downstream, only for flushing seek */
|
|
||||||
if (flags & GST_SEEK_FLAG_FLUSH)
|
|
||||||
gst_pad_push_event (overlay->srcpad, gst_event_new_flush_start ());
|
|
||||||
|
|
||||||
/* Mark ourself as flushing, unblock chains */
|
|
||||||
GST_BASE_TEXT_OVERLAY_LOCK (overlay);
|
|
||||||
overlay->video_flushing = TRUE;
|
|
||||||
overlay->text_flushing = TRUE;
|
|
||||||
gst_base_text_overlay_pop_text (overlay);
|
|
||||||
GST_BASE_TEXT_OVERLAY_UNLOCK (overlay);
|
|
||||||
|
|
||||||
/* Seek on each sink pad */
|
|
||||||
gst_event_ref (event);
|
|
||||||
ret = gst_pad_push_event (overlay->video_sinkpad, event);
|
|
||||||
if (ret) {
|
|
||||||
ret = gst_pad_push_event (overlay->text_sinkpad, event);
|
|
||||||
} else {
|
|
||||||
gst_event_unref (event);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
if (overlay->text_linked) {
|
if (overlay->text_linked) {
|
||||||
gst_event_ref (event);
|
gst_event_ref (event);
|
||||||
ret = gst_pad_push_event (overlay->video_sinkpad, event);
|
ret = gst_pad_push_event (overlay->video_sinkpad, event);
|
||||||
|
@ -1133,10 +1096,6 @@ gst_base_text_overlay_src_event (GstPad * pad, GstObject * parent,
|
||||||
} else {
|
} else {
|
||||||
ret = gst_pad_push_event (overlay->video_sinkpad, event);
|
ret = gst_pad_push_event (overlay->video_sinkpad, event);
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
beach:
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue