Jan Schmidt
6b94f22bd6
webrtcbin: Retrieve RR stats from internal sources
...
Check and generate remote reception statistics from the info stored on
internal sources, as they are stored there when running against newer rtpbin
since MR !7424
This fixes cases where statistics are incomplete when
peers send RR reports from a single remote ssrc, which GStreamer does
when bundling is enabled and other RTP stacks may too.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7425 >
2024-10-12 04:12:22 +00:00
Jan Schmidt
055b5af99e
webrtcbin: Always populate rtp-inbound stats fields
...
Even if there's no jitterbuffer yet for an incoming stream,
make sure to populate the mandatory statistics with 0 entries.
Fixes problems with the unit test failing sometimes for the
unit test introduced in MR !7338
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7387 >
2024-08-20 12:07:02 +00:00
Jan Schmidt
7da5d03b29
webrtcbin: Fixes for bundled statistics generation
...
When multiple streams are bundled on the same transport,
the statistics would end up incorrectly generated,
as each pad would regenerate stats for every ssrc on the
transport, overwriting previous iterations and assigning
bogus media kind and other values to the wrong ssrc.
Fix by making sure each pad only loops and generates
statistics for the one ssrc that pad is receiving / sending.
Add a unit test that the codec kind field in RTP statistics
are now generated correctly.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2555
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7338 >
2024-08-19 21:07:51 +10:00
Philippe Normand
d317379287
webrtcstats: Properly report IceCandidate type
...
strcmp returns a positive value if s1 is greater than s2, while we actually
needed to check equality here.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4952 >
2023-07-03 03:51:53 +00:00
Martin Nordholts
85e3f31740
webrtc: Track stats for data channels opened and closed
...
Track data channel stats for `dataChannelsOpened` and
`dataChannelsClosed` in `RTCPeerConnectionStats` as specified by
https://www.w3.org/TR/webrtc-stats/#dictionary-rtcpeerconnectionstats-members
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4638 >
2023-05-18 04:31:16 +00:00
Jan Schmidt
621604aa3e
webrtc: Calculate the jitter for remote-inbound-rtp stats
...
Populate the clock-rate in the internal stats structure, so
it can be used by the _get_stats_from_remote_rtp_source_stats()
method to calculate remote receivers' jitter.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3900 >
2023-02-07 04:58:04 +11:00
Jan Schmidt
615a019457
webrtcbin: Report full codec-stats for source pads
...
Use the current caps for webrtcbin srcpads, as received_caps
are only stored for sink pads based on incoming caps events.
Makes it so that webrtcbin stats reports contain fuller
codec information.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3900 >
2023-02-07 04:49:34 +11:00
Philippe Normand
72884f141c
webrtcbin: Support for setting kind attribute on RTCRtpStreamStats
...
The attribute maps the `kind` property of the associated transceiver.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3630 >
2022-12-22 21:35:51 +00:00
Edward Hervey
a100f36b69
webrtcbin: Don't duplicate enum string values
...
Some were leaked when debugging was enabled. Instead just directly use the
static strings as-is.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3347 >
2022-11-07 11:21:00 +00:00
yatinmaan
2c1e61ea16
webrtc: Split WebRTCICE into base classes and implementation.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2398 >
2022-07-26 13:51:11 +00:00
Philippe Normand
c19319c777
webrtc: Refactor ICECandidateStats freeing logic to a dedicated function
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1998 >
2022-05-26 10:54:59 +00:00
Sherrill Lin
3e7fb83393
webrtcstats: Improve selected candidate pair stats by adding ICE candidate info
...
The implementation follows w3.org specs:
* https://www.w3.org/TR/webrtc-stats/#icecandidate-dict *
* https://www.w3.org/TR/webrtc-stats/#candidatepair-dict *
Corresponding unit tests are also added.
Rebased and updated from
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1462
Fixes #1207
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1998 >
2022-05-26 10:54:59 +00:00
Sangchul Lee
a801d6dd63
webrtcstats: Unify 'packets-lost' data type to int64
...
Previously, 'packets-lost' member of RTCReceivedRtpStreamStats had
a value of G_TYPE_INT from rtpsource or a value of G_TYPE_UINT64
from rtpjitterbuffer.
Because of the negative value of estimated amount of packets lost
in rtpsource as well as the description in
https://www.w3.org/TR/webrtc-stats/#dom-rtcreceivedrtpstreamstats
it is fixed to set this value with G_TYPE_INT64.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2049 >
2022-03-31 05:37:39 +00:00
Matthew Waters
041eee6c2e
webrtc: produce stats for all relevant streams
...
Instead of only using the last ssrc that was pushed into a sink pad.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1664 >
2022-03-29 23:55:41 +00:00
Matthew Waters
2377f8b3f2
webrtcbin: initial support for sending and receiving simulcast streams
...
Input (sink pads) is the already-ssrc-muxed stream with the relevant rtp
sdes header extensions already applied:
- mid
- stream-id
- repaired-stream-id
Output (src pads) have the pads separated into individual ssrc's as
that's what rtpbin gives us.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1664 >
2022-03-29 23:55:40 +00:00
Philippe Normand
43856a0735
webrtcstats: Fix null pointer dereference
...
If there is no jitterbuffer stats we should not attempt to store them in the
global stats structure.
Also add a g_return_if_fail in _gst_structure_take_structure() about this
because it is a programmer error to pass an invalid pointer address there.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1479 >
2021-12-29 15:55:57 +00:00
Olivier Crête
818a185b5d
webrtcstats: Fall back to last packet ssrc if caps dont provide it
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1448 >
2021-12-23 23:48:17 -05:00
Olivier Crête
4e32d6bf3e
webrtcstats: Use our own caps instead of the sticky event
...
The sticky event seems to get cleared sometimes.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1448 >
2021-12-23 23:48:17 -05:00
Olivier Crête
fc7e7f5ccc
webrtc stats: Remove duplicate structure get
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1448 >
2021-12-23 23:48:17 -05:00
Olivier Crête
f35435f1f7
webrtc stats: Add more details about codecs into the stats
...
This makes the output a little closer to what the upstream stats are.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1448 >
2021-12-23 23:48:17 -05:00
Thibault Saunier
019971a3c7
Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir
2021-09-24 16:14:36 -03:00