gstreamer/gst/rtpmanager
Havard Graff 981d0c02de rtpjitterbuffer: don't use RTX packets in rate-calc and reset-logic
The problem was this:

Due to the highly irregular arrival of RTX-packet the max-misorder variable
could be pushed very low. (-10).

If you then at some point get a big in the sequence-numbers (62 in the
test) you end up sending RTX-requests for some of those packets, and then
if the sender answers those requests, you are going to get a bunch of
RTX-packets arriving. (-13 and then 5 more packets in the test)

Now, if max-misorder is pushed very low at this point, these RTX-packets
will trigger the handle_big_gap_buffer() logic, and because they arriving
so neatly in order, (as they would, since they have been requested like
that), the gst_rtp_jitter_buffer_reset() will be called, and two things
will happen:
1. priv->next_seqnum will be set to the first RTX packet
2. the 5 RTX-packet will be pushed into the chain() function

However, at this point, these RTX-packets are no longer valid, the
jitterbuffer has already pushed lost-events for these, so they will now
be dropped on the floor, and never make it to the waiting loop-function.

And, since we now have a priv->next_seqnum that will never arrive
in the loop-function, the jitterbuffer is now stalled forever, and will
not push out another buffer.

The proposed fixes:
1. Don't use RTX in calculation of the packet-rate.
2. Don't use RTX in large-gap logic, as they are likely to be dropped.
2020-04-16 17:06:31 +02:00
..
gstrtpbin.c rtpbin: make warning messages more meaningful 2020-03-31 15:51:27 -04:00
gstrtpbin.h rtpbin: add request-jitterbuffer signal 2019-09-24 15:33:21 +00:00
gstrtpdtmfmux.c docs: Port all docstring to gtk-doc markdown 2019-05-13 10:24:40 -04:00
gstrtpdtmfmux.h rtpmux: Fix FSF address 2012-12-16 16:36:39 +00:00
gstrtpfunnel.c rtpfunnel: various cleanups 2020-02-14 10:08:05 +00:00
gstrtpfunnel.h rtpfunnel: Stop using G_DECLARE_FINAL_TYPE 2018-11-13 00:37:11 +01:00
gstrtpjitterbuffer.c rtpjitterbuffer: don't use RTX packets in rate-calc and reset-logic 2020-04-16 17:06:31 +02:00
gstrtpjitterbuffer.h rtpjitterbuffer: small optimizations 2014-04-29 16:21:44 +02:00
gstrtpmanager.c Initial commit of GstRtpFunnel 2018-10-15 14:20:58 +02:00
gstrtpmux.c docs: Port all docstring to gtk-doc markdown 2019-05-13 10:24:40 -04:00
gstrtpmux.h doc: Fix some docstrings 2019-05-13 17:00:00 -04:00
gstrtpptdemux.c rtpptdemux: set payload to caps inside gst_rtp_pt_demux_get_caps 2020-02-11 18:39:22 +00:00
gstrtpptdemux.h documentation: fix a number of typos 2019-10-05 22:38:11 +00:00
gstrtprtxqueue.c doc: fix element section documentations 2019-05-25 16:57:31 +02:00
gstrtprtxqueue.h rtprtxqueue: implement handling of the max-size-time property 2017-04-11 09:44:33 +03:00
gstrtprtxreceive.c documentation: fix a number of typos 2019-10-05 22:38:11 +00:00
gstrtprtxreceive.h rtprtxreceive: Wait until timeout to clear association requests 2014-05-04 22:36:59 -04:00
gstrtprtxsend.c rtprtxsend: allow generic input caps 2020-01-28 15:44:13 +00:00
gstrtprtxsend.h rtprtxsend: allow generic input caps 2020-01-28 15:44:13 +00:00
gstrtpsession.c rtpsession: rename RTCP thread 2020-03-31 13:34:07 +02:00
gstrtpsession.h rtpsession: use the correct segment seqnum 2019-02-04 13:14:37 +00:00
gstrtpssrcdemux.c rtpssrcdemux: Handle RTCP APP packets 2020-02-11 15:12:07 +01:00
gstrtpssrcdemux.h rtpssrcdemux: introduce max-streams property 2020-02-11 15:10:12 +01:00
meson.build rtpmanager: Google Transport-Wide Congestion Control RTP Extension 2020-02-14 10:09:02 +00:00
rtpjitterbuffer.c rtpjitterbuffer: create specific API for appending buffers, events etc 2020-03-31 10:02:57 +00:00
rtpjitterbuffer.h rtpjitterbuffer: create specific API for appending buffers, events etc 2020-03-31 10:02:57 +00:00
rtpsession.c rtptwcc: make RTPTWCCManager a GObject 2020-03-04 16:48:04 +01:00
rtpsession.h rtpmanager: Google Transport-Wide Congestion Control RTP Extension 2020-02-14 10:09:02 +00:00
rtpsource.c rtpmanager: Google Transport-Wide Congestion Control RTP Extension 2020-02-14 10:09:02 +00:00
rtpsource.h rtpsession: Send as many nack seqnum as possible 2019-04-05 14:53:09 +00:00
rtpstats.c rtpmanager: Google Transport-Wide Congestion Control RTP Extension 2020-02-14 10:09:02 +00:00
rtpstats.h rtpmanager: Google Transport-Wide Congestion Control RTP Extension 2020-02-14 10:09:02 +00:00
rtptimerqueue.c rtptimerqueue: remove ->num from the timer 2020-03-20 13:17:20 +00:00
rtptimerqueue.h rtptimerqueue: remove ->num from the timer 2020-03-20 13:17:20 +00:00
rtptwcc.c Fix usage of C99 2020-03-23 21:32:04 -04:00
rtptwcc.h rtptwcc: make RTPTWCCManager a GObject 2020-03-04 16:48:04 +01:00