Index: gsttee.c
===================================================================
RCS file: /cvs/gstreamer/gstreamer/plugins/elements/gsttee.c,v
retrieving revision 1.87
diff -u -p -r1.87 gsttee.c
--- gsttee.c	29 Jul 2008 11:57:10 -0000	1.87
+++ gsttee.c	29 Jul 2008 12:16:06 -0000
@@ -155,6 +155,8 @@ gst_tee_reset (GstTee * tee)
     gst_tag_list_free (tee->tags);
   tee->tags = NULL;
 
+  gst_segment_init (&tee->segment, GST_FORMAT_TIME);
+
   tee->have_events = FALSE;
 }
 
@@ -240,6 +242,24 @@ gst_tee_sink_event (GstPad * pad, GstEve
   tee = GST_TEE (gst_pad_get_parent (pad));
 
   switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_NEWSEGMENT: {
+      gboolean update;
+      GstFormat format;
+      gdouble rate, arate;
+      gint64 start, stop, time;
+
+      gst_event_parse_new_segment_full (event, &update, &rate,
+          &arate, &format, &start, &stop, &time);
+
+      gst_segment_set_newsegment_full (&tee->segment,
+        update, rate, arate, format, start, stop, time);
+
+      GST_DEBUG_OBJECT (tee, "got a newsegment event");
+      /* parse and check if it has 'update' flag
+       * if it has update
+       */
+      tee->have_events = TRUE;
+    } break;
     case GST_EVENT_TAG:{
       GstTagList *list;
 
@@ -542,6 +562,9 @@ gst_tee_do_push (GstTee * tee, GstPad * 
                     need_events)))) {
       g_object_set_qdata (G_OBJECT (pad), need_events, NULL);
 
+      gst_pad_push_event(pad, gst_event_new_new_segment_full(FALSE,
+          tee->segment.rate, tee->segment.applied_rate, tee->segment.format,
+          GST_BUFFER_TIMESTAMP (buffer), tee->segment.stop, GST_BUFFER_TIMESTAMP (buffer)));
       if (tee->tags) {
         gst_pad_push_event (pad,
             gst_event_new_tag (gst_tag_list_copy (tee->tags)));
Index: gsttee.h
===================================================================
RCS file: /cvs/gstreamer/gstreamer/plugins/elements/gsttee.h,v
retrieving revision 1.19
diff -u -p -r1.19 gsttee.h
--- gsttee.h	29 Jul 2008 11:57:11 -0000	1.19
+++ gsttee.h	29 Jul 2008 12:16:06 -0000
@@ -80,6 +80,7 @@ struct _GstTee {
   GstPad         *pull_pad;
 
   GstTagList *tags;
+  GstSegment segment;
   gboolean have_events;
 };
 
