gstreamer/gst/rtpmanager
Edward Hervey b82da62922 jitterbuffer: Speed up lost timeout handling
When downstream blocks, "lost" timers are created to notify the
outgoing thread that packets are lost.

The problem is that for high packet-rate streams, we might end up with
a big list of lost timeouts (had a use-case with ~1000...).

The problem isn't so much the amount of lost timeouts to handle, but
rather the way they were handled. All timers would first be iterated,
then the one selected would be handled ... to re-iterate the list again.

All of this is being done while the jbuf lock is taken, which in some use-cases
would return in holding that lock for 10s... blocking any buffers from
being accepted in input... which would then arrive late ... which would
create plenty of lost timers ... which would cause the same issue.

In order to avoid that situation, handle the lost timers immediately when
iterating the list of pending timers. This modifies the complexity from
a quadratic to a linear complexity.

https://bugzilla.gnome.org/show_bug.cgi?id=762988
2016-04-07 10:14:24 +02:00
..
gstrtpbin.c rtpjitterbuffer: Add RFC7273 media clock handling 2016-04-03 11:24:34 +03:00
gstrtpbin.h rtpjitterbuffer: Add RFC7273 media clock handling 2016-04-03 11:24:34 +03:00
gstrtpdtmfmux.c good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
gstrtpdtmfmux.h rtpmux: Fix FSF address 2012-12-16 16:36:39 +00:00
gstrtpjitterbuffer.c jitterbuffer: Speed up lost timeout handling 2016-04-07 10:14:24 +02:00
gstrtpjitterbuffer.h rtpjitterbuffer: small optimizations 2014-04-29 16:21:44 +02:00
gstrtpmanager.c rtpmanager: add new rtprtxsend / rtprtxreceive elements 2014-01-03 20:47:59 +01:00
gstrtpmux.c good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
gstrtpmux.h rtpmux: As 0xFFFFFFFF is a valid ssrc, check if it has been set 2015-10-02 17:39:10 -04:00
gstrtpptdemux.c good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
gstrtpptdemux.h Fix FSF address 2012-11-04 00:07:18 +00:00
gstrtprtxqueue.c good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
gstrtprtxqueue.h rtxqueue: add property to configure queue size 2013-08-23 15:47:25 +02:00
gstrtprtxreceive.c good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
gstrtprtxreceive.h rtprtxreceive: Wait until timeout to clear association requests 2014-05-04 22:36:59 -04:00
gstrtprtxsend.c good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
gstrtprtxsend.h rtprtxsend: run a new GstTask on the src pad 2014-01-21 14:54:01 +01:00
gstrtpsession.c rtpmanager: Set to initial value for 'ntpns' in get_current_times() 2016-03-29 10:21:07 +03:00
gstrtpsession.h rtpmanager: add new on-new-sender-ssrc, on-sender-ssrc-active signals 2015-10-02 16:39:29 +03:00
gstrtpssrcdemux.c good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
gstrtpssrcdemux.h rtpssrcdemux: Remove unused GstSegment 2013-04-02 23:42:41 -04:00
Makefile.am Remove obsolete Android build cruft 2015-04-26 17:55:07 +01:00
rtpjitterbuffer.c rtpjitterbuffer: Add RFC7273 media clock handling 2016-04-03 11:24:34 +03:00
rtpjitterbuffer.h rtpjitterbuffer: Add RFC7273 media clock handling 2016-04-03 11:24:34 +03:00
rtpsession.c rtpsession: Add new signal 'on-app-rtcp' 2016-03-30 15:42:01 +03:00
rtpsession.h rtpsession: Add new signal 'on-app-rtcp' 2016-03-30 15:42:01 +03:00
rtpsource.c rtpmanager: Some comment and documentation clarifications/fixes 2016-03-15 09:32:47 +00:00
rtpsource.h rtpmanager: Take into account packet rate for max-dropout and max-misorder calculations 2015-10-07 12:07:18 +01:00
rtpstats.c rtpmanager: Take into account packet rate for max-dropout and max-misorder calculations 2015-10-07 12:07:18 +01:00
rtpstats.h rtpmanager: Take into account packet rate for max-dropout and max-misorder calculations 2015-10-07 12:07:18 +01:00