--- gstrtpsession.c
+++ gstrtpsession.c
@@ -234,6 +234,7 @@
   RTPSession *session;
 
   /* thread for sending out RTCP */
+  GstClockID startup_delay_id;
   GstClockID id;
   gboolean stop_thread;
   GThread *thread;
@@ -823,18 +824,37 @@
 rtcp_thread (GstRtpSession * rtpsession)
 {
   GstClockID id;
+  GstClockID startup_delay_id;
   GstClockTime current_time;
   GstClockTime next_timeout;
   guint64 ntpnstime;
   GstClockTime running_time;
   RTPSession *session;
   GstClock *sysclock;
-
-  GST_DEBUG_OBJECT (rtpsession, "entering RTCP thread");
-
-  GST_RTP_SESSION_LOCK (rtpsession);
-
+  GstClockReturn res_startup_delay_id;
+
+  GST_DEBUG_OBJECT(rtpsession, "entering RTCP thread");
+
+  /* delay startup of RTCP Thread because there is might no RTP data received yet */
   sysclock = rtpsession->priv->sysclock;
+  current_time = gst_clock_get_time(sysclock);
+
+  GST_RTP_SESSION_LOCK(rtpsession);
+  #define MAX_RTCP_INITIAL_DELAY_MS 20
+  GST_DEBUG_OBJECT(rtpsession, "RTCP_INITIAL_DELAY_MS BEGIN");
+  startup_delay_id = rtpsession->priv->startup_delay_id = gst_clock_new_single_shot_id(sysclock,
+            current_time + MAX_RTCP_INITIAL_DELAY_MS * GST_MSECOND);
+  GST_RTP_SESSION_UNLOCK(rtpsession);
+
+  res_startup_delay_id = gst_clock_id_wait(startup_delay_id, NULL);
+
+  GST_DEBUG_OBJECT(rtpsession, "RTCP_INITIAL_DELAY_MS END unlocked because of: %i (GST_CLOCK_UNSCHEDULED =  2)", res_startup_delay_id);
+
+  GST_RTP_SESSION_LOCK(rtpsession);
+  gst_clock_id_unref(startup_delay_id);
+  rtpsession->priv->startup_delay_id = NULL;
+  GST_RTP_SESSION_UNLOCK(rtpsession);
+
   current_time = gst_clock_get_time (sysclock);
 
   session = rtpsession->priv->session;
@@ -1039,6 +1059,12 @@
 
   rtpsession = GST_RTP_SESSION (user_data);
 
+  /* allow RTCP thread startup */
+  GST_RTP_SESSION_LOCK (rtpsession);
+  if (rtpsession->priv->startup_delay_id)
+      gst_clock_id_unschedule (rtpsession->priv->startup_delay_id);
+  GST_RTP_SESSION_UNLOCK (rtpsession);
+
   GST_RTP_SESSION_LOCK (rtpsession);
   if ((rtp_src = rtpsession->recv_rtp_src))
     gst_object_ref (rtp_src);
@@ -1067,6 +1093,12 @@
   GstPad *rtp_src;
 
   rtpsession = GST_RTP_SESSION (user_data);
+
+  /* allow RTCP thread startup*/
+  GST_RTP_SESSION_LOCK (rtpsession);
+  if (rtpsession->priv->startup_delay_id)
+      gst_clock_id_unschedule (rtpsession->priv->startup_delay_id);
+  GST_RTP_SESSION_UNLOCK (rtpsession);
 
   GST_RTP_SESSION_LOCK (rtpsession);
   if ((rtp_src = rtpsession->send_rtp_src))

