gstreamer/gst
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
..
alpha good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
apetag good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
audiofx good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
audioparsers good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
auparse good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
autodetect good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
avi good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
cutter good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
debugutils good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
deinterlace deinterlace: Added "auto" fields mode 2016-03-24 14:34:11 +02:00
dtmf good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
effectv good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
equalizer equalizer: The child-proxy API is GObject based in 1.x 2016-01-05 18:59:25 +02:00
flv flvdemux: don't emit pad-added until caps are ready 2016-03-24 14:33:33 +02:00
flx gst Factor out endian-order RGB formats 2016-03-10 10:00:58 +00:00
goom good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
goom2k1 good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
icydemux good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
id3demux good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
imagefreeze good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
interleave deinterleave: Return the current caps on the srcpads on caps queries 2016-03-24 14:47:40 +02:00
isomp4 qtdemux: PIFF box detection and parsing support 2016-04-02 18:01:10 +01:00
law good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
level good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
matroska good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
monoscope good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
multifile splitmux: Handle a hang draining out at EOS 2016-04-01 00:48:05 +11:00
multipart good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
replaygain good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
rtp rtpjpegdepay: Don't send invalid frames downstream after packet loss or a DISCONT 2016-04-04 17:40:11 +01:00
rtpmanager jitterbuffer: Speed up lost timeout handling 2016-04-07 10:14:24 +02:00
rtsp rtpjitterbuffer: Add RFC7273 media clock handling 2016-04-03 11:24:34 +03:00
shapewipe good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
smpte good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
spectrum win32: remove outdated build cruft 2016-02-21 09:47:43 +00:00
udp good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
videobox good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
videocrop good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
videofilter good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
videomixer good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
wavenc good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
wavparse good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
y4m good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
Makefile.am build: build plugins and examples in parallel where possible 2010-03-29 11:00:57 +01:00