gstreamer/gst/rtpmanager
Havard Graff fb9c75db36 rtpjitterbuffer: fix lost-event using dts instead of pts
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).
2016-11-04 16:51:20 +02:00
..
gstrtpbin.c rtpbin: introduce max-streams property 2016-08-26 11:57:06 -04:00
gstrtpbin.h rtpbin: introduce max-streams property 2016-08-26 11:57:06 -04:00
gstrtpdtmfmux.c good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
gstrtpdtmfmux.h rtpmux: Fix FSF address 2012-12-16 16:36:39 +00:00
gstrtpjitterbuffer.c rtpjitterbuffer: fix lost-event using dts instead of pts 2016-11-04 16:51:20 +02:00
gstrtpjitterbuffer.h rtpjitterbuffer: small optimizations 2014-04-29 16:21:44 +02:00
gstrtpmanager.c rtpmanager: add new rtprtxsend / rtprtxreceive elements 2014-01-03 20:47:59 +01:00
gstrtpmux.c Revert "rtpmux: fix PROP_TIMESTAMP_OFFSET range problems" 2016-08-26 12:06:51 -04:00
gstrtpmux.h Revert "rtpmux: fix PROP_TIMESTAMP_OFFSET range problems" 2016-08-26 12:06:51 -04:00
gstrtpptdemux.c good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
gstrtpptdemux.h Fix FSF address 2012-11-04 00:07:18 +00:00
gstrtprtxqueue.c good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
gstrtprtxqueue.h rtxqueue: add property to configure queue size 2013-08-23 15:47:25 +02:00
gstrtprtxreceive.c rtxreceive: Set buffer flag for retransmitted packets 2016-09-14 19:37:50 -04:00
gstrtprtxreceive.h rtprtxreceive: Wait until timeout to clear association requests 2014-05-04 22:36:59 -04:00
gstrtprtxsend.c good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
gstrtprtxsend.h rtprtxsend: run a new GstTask on the src pad 2014-01-21 14:54:01 +01:00
gstrtpsession.c rtpbin: pipeline gets an EOS when any rtpsources byes 2016-11-01 20:16:18 +02:00
gstrtpsession.h rtpmanager: add new on-new-sender-ssrc, on-sender-ssrc-active signals 2015-10-02 16:39:29 +03:00
gstrtpssrcdemux.c good: use new gst_element_class_add_static_pad_template() 2016-03-24 14:32:20 +02:00
gstrtpssrcdemux.h rtpssrcdemux: Remove unused GstSegment 2013-04-02 23:42:41 -04:00
Makefile.am rtpmanager: It's GST_LIBS, not GST_LIBS_LIBS 2016-04-11 10:44:56 +03:00
meson.build Add support for Meson as alternative/parallel build system 2016-08-20 11:21:12 +01:00
rtpjitterbuffer.c rtpjitterbuffer: fix lost-event using dts instead of pts 2016-11-04 16:51:20 +02:00
rtpjitterbuffer.h rtpjitterbuffer: fix lost-event using dts instead of pts 2016-11-04 16:51:20 +02:00
rtpsession.c rtpbin: avoid generating errors when rtcp messages are empty and check the queue is not empty 2016-11-01 20:17:20 +02:00
rtpsession.h rtpbin: pipeline gets an EOS when any rtpsources byes 2016-11-01 20:16:18 +02:00
rtpsource.c rtpsource: reordered packets are very normal, and should not be a warning 2016-08-26 11:53:22 -04:00
rtpsource.h rtpmanager: Take into account packet rate for max-dropout and max-misorder calculations 2015-10-07 12:07:18 +01:00
rtpstats.c rtpjitterbuffer: Actually calculate the packet rate for max-dropout and max-misorder calculations. 2016-08-10 19:49:27 +02:00
rtpstats.h rtpmanager: Take into account packet rate for max-dropout and max-misorder calculations 2015-10-07 12:07:18 +01:00