Commit Graph
2467 Commits
Author SHA1 Message Date
Raja SubramanianandGitHub b4cf055c1c Resolve newer participant using higher precision join time. (#3360)
* Resolve newer participant using higher precision join time.

Also, keep it consistent based on participant SID if everything else is
the same.

* switch to compare semantics

* fix
2025-01-22 15:24:34 +05:30
Raja SubramanianandGitHub 416dded86f Clone pending tracks to prevent concurrent update. (#3359) 2025-01-22 13:24:26 +05:30
Raja SubramanianandGitHub 0c28e432a3 Log RTT as seen by congestion controller (#3354) 2025-01-22 00:08:11 +05:30
Raja SubramanianandGitHub 7a7e312424 Log probes. (#3352) 2025-01-21 20:51:03 +05:30
Raja SubramanianandGitHub bea907b3a0 Request key frame on subscription change. (#3349)
To assist the path where the requested layer is higher than current seen
maximum and there is no congestion.
2025-01-20 18:45:05 +05:30
Raja SubramanianandGitHub 35bb36e5fb Request key frame if subscribed is higher than max seen and not (#3348)
congested.
2025-01-20 16:40:52 +05:30
Raja SubramanianandGitHub fe94a18bc2 Do not seed if stream is already writable. (#3347)
* Do not seed if stream is already writable.

It is possible that in migration case, when the forwarder state is
fetched from migrating out node and used to seed downtrack, it has
already started due to the time it takes to get the state. Seeding in
that state will reset things and cause large sequence number gaps
potentially.

* do not take lock
2025-01-20 11:08:59 +05:30
Paul WellsandGitHub 759e5f79e0 allocate node for autocreated room in agent dispatch (#3344) 2025-01-17 00:54:30 -08:00
Rajiv GonzalezandGitHub 25fa83926f Reject ingress if Enabled flag is false (#3293) 2025-01-16 17:19:26 -08:00
Raja SubramanianandGitHub 7f6bd614a0 Remove FF check for TWCC. (#3340)
Sending 0 ID dependency descriptor was the issue.
2025-01-17 02:14:26 +05:30
Raja SubramanianandGitHub e2162f704a Do not send DD extension if ID is 0. (#3339)
* disable temporal layer scaling

* remove dummy start

* do not add 0 id

* remove tests

* clean up
2025-01-17 01:08:12 +05:30
Raja SubramanianandGitHub 043464828a Correct off-by-one lost count on a restart. (#3337)
* Correct off-by-one lost count on a restart.

* log sender snap shot ID

* metadata cache overflow count per snapshot
2025-01-16 23:41:41 +05:30
Raja SubramanianandGitHub b82f77eb87 Check for Firefox in rtc config. (#3336) 2025-01-15 20:45:37 +05:30
cnderrauberandGitHub e2735f3bd1 remove dd debug logs (#3334) 2025-01-15 13:27:21 +08:00
Raja SubramanianandGitHub ae8c8bc941 Turn off TWCC for Firefox (#3333)
* Debug FF TWCC

* - TURN off TWCC for Firefox. Seems to fail with VP9 send, i.e. there are
  no TWCC feedback packets when sending VP9.
- Relax thresholds for congestion as staging data is showing
  oscillations.
- Clean up some logging.

* debug log a few more signal messages

* revert config

* revert config

* clean up
2025-01-15 10:32:59 +05:30
Raja SubramanianandGitHub 8e90ae03f5 Log min sequence number changes. (#3331)
Seeing some negative loss count (seems to be when interacting with
Firefox, but don't have definitive proof it does not happen with
others). Debug logging a bit to understand what could cause it.

Also, consolidating some common code to process packet feedback.
2025-01-14 15:30:11 +05:30
lukasIOandGitHub fc009fc707 Add support for datastream trailer (#3329) 2025-01-13 10:42:49 +01:00
cnderrauberandGitHub 6a5d6a282b Log sdps when negotiate failed (#3325) 2025-01-13 13:38:32 +08:00
7c58fdf329 move unrolled mime type check for broader use (#3326)
* move unrolled mime type check for broader use

* Use in IsSvcCodec and make MimeType exported

* test

* tidy branches

* tidy

---------

Co-authored-by: Paul Wells <paulwe@gmail.com>
2025-01-13 10:24:03 +05:30
Raja SubramanianandGitHub 53d300ba71 Use nano time for easier (and hopefully) faster checks/calculations. (#3323) 2025-01-12 00:56:46 +05:30
Raja SubramanianandGitHub 28c39efa06 Exempt egress participant from track permissions. (#3322)
* Exempt egress participant from track permissions.

* test
2025-01-11 12:50:34 +05:30
Alan WillardandGitHub 5b61bbc446 remove code that deletes state from the store for rooms older than 24 hours (#3320) 2025-01-10 10:09:55 +05:30
cnderrauberandGitHub f08fc581e0 disable sctp zero checksum for unknown sdk (#3321) 2025-01-10 11:55:28 +08:00
cnderrauberandGitHub f846c7719b Disable SCTP zero checksum for old go client (#3319)
Old go-sdks with old pion/sctp version can't
process unknown parameters.
2025-01-09 13:22:23 +08:00
Raja SubramanianandGitHub 0d9bad489c Remove duplicate SSRC get. (#3318)
The duplicate was not checking for `nil`. The SSRC is already loaded
with proper nil check before.
2025-01-08 22:50:34 +05:30
Raja SubramanianandGitHub 3b0077f2fe Log connection quality changes. (#3311)
Also remove the connection quality drop prom as it is unused and also
adds state/complexity.
2025-01-07 10:58:31 +05:30
Raja SubramanianandGitHub 0dde347615 Use contiguous groups to determine queuing region. (#3308) 2025-01-07 04:00:39 +05:30
Raja SubramanianandGitHub bfbc4fa81f Remove alloc in packet forwarding path. (#3305)
* Remove alloc in packet forwarding path.

Unlikely logger creation was doing allocs. Replace it with a function
like in rtpstats_receiver.go so that allocations do not happen
unnecessarily.

* variable rename

* one more place
2025-01-06 11:48:27 +05:30
384e21abc0 vp8 temporal layer selection with dependency descriptor (#3302)
* vp8 with dd

* make temporal layer selection work with DD

* fix test

---------

Co-authored-by: boks1971 <raja.gobi@tutanota.com>
2025-01-03 21:26:03 +08:00
Raja SubramanianandGitHub 238333985b BWE reset for probing. (#3295) 2024-12-31 23:22:47 +05:30
David ZhaoandGitHub ac43e8a640 fix completed job status updates causing workers to reconnect (#3294) 2024-12-31 01:57:46 -06:00
David ZhaoandGitHub 6acb4bbd61 add room/participant to logger context for SIP APIs (#3290) 2024-12-26 00:23:21 -06:00
Artur MelanchykandGitHub 2eaf84ad66 Reduce memory allocation in WritePaddingRTP / WriteProbePackets (#3288)
* allocate memory once in WriteProbePackets

Signed-off-by: Artur Melanchyk <artur.melanchyk@gmail.com>

* allocate memory once in WritePaddingRTP

Signed-off-by: Artur Melanchyk <artur.melanchyk@gmail.com>

---------

Signed-off-by: Artur Melanchyk <artur.melanchyk@gmail.com>
2024-12-25 21:01:21 -06:00
cnderrauberandGitHub 3ba379ab4c Disable av1 for safari (#3284)
M3 chip/iphone15 pro has av1 enabled for safari but
its hardware decoder can't decode av1 svc encoding.
2024-12-23 10:49:17 +08:00
Raja SubramanianandGitHub 61dbbf6c56 Start stream allocator after creating peer connection. (#3283)
* Start stream allocator after creating peer connection.

RTTGetter relies of peer connection being created/started.
Starting stream allocator before creating peer connection could race.

* set bwe interceptor
2024-12-22 23:05:55 +05:30
Raja SubramanianandGitHub 6e9964e80b TWCC tweaks (#3282)
* SSBWE experimentation

* dqr hysteresis

* fixes

* fmt

* more relaxed DQR

* pps proportional to duration

* clean up

* clean up

* don't need gratuitous up allocation
2024-12-21 23:08:38 +05:30
cnderrauberandGitHub 8fa1127724 Disable data channel throttle by default (#3281)
* Disable data channel throttle by default

* data race

* err type
2024-12-21 12:08:54 +08:00
Raja SubramanianandGitHub 92ae45cf07 Keep more state for easier logging/debuggability (#3280) 2024-12-21 09:33:04 +05:30
Raja SubramanianandGitHub 8cf6cbb826 Structured logging of ParticipantInit (#3279)
* Structured logging of ParticipantInit

* use pointer
2024-12-20 11:12:50 +05:30
Raja SubramanianandGitHub c8b644934f Update deque and friends. (#3276) 2024-12-20 07:16:14 +05:30
Raja SubramanianandGitHub 36338bab5c Address another panic. (#3274)
* Address another panic.

If receiver is not resolved yet, prevent race of access dummy receiver.

* reset callback only if there is receiver

* missed return
2024-12-20 00:17:06 +05:30
Raja SubramanianandGitHub 3251156bd3 Address a data race reported by CI (#3273)
in this run https://github.com/livekit/livekit/actions/runs/12396846876/job/34605820002
2024-12-19 23:16:48 +05:30
Raja SubramanianandGitHub 1084866781 Update full subscriber config based on congestion control config. (#3272) 2024-12-19 18:43:37 +05:30
cnderrauberandGitHub 99364f39d0 Keep negotiated codec parameters in Downtrack.Bind (#3271)
the context's codec parameters will be set to the binded codec after Bind
2024-12-19 16:16:09 +08:00
Raja SubramanianandGitHub 02117a4d46 Panic fixes (#3270)
Also, do negotiated down track extensions after bind.
2024-12-19 11:52:43 +05:30
Raja SubramanianandGitHub 2088870d95 check of 0 RTX payload in probe and use padding if 0 (#3269) 2024-12-19 09:18:32 +05:30
Raja SubramanianandGitHub edb426bba4 Log payload RTX. (#3268)
Seeing some instances where RTX is not getting set up.
2024-12-19 02:03:26 +05:30
Raja SubramanianandGitHub 86628de6e9 Lower down trend threshold (revert change in previous PR) and fix typos. (#3267)
* fix typo

* lower CTR threshold
2024-12-19 00:03:56 +05:30
Raja SubramanianandGitHub b6e99e249b Better naming/logging for send side bwe (#3264)
* Better naming/logging for send side bwe

* Check BWE congestion state before doing optimal allocation.

It is possible that BWE declares congestion, but the estimated bandwidth
may still be enough to accommodate all tracks. So, stream allocator
would still not in DEFICIENT state. On a new track allocation, it will
get optimal allocation although BWE is in congested state.

Take BWE congestion state into consideration before doing any track
allocation.

* get congestion state from BWE rather than caching it in stream allocator

* get states from update

* log contributing groups only when they are small in number

* get oldest group always

* notify only when estimate is dropping

* require stronger CTR down trend

* maintain min/max group

* relax thresholds to declare congestion a bit
2024-12-18 21:38:13 +05:30
Raja SubramanianandGitHub 45b0b0312f Remove spammy log (#3263) 2024-12-18 13:34:20 +05:30