rtpjitterbuffer: Set max-rtcp-rtp-sync-time to -1 (disabled)

There is generally no requirement to ignore RTCP SR if the RTP time of
the SR differs a lot from the last received RTP packet. The mapping
between RTP and NTP time stays valid until there was a stream reset, in
which case we wouldn't use that information anyway.

When using rtcp-sync-send-time=false the default of 1s difference can
easily be exceeded, e.g. if encoding of the stream after capture adds
more than 1s of latency.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>
This commit is contained in:
Sebastian Dröge 2024-04-17 17:49:11 +03:00 committed by GStreamer Marge Bot
parent 95a0649945
commit df8c29e340
4 changed files with 9 additions and 9 deletions

View file

@ -17977,7 +17977,7 @@
"construct": false, "construct": false,
"construct-only": false, "construct-only": false,
"controllable": false, "controllable": false,
"default": "1000", "default": "-1",
"max": "2147483647", "max": "2147483647",
"min": "-1", "min": "-1",
"mutable": "null", "mutable": "null",
@ -19025,7 +19025,7 @@
"construct": false, "construct": false,
"construct-only": false, "construct-only": false,
"controllable": false, "controllable": false,
"default": "1000", "default": "-1",
"max": "2147483647", "max": "2147483647",
"min": "-1", "min": "-1",
"mutable": "null", "mutable": "null",
@ -21768,7 +21768,7 @@
"construct": false, "construct": false,
"construct-only": false, "construct-only": false,
"controllable": false, "controllable": false,
"default": "1000", "default": "-1",
"max": "2147483647", "max": "2147483647",
"min": "-1", "min": "-1",
"mutable": "null", "mutable": "null",
@ -29145,4 +29145,4 @@
"tracers": {}, "tracers": {},
"url": "Unknown package origin" "url": "Unknown package origin"
} }
} }

View file

@ -347,7 +347,7 @@ enum
#define DEFAULT_RTP_PROFILE GST_RTP_PROFILE_AVP #define DEFAULT_RTP_PROFILE GST_RTP_PROFILE_AVP
#define DEFAULT_NTP_TIME_SOURCE GST_RTP_NTP_TIME_SOURCE_NTP #define DEFAULT_NTP_TIME_SOURCE GST_RTP_NTP_TIME_SOURCE_NTP
#define DEFAULT_RTCP_SYNC_SEND_TIME TRUE #define DEFAULT_RTCP_SYNC_SEND_TIME TRUE
#define DEFAULT_MAX_RTCP_RTP_TIME_DIFF 1000 #define DEFAULT_MAX_RTCP_RTP_TIME_DIFF -1
#define DEFAULT_MAX_DROPOUT_TIME 60000 #define DEFAULT_MAX_DROPOUT_TIME 60000
#define DEFAULT_MAX_MISORDER_TIME 2000 #define DEFAULT_MAX_MISORDER_TIME 2000
#define DEFAULT_RFC7273_SYNC FALSE #define DEFAULT_RFC7273_SYNC FALSE

View file

@ -151,7 +151,7 @@ enum
#define DEFAULT_RTX_MAX_RETRIES -1 #define DEFAULT_RTX_MAX_RETRIES -1
#define DEFAULT_RTX_DEADLINE -1 #define DEFAULT_RTX_DEADLINE -1
#define DEFAULT_RTX_STATS_TIMEOUT 1000 #define DEFAULT_RTX_STATS_TIMEOUT 1000
#define DEFAULT_MAX_RTCP_RTP_TIME_DIFF 1000 #define DEFAULT_MAX_RTCP_RTP_TIME_DIFF -1
#define DEFAULT_MAX_DROPOUT_TIME 60000 #define DEFAULT_MAX_DROPOUT_TIME 60000
#define DEFAULT_MAX_MISORDER_TIME 2000 #define DEFAULT_MAX_MISORDER_TIME 2000
#define DEFAULT_RFC7273_SYNC FALSE #define DEFAULT_RFC7273_SYNC FALSE
@ -4831,7 +4831,7 @@ do_handle_sync (GstRtpJitterBuffer * jitterbuffer)
if (ext_rtptime > last_rtptime) { if (ext_rtptime > last_rtptime) {
/* check how far ahead it is to our RTP timestamps */ /* check how far ahead it is to our RTP timestamps */
diff = ext_rtptime - last_rtptime; diff = ext_rtptime - last_rtptime;
/* if bigger than 1 second, we drop it */ /* if bigger than configured maximum difference then we drop it */
if (jitterbuffer->priv->max_rtcp_rtp_time_diff != -1 && if (jitterbuffer->priv->max_rtcp_rtp_time_diff != -1 &&
diff > diff >
gst_util_uint64_scale (jitterbuffer->priv->max_rtcp_rtp_time_diff, gst_util_uint64_scale (jitterbuffer->priv->max_rtcp_rtp_time_diff,
@ -4839,7 +4839,7 @@ do_handle_sync (GstRtpJitterBuffer * jitterbuffer)
GST_DEBUG_OBJECT (jitterbuffer, "too far ahead"); GST_DEBUG_OBJECT (jitterbuffer, "too far ahead");
/* should drop this, but some RTSP servers end up with bogus /* should drop this, but some RTSP servers end up with bogus
* way too ahead RTCP packet when repeated PAUSE/PLAY, * way too ahead RTCP packet when repeated PAUSE/PLAY,
* so still trigger rptbin sync but invalidate RTCP data * so still trigger rtpbin sync but invalidate RTCP data
* (sync might use other methods) */ * (sync might use other methods) */
ext_rtptime = -1; ext_rtptime = -1;
} }

View file

@ -302,7 +302,7 @@ gst_rtsp_backchannel_get_type (void)
#define DEFAULT_DO_RETRANSMISSION TRUE #define DEFAULT_DO_RETRANSMISSION TRUE
#define DEFAULT_NTP_TIME_SOURCE NTP_TIME_SOURCE_NTP #define DEFAULT_NTP_TIME_SOURCE NTP_TIME_SOURCE_NTP
#define DEFAULT_USER_AGENT "GStreamer/{VERSION}" #define DEFAULT_USER_AGENT "GStreamer/{VERSION}"
#define DEFAULT_MAX_RTCP_RTP_TIME_DIFF 1000 #define DEFAULT_MAX_RTCP_RTP_TIME_DIFF -1
#define DEFAULT_RFC7273_SYNC FALSE #define DEFAULT_RFC7273_SYNC FALSE
#define DEFAULT_ADD_REFERENCE_TIMESTAMP_META FALSE #define DEFAULT_ADD_REFERENCE_TIMESTAMP_META FALSE
#define DEFAULT_MAX_TS_OFFSET_ADJUSTMENT G_GUINT64_CONSTANT(0) #define DEFAULT_MAX_TS_OFFSET_ADJUSTMENT G_GUINT64_CONSTANT(0)