rtpsession: sanity check RTT before ignoring PLI/FIR
authorStian Selnes <stian@pexip.com>
Mon, 30 Jun 2014 13:43:58 +0000 (15:43 +0200)
committerOlivier CrĂȘte <olivier.crete@collabora.com>
Thu, 25 Aug 2016 22:28:44 +0000 (18:28 -0400)
gst/rtpmanager/rtpsession.c

index e3bf338..3a2768b 100644 (file)
@@ -2575,6 +2575,11 @@ rtp_session_request_local_key_unit (RTPSession * sess, RTPSource * src,
     GstClockTime round_trip_in_ns = gst_util_uint64_scale (round_trip,
         GST_SECOND, 65536);
 
+     /* Sanity check to avoid always ignoring PLI/FIR if we receive RTCP
+      * packets with erroneous values resulting in crazy high RTT. */
+     if (round_trip_in_ns > 5 * GST_SECOND)
+       round_trip_in_ns = GST_SECOND / 2;
+
     if (current_time - sess->last_keyframe_request < 2 * round_trip_in_ns) {
       GST_DEBUG ("Ignoring %s request because one was send without one "
           "RTT (%" GST_TIME_FORMAT " < %" GST_TIME_FORMAT ")",