diff --git a/ChangeLog b/ChangeLog index 38e908d6f8..8a2b295c56 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-10-13 Julien MOUTTE + + * gst/base/gstcollectpads.c: (gst_collectpads_event), + (gst_collectpads_chain): + * gst/base/gstcollectpads.h: Handle newsegment and store informations + in CollectData. + 2005-10-13 Stefan Kost * docs/gst/gstreamer-sections.txt: diff --git a/gst/base/gstcollectpads.c b/gst/base/gstcollectpads.c index 497118524a..55c5ae7991 100644 --- a/gst/base/gstcollectpads.c +++ b/gst/base/gstcollectpads.c @@ -550,6 +550,24 @@ gst_collectpads_event (GstPad * pad, GstEvent * event) return TRUE; break; } + case GST_EVENT_NEWSEGMENT: + { + gint64 segment_start, segment_stop, stream_time; + gdouble segment_rate; + GstFormat format; + gboolean update; + + gst_event_parse_newsegment (event, &update, &segment_rate, &format, + &segment_start, &segment_stop, &stream_time); + + if (format == GST_FORMAT_TIME) { + data->segment_start = segment_start; + data->segment_stop = segment_start; + data->stream_time = stream_time; + } + + goto beach; + } default: goto beach; } diff --git a/gst/base/gstcollectpads.h b/gst/base/gstcollectpads.h index 0449f33836..c88c1b7fb7 100644 --- a/gst/base/gstcollectpads.h +++ b/gst/base/gstcollectpads.h @@ -42,6 +42,9 @@ typedef struct _GstCollectData GstPad *pad; GstBuffer *buffer; guint pos; + gint64 segment_start; + gint64 segment_stop; + gint64 stream_time; } GstCollectData; /* function will be called when all pads have data */ diff --git a/libs/gst/base/gstcollectpads.c b/libs/gst/base/gstcollectpads.c index 497118524a..55c5ae7991 100644 --- a/libs/gst/base/gstcollectpads.c +++ b/libs/gst/base/gstcollectpads.c @@ -550,6 +550,24 @@ gst_collectpads_event (GstPad * pad, GstEvent * event) return TRUE; break; } + case GST_EVENT_NEWSEGMENT: + { + gint64 segment_start, segment_stop, stream_time; + gdouble segment_rate; + GstFormat format; + gboolean update; + + gst_event_parse_newsegment (event, &update, &segment_rate, &format, + &segment_start, &segment_stop, &stream_time); + + if (format == GST_FORMAT_TIME) { + data->segment_start = segment_start; + data->segment_stop = segment_start; + data->stream_time = stream_time; + } + + goto beach; + } default: goto beach; } diff --git a/libs/gst/base/gstcollectpads.h b/libs/gst/base/gstcollectpads.h index 0449f33836..c88c1b7fb7 100644 --- a/libs/gst/base/gstcollectpads.h +++ b/libs/gst/base/gstcollectpads.h @@ -42,6 +42,9 @@ typedef struct _GstCollectData GstPad *pad; GstBuffer *buffer; guint pos; + gint64 segment_start; + gint64 segment_stop; + gint64 stream_time; } GstCollectData; /* function will be called when all pads have data */