gstreamer/gst/rtpmanager
Havard Graff 8b96d8ee8d rtpbin: fix shutdown crash in rtpbin
The key is to make sure the jitterbuffer is set to NULL *before* the
ptdemux.

The race that existed would basically happen when ptdemux had reached
READY, and the jitterbuffer would then push a buffer, triggering a new
pad with a new payloadtype being added and ghosted to the rtpbin itself.

However, the srcpad of the ptdemux would now be inactive, and all the
sticky-event pushed on it would be swallowed, not allowing any to reach
the ghost-pad. Then the buffer in-flight would come to the ghostpad,
and we would assert that a buffer arrived before the necessary
events.

By simply re-ordering the state-changes, we ensure that there will be
no buffer racing into the ptdemux while its state is being changed,
and the problem disappears completely.

Notice also that there is not point in disconnecting the signals on the
ptdemux before this point, since we need the push-thread to settle
down before we can do this in a non-racy way.
2019-12-20 08:27:07 +00:00
..
gstrtpbin.c rtpbin: fix shutdown crash in rtpbin 2019-12-20 08:27:07 +00: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: forward correct segment when switching pad 2019-08-06 14:02:50 +00:00
gstrtpfunnel.h rtpfunnel: Stop using G_DECLARE_FINAL_TYPE 2018-11-13 00:37:11 +01:00
gstrtpjitterbuffer.c Don't pass default GLib marshallers for signals 2019-11-17 15:32:30 +00: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 Don't pass default GLib marshallers for signals 2019-11-17 15:32:30 +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 documentation: fix a number of typos 2019-10-05 22:38:11 +00:00
gstrtprtxsend.h rtprtxsend: run a new GstTask on the src pad 2014-01-21 14:54:01 +01:00
gstrtpsession.c rtpsession: add locking for clear-pt-map 2019-11-29 14:23:49 +01:00
gstrtpsession.h rtpsession: use the correct segment seqnum 2019-02-04 13:14:37 +00:00
gstrtpssrcdemux.c Don't pass default GLib marshallers for signals 2019-11-17 15:32:30 +00:00
gstrtpssrcdemux.h rtpssrcdemux: Remove unused GstSegment 2013-04-02 23:42:41 -04:00
meson.build rtptimerqueue: Consolidate a data structure for timers 2019-09-27 17:34:04 -04:00
rtpjitterbuffer.c rtpjitterbuffer: make sure not to drop packets based on skew 2019-11-02 23:05:32 +00:00
rtpjitterbuffer.h rtpjitterbuffer: Move item structure outside of the element 2019-09-27 13:02:16 -04:00
rtpsession.c Don't pass default GLib marshallers for signals 2019-11-17 15:32:30 +00:00
rtpsession.h documentation: fix a number of typos 2019-10-05 22:38:11 +00:00
rtpsource.c documentation: fix a number of typos 2019-10-05 22:38:11 +00:00
rtpsource.h rtpsession: Send as many nack seqnum as possible 2019-04-05 14:53:09 +00:00
rtpstats.c rtpjitterbuffer: don't try and calculate packet-rate if seqnum are jumping 2019-06-12 11:39:31 +02:00
rtpstats.h rtpmanager: consider UDP and IP headers in bandwidth calculation 2019-08-02 17:22:51 +02:00
rtptimerqueue.c rtptimerqueue: Optimize reschedule optations 2019-09-27 17:34:04 -04:00
rtptimerqueue.h rtpjittterbuffer: Port timers array to RtpTimerQueue 2019-09-27 17:34:04 -04:00