mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-21 07:46:38 +00:00
fb9c75db36
The lost-event was using a different time-domain (dts) than the outgoing buffers (pts). Given certain network-conditions these two would become sufficiently different and the lost-event contained timestamp/duration that was really wrong. As an example GstAudioDecoder could produce a stream that jumps back and forth in time after receiving a lost-event. The previous behavior calculated the pts (based on the rtptime) inside the rtp_jitter_buffer_insert function, but now this functionality has been refactored into a new function rtp_jitter_buffer_calculate_pts that is called much earlier in the _chain function to make pts available to various calculations that wrongly used dts previously (like the lost-event). There are however two calculations where using dts is the right thing to do: calculating the receive-jitter and the rtx-round-trip-time, where the arrival time of the buffer from the network is the right metric (and is what dts in fact is today). The patch also adds two tests regarding B-frames or the “rtptime-going-backwards”-scenario, as there were some concerns that this patch might break this behavior (which the tests shows it does not). |
||
---|---|---|
.. | ||
gstrtpbin.c | ||
gstrtpbin.h | ||
gstrtpdtmfmux.c | ||
gstrtpdtmfmux.h | ||
gstrtpjitterbuffer.c | ||
gstrtpjitterbuffer.h | ||
gstrtpmanager.c | ||
gstrtpmux.c | ||
gstrtpmux.h | ||
gstrtpptdemux.c | ||
gstrtpptdemux.h | ||
gstrtprtxqueue.c | ||
gstrtprtxqueue.h | ||
gstrtprtxreceive.c | ||
gstrtprtxreceive.h | ||
gstrtprtxsend.c | ||
gstrtprtxsend.h | ||
gstrtpsession.c | ||
gstrtpsession.h | ||
gstrtpssrcdemux.c | ||
gstrtpssrcdemux.h | ||
Makefile.am | ||
meson.build | ||
rtpjitterbuffer.c | ||
rtpjitterbuffer.h | ||
rtpsession.c | ||
rtpsession.h | ||
rtpsource.c | ||
rtpsource.h | ||
rtpstats.c | ||
rtpstats.h |