Commit Graph

2641 Commits

Author SHA1 Message Date
Raja Subramanian
fa490dd510 Log rtp stats more consistently. (#2816)
* Log rtp stats more consistently.

Thank you Paul for the logging tip.
Also update deps.

* remove duplicate logging field

* nil check
2024-06-25 14:55:42 +05:30
David Zhao
ddee5d012f version bump 1.7.0 (#2814) v1.7.0 2024-06-25 01:00:59 -07:00
Raja Subramanian
6bb48dd6f1 Do not log duplicate on large negative on send side (#2815) 2024-06-24 12:51:35 +05:30
Denys Smirnov
4388618e9a Update protocol. Use SIP grants. (#2808) v1.6.3 2024-06-23 21:54:28 +03:00
Raja Subramanian
cdb5f3ed68 Log more around unexpected cases (#2813)
- too many padding packets
- also fix cse of snapshot not getting any packets
2024-06-23 00:33:56 +05:30
Raja Subramanian
091eab556d Update mediatransportutil (#2812) 2024-06-22 11:32:28 +05:30
davidliu
1cc47da1a8 chore: Update minimum Go version in README (#2802) 2024-06-20 18:38:28 -07:00
David Zhao
7a774cc82a Support for participant attributes (#2806)
* Support for participant attributes

* move metadata setters to LocalParticipant

* address feedback

* forward error

* update go mod

* update attributes first
2024-06-19 23:14:19 -07:00
Raja Subramanian
d4e50b633f Do not log warns on duplicate. (#2807)
With RTX, some clients use very old packets for probing. Check for
duplicate before logging warning about old packet/negative sequence
number jump.

Also, double the history so that duplicate tracking is better. Adds
about 1/2 KB per RTP stream.
2024-06-20 10:52:12 +05:30
Lukas Herman
8a229fda9d add participant session duration metric (#2801) 2024-06-17 17:52:08 -04:00
Denys Smirnov
74c7b93170 Support new SIP Trunk API. Improve Redis tests. (#2799) 2024-06-17 21:49:51 +03:00
Raja Subramanian
ef838e4fa2 Indicate if track is expectd to be resumed in onClose callback. (#2800)
That is the main change. Changed variable name to `isExpectedToResume`
everywhere to be consistent.

Planning to use the callback value in relays to determine if the down
track should be closed or switched to a different up track.
2024-06-17 23:51:00 +05:30
renovate[bot]
aa72466ac8 chore(deps): update docker/build-push-action action to v6 (#2798)
Generated by renovateBot

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-17 10:07:40 -07:00
renovate[bot]
6a32836459 fix(deps): update go deps (#2788)
Generated by renovateBot

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-17 10:07:22 -07:00
Raja Subramanian
5d969ba35b remove some debug (#2797) 2024-06-17 12:57:04 +05:30
Paul Wells
2bc101d323 use request context for LaunchJob api request (#2796)
* use request context for LaunchJob api request

* one more
2024-06-16 21:16:29 -07:00
David Zhao
88a340202a Update release workflow (#2795)
* Update release workflow

* rename
v1.6.2
2024-06-15 19:55:16 -07:00
David Zhao
ecfc42c3f9 Version 1.6.2 (#2794) 2024-06-15 18:59:03 -07:00
Raja Subramanian
f92e7e3db8 use pending lock, no need for participant lock (#2793) 2024-06-15 20:44:50 +05:30
Paul Wells
58e365847b add test helper for config yaml tags (#2791)
* add test helper for config yaml tags

* deps

* cleanup

* cleanup
2024-06-13 23:22:39 -07:00
David Zhao
ecf1175832 Generate and send uuid with analytics (#2790)
* Generate and send uuid with analytics

* go mod
2024-06-13 23:00:50 -07:00
Raja Subramanian
ea60368100 Do not error out on invalid packet. (#2789)
Remove the return when encountering invalid packet.
Also, log more sparesely.
Proper error returns from util so that we can selectively drop packets
based on error type, for example SSRC mismatches are okay type of thing.
2024-06-14 11:10:57 +05:30
cnderrauber
6e4b0c20d1 update dep for fixing bucket grow (#2785) 2024-06-13 10:13:18 +08:00
Théo Monnom
5def48bad9 fix agent jobs not launching when using the CreateRoom API (#2784) 2024-06-13 00:00:02 +02:00
renovate[bot]
8064e1673c fix(deps): update go deps (#2747)
Generated by renovateBot

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-11 13:12:10 -07:00
David Colburn
29614cd4a1 clean up egress launcher (#2779) 2024-06-10 16:11:11 -07:00
Raja Subramanian
129ba62d61 Validate RTP packets. (#2778)
* Validate RTP packets.

Check version, payload type (if available) and SSRC (if available)
and drop bad packets. And let repair mechanisms take effect for those
packets.

* address data race reported by test

* fix an unlock and test packets
2024-06-10 15:43:59 +05:30
Raja Subramanian
a31f59b689 Log first time adjustment total. (#2776)
* Log first time adjustment total.

Seeing cases where the first time is 400ms+ before start time.
Possible it is getting that much adjustment, but would be good to see
how much total adjustment happens.

* log propagation delay
2024-06-09 23:07:01 +05:30
Raja Subramanian
38d213ed10 Do not compare payload type before bind (#2775) 2024-06-09 01:03:38 +05:30
Raja Subramanian
b58db82254 Log invalid RTP packet (#2774) 2024-06-08 10:36:05 +05:30
Raja Subramanian
cee3fdb25e Better lock for sender report TS offset. (#2771)
* Better lock for sender report TS offset.

It is possible that a resume has happened and new time stamp offset
calculated. But, a sender report from publisher comes with a time stamp
prior to the time stamp which was used for offset calculation. Using
that sender report in the forwarding path causes jumps.

Example
- Track forwarding, let us tsOffset = `a`
- Unmute/layer switch - one of those events happens, a new tsOffset will
  be calculated, let us say that offset is `b` and it is based on
  incoming time stmap of `c`.
- A sender report from publisher could arrive with timestamp = `d`.
  o If `d` >= `c`,  the offset `b` is correct and can be applied.
  o But, it is possible that `d` < `c`, in that case, offset `a` should
    be used and not `b`.

To address this, keep track of incoming extended timestamp at switch
point and accept incoming sender reports which have a timestamp >=
switch point timestamp.

* clean up

* log more details on invalid layer
2024-06-07 23:56:10 +05:30
Raja Subramanian
73852d0a13 Reduce large sequence number jump threshold for logging. (#2770)
Seeing some unexplained large jumps on remotes across relay. Unclear if
there was a jump on origin side at some point. Reducing threshold for
large jump so that we can catch unexpected jumps more.
2024-06-07 12:36:02 +05:30
Raja Subramanian
c265ab7104 Log invalid spatial layer (#2769) 2024-06-07 08:21:06 +05:30
Raja Subramanian
7d035deef8 Clean up logging fields a bit (#2767) 2024-06-06 23:03:21 +05:30
lukasIO
8887a43a86 update readme (#2768) 2024-06-06 08:57:10 -07:00
Paul Wells
d95b59de58 update protocol (#2764)
* update protocol

* deps
2024-06-05 23:50:54 -07:00
cnderrauber
908baeb942 initialize bucket size by publish bitrates (#2763) 2024-06-06 14:31:20 +08:00
Paul Wells
f1886ece42 update protocol (#2760)
* update protocol

* deps
2024-06-05 19:46:34 -07:00
Raja Subramanian
d3f9e8b8e5 Do not add tracker for invalid layers. (#2759)
Previously, the bit rate interval config was checked first. That would
have returned `!ok` for invalid layers. A recent change to prevent
duplicate tracker addition re-arranged the code and the tracker array
was accessed out-of-bounds.

Unclear why an invalid layer is passed in. Need to investigate that.
2024-06-05 23:06:22 +05:30
Raja Subramanian
cfd3777f47 Use a safety net OnClose to remove track from peer connection. (#2758) 2024-06-05 21:54:22 +05:30
Raja Subramanian
fdde44d926 Attach time stamp offset to publisher sender report. (#2757)
There are cases where the RTP time stamp does not increment acros
mute/unmute. Seems to happen fairly consistently with React Native
clients.

Something like the following happens
- Track is progressing
- Mute at `t = x`, assume RTP time stamp at the point is `y` and RTP clock
  rate is `z`.
- Through mute, more RTCP sender reports come in from publisher and the
  RTP time stamp in those reports are progressing at expected rate of
  `z` RTP clock ticks per second.
- Forwarding path uses those sender reports from publisher to build the
  sender report for subscribers.
- Unmute happens at `t = x + a` seconds.
- Ideally packets coming in after that, should have a time stamp of `y +
  (a * z)`, but they tend to have something a little bit more than `y`.
- RTCP sender reports also have a time stamp that goes back. SFU ignores
  these.
- Mean while the forwarding path has adjusted to the new RTP time stamp
  base and it has calculated a TS offset (from publisher -> subscriber).
  Effectively, that offset comes out close to `(a * z)`, i. e. jump
  corresponding to the mute interval.
- When it is time to send a RTCP sender report to subscriber, the old
  sender report from publisher is used (as intervening ones from
  publisher were rejected because time stamp is moving backwards).
  The problem is that the old report is used with new offset.
  So, it looks like time stamp jumped ahead by `a` seconds.

Address it by storing time stamp offset at the time of receiving the
publisher side sender report. And use that while sending subscriber side
sender report. There are very edge cases where this can
get mismatched, but should be rare. Hopefully, this should prevent
unnecessary jumps in time stamp in RTCP sender report to subscribers.
2024-06-05 13:02:33 +05:30
renovate[bot]
857c3ab63e chore(deps): update goreleaser/goreleaser-action action to v6 (#2756)
Generated by renovateBot

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-04 21:59:17 -07:00
Raja Subramanian
49e1848d1d Move resync to TrackSender interface so that it can be called directly from up track (#2755) 2024-06-04 22:38:39 +05:30
Raja Subramanian
03bb468472 Log range map for debugging. (#2754)
* Log range map for debugging.

* log details on errors

* log details
2024-06-04 08:00:26 +05:30
Raja Subramanian
1e52b09e24 Reset tracker on expected layer increase. (#2753)
Was hitting the edge case mentioned in the (now deleted in this PR)
comments. It is fine to reset and let it declare available again.
Available layer handler will ignore repeats.
2024-06-03 13:58:58 +05:30
cnderrauber
b90ade81da add log for unexpected jitter (#2752) 2024-06-03 15:12:53 +08:00
Raja Subramanian
b7ea733492 Fix DD tracker addition. (#2751)
DD uses a wrapped tracker. Check only stream tracker manager field for
existing tracker.
2024-06-03 12:14:42 +05:30
Raja Subramanian
e483cee662 Prevent tracker override. (#2750)
When relaying buffers are stopped and restarted. On a restart,
the buffer adds a tracker. But, the tracker is not destroyed till the
end. So, the old tracker and new tracker for the same layer stomp on
each other and declare layer unavailable (the old tracker is not getting
any packets).

Fix by not creating a new tracker if one exists already.
2024-06-03 11:55:59 +05:30
David Zhao
b99650aaf6 Send NodeID with analytics events (#2749) 2024-06-02 09:09:55 -07:00
cnderrauber
526d3a017e ignore abnormal forward delay (#2748) 2024-05-31 10:23:37 +08:00