gstreamer/gst
Nicolas Dufresne b4f421e9aa rtpjitterbuffer: Keep JBUF lock while processing timers
Until now, do_expected_timeout() was shortly dropping the JBUF_LOCK in order
to push RTX event event without causing deadlock. As a side effect, some
CPU hung would happen as the timerqueue would get filled while looping over
the due timers. To mitigate this, we were processing the lost timer first and
placing into a queue the remainign to be processed later.

In the gap caused by an unlock, we could endup receiving one of the seqnum
present in the pending timers. In that case, the timer would not be found and
a new one was created. When we then update the expected timer, the seqnum
would already exist and the updated timer would be lost.

In this patch we remove the unlock from do_expected_timeout() and place all
pending RTX event into a queue (instead of pending timer). Then, as soon as
we have selected a timer to wait (or if there is no timer to wait for) we send
all the upstream RTX events. As we no longer unlock, we no longer need to pop
more then one timer from the queue, and we do so with the lock held, which
blocks any new colliding timers from being created.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/616>
2020-06-08 17:54:53 -04:00
..
alpha plugins: uddate gst_type_mark_as_plugin_api() calls 2020-06-06 00:42:25 +02:00
apetag Remove autotools build system 2019-10-14 11:04:18 +01:00
audiofx plugins: uddate gst_type_mark_as_plugin_api() calls 2020-06-06 00:42:25 +02:00
audioparsers mpegaudioparse: Use a constant bit rate to convert between time and bytes if possible. 2020-03-19 14:02:44 +00:00
auparse Remove autotools build system 2019-10-14 11:04:18 +01:00
autodetect Remove autotools build system 2019-10-14 11:04:18 +01:00
avi avidemux: Avoid potential double-free 2020-05-06 04:36:46 +00:00
cutter Remove autotools build system 2019-10-14 11:04:18 +01:00
debugutils good: Avoid usage of deprecated API 2019-10-16 07:46:58 +00:00
deinterlace plugins: uddate gst_type_mark_as_plugin_api() calls 2020-06-06 00:42:25 +02:00
dtmf Remove autotools build system 2019-10-14 11:04:18 +01:00
effectv plugins: uddate gst_type_mark_as_plugin_api() calls 2020-06-06 00:42:25 +02:00
equalizer Remove autotools build system 2019-10-14 11:04:18 +01:00
flv plugins: uddate gst_type_mark_as_plugin_api() calls 2020-06-06 00:42:25 +02:00
flx Remove autotools build system 2019-10-14 11:04:18 +01:00
goom Remove autotools build system 2019-10-14 11:04:18 +01:00
goom2k1 Remove autotools build system 2019-10-14 11:04:18 +01:00
icydemux Remove autotools build system 2019-10-14 11:04:18 +01:00
id3demux Remove autotools build system 2019-10-14 11:04:18 +01:00
imagefreeze imagefreeze: Handle flushing correctly 2020-05-06 08:06:33 +00:00
interleave Remove autotools build system 2019-10-14 11:04:18 +01:00
isomp4 plugins: uddate gst_type_mark_as_plugin_api() calls 2020-06-06 00:42:25 +02:00
law Remove autotools build system 2019-10-14 11:04:18 +01:00
level Remove autotools build system 2019-10-14 11:04:18 +01:00
matroska matroska: Check the return value of gst_segment_do_seek() 2020-04-02 05:23:17 +00:00
monoscope Remove autotools build system 2019-10-14 11:04:18 +01:00
multifile plugins: uddate gst_type_mark_as_plugin_api() calls 2020-06-06 00:42:25 +02:00
multipart good: use of g_value_dup_string 2019-12-20 09:30:26 +00:00
replaygain Remove autotools build system 2019-10-14 11:04:18 +01:00
rtp plugins: uddate gst_type_mark_as_plugin_api() calls 2020-06-06 00:42:25 +02:00
rtpmanager rtpjitterbuffer: Keep JBUF lock while processing timers 2020-06-08 17:54:53 -04:00
rtsp plugins: uddate gst_type_mark_as_plugin_api() calls 2020-06-06 00:42:25 +02:00
shapewipe Remove autotools build system 2019-10-14 11:04:18 +01:00
smpte plugins: uddate gst_type_mark_as_plugin_api() calls 2020-06-06 00:42:25 +02:00
spectrum Remove autotools build system 2019-10-14 11:04:18 +01:00
udp Don't pass default GLib marshallers for signals 2019-11-17 15:32:30 +00:00
videobox plugins: uddate gst_type_mark_as_plugin_api() calls 2020-06-06 00:42:25 +02:00
videocrop Fix usage of C99 2020-03-23 21:32:04 -04:00
videofilter plugins: uddate gst_type_mark_as_plugin_api() calls 2020-06-06 00:42:25 +02:00
videomixer plugins: uddate gst_type_mark_as_plugin_api() calls 2020-06-06 00:42:25 +02:00
wavenc wavenc: Fix writing of the channel mask with >2 channels 2020-01-13 19:50:06 +00:00
wavparse Remove autotools build system 2019-10-14 11:04:18 +01:00
y4m Remove autotools build system 2019-10-14 11:04:18 +01:00
meson.build meson: Add feature options for all plugins 2018-07-27 18:42:54 +05:30