gstreamer/gst
Havard Graff 63c7a9ae43 rtpjitterbuffer: don't send multiple instant RTX for the same packet
Due to us not properly acknowleding the time when the last RTX was sent
when scheduling a new one, it can easily happen that due to the packet
you are requesting have a PTS that is slightly old (but not too old when
adding the latency of the jitterbuffer), both its calculated second and
third (etc.) timeout could already have passed. This would lead to a burst
of RTX requests, which acts completely against its purpose, potentially
spending a lot more bandwidth than needed.

This has been properly reproduced in the test:
test_rtx_not_bursting_requests

The good news is that slightly re-thinking the logic concerning
re-requesting RTX, made it a lot simpler to understand, and allows us
to remove two members of the RtpTimer which no longer serves any purpose
due to the refactoring. If desirable the whole "delay" concept can actually
be removed completely from the timers, and simply just added to the timeout
by the caller of the API. But that can be a change for a another time.

The only external change (other than the improved behavior around bursting
RTX) is that the "delay" field now stricly represents the delay between
the PTS of the RTX-requested packet and the time it is requested on,
whereas before this calculation was more about the theoretical calculated
delay. This is visible in three other RTX-tests where the delay had
to be adjusted slightly. I am confident however that this change is
correct.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/789>
2020-10-28 01:22:24 +01: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 meson: add update-orc-dist target 2020-07-04 15:04:59 +01: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 auparse: fix compiler warnings 2020-07-29 19:21:31 +03:00
autodetect autodetect: mark filter-caps property as DOC_SHOW_DEFAULT 2020-06-24 17:04:51 +02: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 meson: add update-orc-dist target 2020-07-04 15:04:59 +01: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 docs: mark GstIirEqualizer as plugin API 2020-06-23 19:04:03 +02:00
flv flvmux: Correct time types 2020-10-09 07:10:47 +00: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: Response caps query from srcpad 2020-09-21 10:28:01 +03:00
interleave Remove autotools build system 2019-10-14 11:04:18 +01:00
isomp4 meson: update glib minimum version to 2.56 2020-10-15 18:21:54 +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-mux: Fix sparse stream crash 2020-10-28 01:55:06 +11:00
monoscope Remove autotools build system 2019-10-14 11:04:18 +01:00
multifile splitmuxsrc: Implement segment query 2020-09-18 10:54:23 -04: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 rtputils: Count metas with an empty tag list for copying/keeping 2020-10-22 09:19:53 -04:00
rtpmanager rtpjitterbuffer: don't send multiple instant RTX for the same packet 2020-10-28 01:22:24 +01:00
rtsp rtspsrc: Fix push-backchannel-buffer parameter mismatch 2020-09-11 18:33:04 +08: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 meson: update glib minimum version to 2.56 2020-10-15 18:21:54 +02:00
videobox meson: add update-orc-dist target 2020-07-04 15:04:59 +01: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 meson: add update-orc-dist target 2020-07-04 15:04:59 +01: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