mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-05 06:58:56 +00:00
pad: apply pad offset on sinkpad events too
Apply the pad offset in the send_event() function as well.
This commit is contained in:
parent
e8b8c4aaa6
commit
e83d5320a2
1 changed files with 18 additions and 2 deletions
20
gst/gstpad.c
20
gst/gstpad.c
|
@ -4755,7 +4755,6 @@ gst_pad_push_event (GstPad * pad, GstEvent * event)
|
|||
break;
|
||||
}
|
||||
case GST_EVENT_SEGMENT:
|
||||
{
|
||||
/* check if we need to adjust the segment */
|
||||
if (offset != 0 && peerpad != NULL) {
|
||||
GstSegment segment;
|
||||
|
@ -4769,7 +4768,6 @@ gst_pad_push_event (GstPad * pad, GstEvent * event)
|
|||
event = gst_event_new_segment (&segment);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -4927,6 +4925,24 @@ gst_pad_send_event (GstPad * pad, GstEvent * event)
|
|||
if (sticky) {
|
||||
guint idx;
|
||||
|
||||
switch (GST_EVENT_TYPE (event)) {
|
||||
case GST_EVENT_SEGMENT:
|
||||
if (pad->offset != 0) {
|
||||
GstSegment segment;
|
||||
|
||||
/* copy segment values */
|
||||
gst_event_copy_segment (event, &segment);
|
||||
gst_event_unref (event);
|
||||
|
||||
/* adjust and make a new event with the offset applied */
|
||||
segment.base += pad->offset;
|
||||
event = gst_event_new_segment (&segment);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
idx = GST_EVENT_STICKY_IDX (event);
|
||||
GST_LOG_OBJECT (pad, "storing sticky event %s at index %u",
|
||||
GST_EVENT_TYPE_NAME (event), idx);
|
||||
|
|
Loading…
Reference in a new issue