gstreamer/gst/rtpmanager
Havard Graff 1368b4214b rtpjitterbuffer: clean up and improve missing packets handling
* Try to make variable and function names more clear.
* Add plenty of comments describing the logic step-by-step.
* Improve the logging around this, making the logs easier to read and
  understand when debugging these issues.

* Revise the logic of packets that are actually beyond saving in doing
  the following:
1. Do an optimistic estimation of which packets can still arrive.
2. Based on this, find which packets (and duration) are now hopelessly
   lost.
3. Issue an immediate lost-event for the hopelessly lost and then add
   lost/rtx timers for the ones we still hope to save, meaning that if
   they are to arrive, they will not be discarded.

* Revise the use of rtx-delay:
  Earlier the rtx-delay would vary, depending on the pts of the latest
  packet and the estimated pts of the packet it being issued a RTX for,
  but now that we aim to estimate the PTS of the missing packet accurately,
  the RTX delay should remain the same for all packets.
  Meaning: If the packet have a PTS of X, the delay in asked for a RTX
  for this packet is always a constant X + delay, not a variable one.

* Finally ensure that the chaotic "check-for-stall" tests uses timestamps
  that starts from 0 to make them easier to debug.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/952>
2021-04-24 13:53:58 +00:00
..
gstrtpbin.c rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpbin.h rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpdtmfmux.c rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpdtmfmux.h rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpfunnel.c rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpfunnel.h rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtphdrext-rfc6464.c rtp: fix rtphdrextrfc6464 to support big endian. 2021-04-13 11:35:15 +00:00
gstrtphdrext-rfc6464.h rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtphdrext-twcc.c rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtphdrext-twcc.h rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpjitterbuffer.c rtpjitterbuffer: clean up and improve missing packets handling 2021-04-24 13:53:58 +00:00
gstrtpjitterbuffer.h rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpmanager.c rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpmux.c rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpmux.h rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpptdemux.c rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpptdemux.h rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtprtxqueue.c rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtprtxqueue.h rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtprtxreceive.c rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtprtxreceive.h rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtprtxsend.c rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtprtxsend.h rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpsession.c rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpsession.h rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpssrcdemux.c rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpssrcdemux.h rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpst2022-1-fecdec.c rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpst2022-1-fecdec.h rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpst2022-1-fecenc.c rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
gstrtpst2022-1-fecenc.h rtpmanager: allow per feature registration 2021-03-29 12:45:22 +02:00
meson.build rtp: add rtphdrextrfc6464 2021-02-04 11:12:51 +01:00
rtpjitterbuffer.c rtpjitterbuffer: More logging when calculating rfc7273 timestamps 2021-04-09 12:48:02 +05:30
rtpjitterbuffer.h rtpjitterbuffer: Properly free internal packets queue in finalize() 2020-04-22 10:28:30 -04:00
rtpsession.c rtpsession: never send on a non-internal source 2020-11-13 21:35:58 +01:00
rtpsession.h rtpmanager: Google Transport-Wide Congestion Control RTP Extension 2020-02-14 10:09:02 +00:00
rtpsource.c rtpsource: rewrite timeout-check to avoid underflow 2020-11-13 21:30:06 +01:00
rtpsource.h rtpsource: Report for which local SSRC is a remote RB reporting on 2020-11-03 12:35:54 -05:00
rtpstats.c rtpstats: guard against division by zero 2020-06-26 15:29:25 +00:00
rtpstats.h rtpsource: Report for which local SSRC is a remote RB reporting on 2020-11-03 12:35:54 -05:00
rtptimerqueue.c rtpjitterbuffer: don't send multiple instant RTX for the same packet 2020-10-28 01:22:24 +01:00
rtptimerqueue.h rtpjitterbuffer: don't send multiple instant RTX for the same packet 2020-10-28 01:22:24 +01:00
rtptwcc.c rtp: fix rtptwcc to support big endian. 2021-04-13 11:35:15 +00:00
rtptwcc.h rtpmanager: fix "redefinition of typedef RTPTWCCManager" compiler warning 2020-07-20 18:20:59 +01:00