break;
}
case GST_EVENT_SEGMENT:
- {
/* check if we need to adjust the segment */
if (offset != 0 && peerpad != NULL) {
GstSegment segment;
event = gst_event_new_segment (&segment);
}
break;
- }
default:
break;
}
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);