rtpjitterbuffer: Change RTX timer availability checks to assertions

It's impossible to end up in the corresponding code without a timer for
RTX packets because otherwise it would be an unsolicited RTX packet and
we would've already returned early.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2973>
This commit is contained in:
Sebastian Dröge 2022-09-02 12:19:26 +03:00 committed by GStreamer Marge Bot
parent 2ca849499e
commit 0b19c457ca

View file

@ -3395,8 +3395,12 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent,
priv->last_known_ntpnstime = inband_ntp_time; priv->last_known_ntpnstime = inband_ntp_time;
} }
if (is_rtx) if (is_rtx) {
/* For RTX there must be a corresponding timer or it would be an
* unsolicited RTX packet that would be dropped */
g_assert (timer != NULL);
timer->num_rtx_received++; timer->num_rtx_received++;
}
/* At 2^15, we would detect a seqnum rollover too early, therefore /* At 2^15, we would detect a seqnum rollover too early, therefore
* limit the queue size. But let's not limit it to a number that is * limit the queue size. But let's not limit it to a number that is
@ -3428,7 +3432,11 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent,
/* priv->last_popped_seqnum >= seqnum, we're too late. */ /* priv->last_popped_seqnum >= seqnum, we're too late. */
if (G_UNLIKELY (gap <= 0)) { if (G_UNLIKELY (gap <= 0)) {
if (priv->do_retransmission) { if (priv->do_retransmission) {
if (is_rtx && timer) { if (is_rtx) {
/* For RTX there must be a corresponding timer or it would be an
* unsolicited RTX packet that would be dropped */
g_assert (timer != NULL);
update_rtx_stats (jitterbuffer, timer, dts, FALSE); update_rtx_stats (jitterbuffer, timer, dts, FALSE);
/* Only count the retranmitted packet too late if it has been /* Only count the retranmitted packet too late if it has been
* considered lost. If the original packet arrived before the * considered lost. If the original packet arrived before the
@ -3510,8 +3518,12 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent,
* FALSE if a packet with the same seqnum was already in the queue, meaning we * FALSE if a packet with the same seqnum was already in the queue, meaning we
* have a duplicate. */ * have a duplicate. */
if (G_UNLIKELY (duplicate)) { if (G_UNLIKELY (duplicate)) {
if (is_rtx && timer) if (is_rtx) {
/* For RTX there must be a corresponding timer or it would be an
* unsolicited RTX packet that would be dropped */
g_assert (timer != NULL);
update_rtx_stats (jitterbuffer, timer, dts, FALSE); update_rtx_stats (jitterbuffer, timer, dts, FALSE);
}
goto duplicate; goto duplicate;
} }