mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-05 06:58:56 +00:00
textoverlay: Clip text buffers to the text segment and reset segments properly
This commit is contained in:
parent
d941a9f6a6
commit
8ed8d5e414
1 changed files with 9 additions and 1 deletions
|
@ -1737,6 +1737,7 @@ gst_text_overlay_text_event (GstPad * pad, GstEvent * event)
|
||||||
overlay->text_flushing = FALSE;
|
overlay->text_flushing = FALSE;
|
||||||
overlay->text_eos = FALSE;
|
overlay->text_eos = FALSE;
|
||||||
gst_text_overlay_pop_text (overlay);
|
gst_text_overlay_pop_text (overlay);
|
||||||
|
gst_segment_init (&overlay->text_segment, GST_FORMAT_TIME);
|
||||||
GST_OBJECT_UNLOCK (overlay);
|
GST_OBJECT_UNLOCK (overlay);
|
||||||
gst_event_unref (event);
|
gst_event_unref (event);
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
|
@ -1828,6 +1829,7 @@ gst_text_overlay_video_event (GstPad * pad, GstEvent * event)
|
||||||
GST_INFO_OBJECT (overlay, "video flush stop");
|
GST_INFO_OBJECT (overlay, "video flush stop");
|
||||||
overlay->video_flushing = FALSE;
|
overlay->video_flushing = FALSE;
|
||||||
overlay->video_eos = FALSE;
|
overlay->video_eos = FALSE;
|
||||||
|
gst_segment_init (&overlay->segment, GST_FORMAT_TIME);
|
||||||
GST_OBJECT_UNLOCK (overlay);
|
GST_OBJECT_UNLOCK (overlay);
|
||||||
ret = gst_pad_event_default (pad, event);
|
ret = gst_pad_event_default (pad, event);
|
||||||
break;
|
break;
|
||||||
|
@ -1911,7 +1913,7 @@ gst_text_overlay_text_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
else
|
else
|
||||||
stop = GST_CLOCK_TIME_NONE;
|
stop = GST_CLOCK_TIME_NONE;
|
||||||
|
|
||||||
in_seg = gst_segment_clip (&overlay->segment, GST_FORMAT_TIME,
|
in_seg = gst_segment_clip (&overlay->text_segment, GST_FORMAT_TIME,
|
||||||
GST_BUFFER_TIMESTAMP (buffer), stop, &clip_start, &clip_stop);
|
GST_BUFFER_TIMESTAMP (buffer), stop, &clip_start, &clip_stop);
|
||||||
} else {
|
} else {
|
||||||
in_seg = TRUE;
|
in_seg = TRUE;
|
||||||
|
@ -1936,6 +1938,10 @@ gst_text_overlay_text_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (GST_BUFFER_TIMESTAMP_IS_VALID (buffer))
|
||||||
|
gst_segment_set_last_stop (&overlay->text_segment, GST_FORMAT_TIME,
|
||||||
|
clip_start);
|
||||||
|
|
||||||
overlay->text_buffer = buffer;
|
overlay->text_buffer = buffer;
|
||||||
/* That's a new text buffer we need to render */
|
/* That's a new text buffer we need to render */
|
||||||
overlay->need_render = TRUE;
|
overlay->need_render = TRUE;
|
||||||
|
@ -2250,6 +2256,8 @@ gst_text_overlay_change_state (GstElement * element, GstStateChange transition)
|
||||||
overlay->video_flushing = FALSE;
|
overlay->video_flushing = FALSE;
|
||||||
overlay->video_eos = FALSE;
|
overlay->video_eos = FALSE;
|
||||||
overlay->text_eos = FALSE;
|
overlay->text_eos = FALSE;
|
||||||
|
gst_segment_init (&overlay->segment, GST_FORMAT_TIME);
|
||||||
|
gst_segment_init (&overlay->text_segment, GST_FORMAT_TIME);
|
||||||
GST_OBJECT_UNLOCK (overlay);
|
GST_OBJECT_UNLOCK (overlay);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in a new issue