gstreamer/subprojects/gst-plugins-good/gst
Jan Schmidt ef8dfd7873 rtpmanager: save the report block statistics in each RTPSource
Move RB info from receiver reports into the internal source that the RR
are about, and deprecate (but retain) the old mapping where each
external source has only a single RB entry in the rtp statistics.

The old method is broken if a remote peer uses a single ssrc to send
receiver reports for more than one of our internal sources, other
as multiple RB in a single packet, or alternate RB in different reports.
In each case only the most recent entry was kept, overwriting data for
other internal sources.

In multicast scenarios each internal source may receive multiple
receiver reports from different peers. To support that, all received
RR's are now stored into a hash table indexed by the sender's SSRC,
and all RRs are placed into an array when generating statistics, so
that the information from all peers is retrievable.

The current deficient behaviour (adding RB info into non-internal RTPSources) is
deprecated but kept in order to be backward compatible, and retained
that way in the generated statistics structure.

Refs
[1] https://tools.ietf.org/html/rfc3550#section-6.4.1

Based on a patch by Fede Claramonte <fclaramonte@twilio.com>

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7424>
2024-10-11 05:20:22 +00:00
..
alpha doc: Fix newline char between authors 2023-05-20 05:48:23 +00:00
apetag gst-plugins-good: re-indent with GNU indent 2.2.12 2023-03-17 03:18:54 +00:00
audiofx gst-plugins-good: re-indent with GNU indent 2.2.12 2023-03-17 03:18:54 +00:00
audioparsers flacparse: fix buffer overflow in gst_flac_parse_frame_is_valid 2024-05-27 23:31:44 +00:00
auparse meson: Call pkgconfig.generate in the loop where we declare plugins dependencies 2022-09-01 21:17:35 +00:00
autodetect meson: Call pkgconfig.generate in the loop where we declare plugins dependencies 2022-09-01 21:17:35 +00:00
avi gst-plugins-good: re-indent with GNU indent 2.2.12 2023-03-17 03:18:54 +00:00
cutter cutter: add audio-level-meta 2024-02-08 13:52:40 +00:00
debugutils common: Stop using GQuark-based GstStructure field name API 2024-09-26 19:21:29 +03:00
deinterlace common: Use more efficient versions of GstCapsFeatures API where possible 2024-09-26 19:26:18 +03:00
dtmf rtpdtmfsrc: minor logging clean-up 2024-06-19 07:32:49 +00:00
effectv meson: Call pkgconfig.generate in the loop where we declare plugins dependencies 2022-09-01 21:17:35 +00:00
equalizer meson: Call pkgconfig.generate in the loop where we declare plugins dependencies 2022-09-01 21:17:35 +00:00
flv flvmux: Use gst_aggregator_update_segment() instead of randomly pushing a segment event 2024-09-19 17:08:45 +03:00
flx meson: Call pkgconfig.generate in the loop where we declare plugins dependencies 2022-09-01 21:17:35 +00:00
goom gst-plugins-good: re-indent with GNU indent 2.2.12 2023-03-17 03:18:54 +00:00
goom2k1 meson: Call pkgconfig.generate in the loop where we declare plugins dependencies 2022-09-01 21:17:35 +00:00
icydemux meson: Call pkgconfig.generate in the loop where we declare plugins dependencies 2022-09-01 21:17:35 +00:00
id3demux meson: Call pkgconfig.generate in the loop where we declare plugins dependencies 2022-09-01 21:17:35 +00:00
imagefreeze gst-plugins-good: re-indent with GNU indent 2.2.12 2023-03-17 03:18:54 +00:00
interleave gst-plugins-good: use g_sort_array() instead of deprecated g_qsort_with_data() 2024-09-02 22:31:34 +00:00
isomp4 qtdemux: Add support for Lagarith fourcc tag 2024-10-10 03:55:04 +00:00
law meson: Call pkgconfig.generate in the loop where we declare plugins dependencies 2022-09-01 21:17:35 +00:00
level level: fix old "message" property doc chunk 2024-05-23 21:36:37 +00:00
matroska matroskamux: Add support for latency timeouts in live pipelines 2024-10-01 13:20:18 +00:00
monoscope video: Don't overshoot QoS earliest time by a factor of 2 2024-09-13 19:52:52 +00:00
multifile common: Stop using GQuark-based GstStructure field name API 2024-09-26 19:21:29 +03:00
multipart meson: Call pkgconfig.generate in the loop where we declare plugins dependencies 2022-09-01 21:17:35 +00:00
replaygain meson: Call pkgconfig.generate in the loop where we declare plugins dependencies 2022-09-01 21:17:35 +00:00
rtp rtppassthroughpay: Fix reading clock-rate and payload type from caps 2024-09-19 16:46:20 +00:00
rtpmanager rtpmanager: save the report block statistics in each RTPSource 2024-10-11 05:20:22 +00:00
rtsp common: Stop using GQuark-based GstStructure field name API 2024-09-26 19:21:29 +03:00
shapewipe video: Don't overshoot QoS earliest time by a factor of 2 2024-09-13 19:52:52 +00:00
smpte meson: Call pkgconfig.generate in the loop where we declare plugins dependencies 2022-09-01 21:17:35 +00:00
spectrum meson: Call pkgconfig.generate in the loop where we declare plugins dependencies 2022-09-01 21:17:35 +00:00
udp udpsrc: Add support for IGMPv3 SSM 2023-04-12 16:32:07 +00:00
videobox videocrop, videobox: Simplify navigation event handling and support touch events 2022-11-11 06:45:49 +00:00
videocrop videocrop, videobox: Simplify navigation event handling and support touch events 2022-11-11 06:45:49 +00:00
videofilter videoflip: fix concurrent access when modifying the tag list 2023-07-25 15:18:05 +02:00
videomixer video: Don't overshoot QoS earliest time by a factor of 2 2024-09-13 19:52:52 +00:00
wavenc gst-plugins-good: re-indent with GNU indent 2.2.12 2023-03-17 03:18:54 +00:00
wavparse wavparse: reset when receiving STREAM_START 2024-05-16 11:35:02 +00:00
xingmux xingmux: drop use of GSlice 2023-01-24 15:25:06 +00:00
y4m meson: Call pkgconfig.generate in the loop where we declare plugins dependencies 2022-09-01 21:17:35 +00:00
meson.build xingmux: move from gst-plugins-ugly to gst-plugins-good 2022-10-25 12:40:20 +00:00