diff -ruN vorbis.old/vorbisenc.c vorbis/vorbisenc.c
--- vorbis.old/vorbisenc.c      2009-03-31 18:09:57.000000000 +0200
+++ vorbis/vorbisenc.c  2009-03-31 19:07:49.000000000 +0200
@@ -89,7 +89,8 @@
   ARG_MIN_BITRATE,
   ARG_QUALITY,
   ARG_MANAGED,
-  ARG_LAST_MESSAGE
+  ARG_LAST_MESSAGE,
+  ARG_PRESERVE_TIMESTAMPS
 };

 static GstFlowReturn gst_vorbis_enc_output_buffers (GstVorbisEnc * vorbisenc);
@@ -207,6 +208,10 @@
       g_param_spec_string ("last-message", "last-message",
           "The last status message", NULL,
           G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PRESERVE_TIMESTAMPS,
+      g_param_spec_boolean ("preserve-timestamps", "preserve-timestamps",
+          "Preserve timestamps from audio frames. Useful when recording from RTP streams.", TRUE,
+          G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));

   gstelement_class->change_state =
       GST_DEBUG_FUNCPTR (gst_vorbis_enc_change_state);
@@ -1168,7 +1173,10 @@
   }

   if (vorbisenc->expected_ts != GST_CLOCK_TIME_NONE &&
-      timestamp < vorbisenc->expected_ts) {
+      timestamp < vorbisenc->expected_ts && vorbisenc->preserve_timestamps) {
+
+GST_WARNING_OBJECT (vorbisenc, "KIKIRIKI %d\n", vorbisenc->preserve_timestamps);
+
     guint64 diff = vorbisenc->expected_ts - timestamp;
     guint64 diff_bytes;

@@ -1194,7 +1202,8 @@
   }

   if (gst_vorbis_enc_buffer_check_discontinuous (vorbisenc, timestamp,
-          GST_BUFFER_DURATION (buffer)) && !first) {
+          GST_BUFFER_DURATION (buffer)) && !first
+         && vorbisenc->preserve_timestamps) {
     GST_WARNING_OBJECT (vorbisenc,
         "Buffer is discontinuous, flushing encoder "
         "and restarting (Discont from %" GST_TIME_FORMAT " to %" GST_TIME_FORMAT
@@ -1332,6 +1341,9 @@
     case ARG_LAST_MESSAGE:
       g_value_set_string (value, vorbisenc->last_message);
       break;
+    case ARG_PRESERVE_TIMESTAMPS:
+      g_value_set_boolean (value, vorbisenc->preserve_timestamps);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
diff -ruN vorbis.old/vorbisenc.h vorbis/vorbisenc.h
--- vorbis.old/vorbisenc.h      2009-03-31 19:11:50.000000000 +0200
+++ vorbis/vorbisenc.h  2009-03-31 18:54:40.000000000 +0200
@@ -87,6 +87,7 @@
   gboolean         setup;
   gboolean         header_sent;
   gchar           *last_message;
+  gboolean        preserve_timestamps;
 };

 struct _GstVorbisEncClass {
