Commit Graph
753 Commits
Author SHA1 Message Date
Raja Subramanian 01bf96855d SVC with RID -> spatial layer mapping (#3754)
* SVC with RID -> spatial layer mapping

There are cases where an SVC track comes in with a RID.
As there is no RID announced in SDP, it maps to invalid layer.
Seems to happen with older browsers.

* test
2025-06-23 12:45:13 -07:00
David Colburn e467daa0d4 move egress roomID load to launcher (#3748)
* move egress roomID load to launcher

* regenerate
2025-06-20 16:22:19 -04:00
Raja Subramanian 9d569e2fef Take ClientInfo from request. (#3738)
This will allow WHIP client to pass in client info which can provide
more information about WHIP clients for telemetry.
2025-06-16 21:01:15 -07:00
Raja Subramanian a9e2911645 Add Id to SDP signalling messages. (#3722)
* Add Id to SDP signalling messages.

Allows matching up offer/answer.
For now, the subscriber answer just logs if there is a mismatch.

* correct variable name

* test

* fixing rid

* revert

* clean up
2025-06-12 14:39:25 -07:00
Raja Subramanian e98fb94fd2 Create client config manager in room manager constructor. (#3718)
* Create client config manager in room manager constructor.

Remove it from wire to be consistent with cloud which does hot reload.

* disable advanced codecs on iOS when using JS SDK
2025-06-10 21:06:49 -07:00
cnderrauber fdf9b85290 e2e reliability for data channel (#3716)
* e2e reliability for data channel

* solve comments
2025-06-11 11:14:30 +08:00
Raja Subramanian 1d9a43667a Do not require create permission for WHIP participant. (#3715) 2025-06-09 22:19:00 -07:00
Paul Wells 630aa7d970 implement observability for room metrics (#3712)
* implement observability for room metrics

* deps

* test

* test

* Raja feedback

* cleanup
2025-06-09 09:32:58 -07:00
Paul Wells e7f0294e3f remove unused ws signal read loop (#3709)
* remove unused ws signal read loop

fixes #3708

* tidy
2025-06-08 20:07:55 -07:00
David Zhao b0ab95baf7 warn about credentials when used in tokens (#3705)
* warn about credentials when used in tokens

* go mod update
2025-06-06 22:46:23 -07:00
Raja Subramanian a72ce30f50 Small changes to add/use helper functions for length checks. (#3704) 2025-06-06 18:00:10 -07:00
Denys Smirnov 425f6bb3a9 Allow passing extra attributes to RTC endpoint. (#3693) 2025-06-06 14:40:06 +03:00
Denys Smirnov 0e17916f15 Do not use Redis pipeline for SIP delete. Fixes Redis clustering support. (#3694) 2025-06-03 18:25:50 +03:00
Raja Subramanian 1b760393bc WHIP support. (#3692)
* WHIP support.

WHIP like signalling with added support for data channels.

* clean up

* Paul feedback

* deps
2025-06-03 08:23:37 -07:00
Paul Wells e4f7d81bdd add client ip to agent worker registration (#3675) 2025-05-20 07:58:28 -07:00
Paul Wells 13b55a80ad move agent token (#3669) 2025-05-15 10:30:14 -07:00
Paul Wells c9385edd1e handle agent worker jwt (#3668)
* handle agent worker jwt

* test

* tidy

* tidy

* deps
2025-05-15 08:23:10 -07:00
Raja Subramanian 3b359d8b74 Use logger resolver reset to reset contexts. (#3665)
* Use logger resolver reset to reset contexts.

Also, avoid multi-resolve.

* resolver logger values once

* simplify
2025-05-14 21:12:12 +05:30
Paul Wells aee34ffefa log request for agent dispatch api (#3650) 2025-05-08 08:43:43 -07:00
cnderrauberandCopilot 793b383a52 Add Moving participant to another room (#3648)
* Add Moving participant to another room

it is implemented in cloud only since the destination
room can exist in different node with the source room

* Update pkg/service/errors.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* rename

* test panic

* fake LocalParticipantHelper

* revert delete line

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-08 12:58:24 +08:00
Raja Subramanian 2fff36cb35 Stub MoveParticipant so that cloud can include the latest protocol. (#3646) 2025-05-07 22:36:39 +05:30
Raja Subramanian b760918a0d Use logger from request context. (#3623)
That will have projectID and can potentially be used for project level
logging if we are able to pass around the project logger more.
2025-04-24 11:34:16 +05:30
Andrea Lovicu 4955ebe423 Forward transfer headers to internal request (#3615)
This patch ensures that SIP headers provided in TransferSIPParticipantRequest requested by an agent are correctly forwarded to the internal SIP transfer request.

Previously, req.Headers was accepted but never passed along, causing headers from the initiating agent to be dropped.

This change adds a single line to include req.Headers in the internal request.
2025-04-22 11:43:23 -07:00
Benjamin Pracht e5cbb22777 Allow specifying extra webhooks with egress requests (#3597) 2025-04-09 16:20:21 -07:00
cnderrauber 5c2d96b9d3 Check DestinationRoom of VideoGrant for participant forwarding (#3599) 2025-04-09 15:13:29 +08:00
Denys Smirnov ec2dff96a3 Fix SIP updates when replacing slices. (#3592) 2025-04-08 17:39:16 +03:00
Raja Subramanian d08487bf83 Unlabeled (pass through) data channels. (#3567)
* Unlabeled (pass through) data channels.

Support data channels than can pass through raw data without any LK
protocol marshaling/unmarshaling.

* statischeck

* test

* error -> warn

* reset data message callback
2025-04-01 21:59:31 +05:30
Anunay Maheshwari 52ce18d56e fix: revert recent changes to determine simulcast from sdp (#3565)
* Revert "Audio uses signal SignalCid and SdpCid. (#3564)"

This reverts commit cdfbb106d1.

* Revert "Keep simulcast information tied to receiver. (#3563)"

This reverts commit ed5e2f16b2.

* Revert "chore(logs): log VLS type for VP9/AV1 (#3561)"

This reverts commit ad010cfc43.

* Revert "fix(video): determine svc/simulcast from SDP for advanced codecs (#3549)"

This reverts commit 15f565510c.

* chore(deps): update protocol
2025-03-31 23:15:44 +05:30
Raja Subramanian 8cc17f8f8b Rework node stats a bit. (#3555)
* Rework node stats a bit.

Related protocol PR - https://github.com/livekit/protocol/pull/1023

- Make a config for node stats measurements. Wanted to put the config in
  `routing` package, but a circular dependency forced me to put in
   config.go
- Make rate calculations explicit, i. e. requested via config.
  Previously, it had some odd checks to decide when to calculate rate
  and it would have been calculating over different windows.
- Report signal/data channel bytes every 5 seconds to stats collection
  module. Previously, it was doing it every 30 seconds and that meant
  some windows could have had a large spike
  NOTE: Still need to think about this for load calculations as a large
  number of participants leaving could flush in a small window and that
  could report a large spike in bytes/packets. Maybe need to ignore
  signal bytes for load calculation?

* deps

* use default node stats config if given config is nil

* split out node stats into a struct for re-use

* update config
2025-03-27 12:42:19 +05:30
Anunay Maheshwari 15f565510c fix(video): determine svc/simulcast from SDP for advanced codecs (#3549)
* fix(video): determine svc/simulcast from SDP for advanced codecs

* fix(explicit-svc): cleanup

* fix(explicit-svc): remove from list on close/remove

* fix(explicit-svc): reorder VLS selection, cleanup

* fix(explicit-svc): todo comments for temporal layer selector

* fix(explicit-svc): remove from simulcastTrackIds even if client does not support unpublish
2025-03-26 16:22:32 +05:30
cnderrauber 2b6a46f402 Handle prefer_regression for backup codec (#3554) 2025-03-26 16:27:50 +08:00
Raja Subramanian 26822b6b49 ParseUsername utility for TURN user name. (#3547)
* ParseUsername utility for TURN user name.

NOTE: There is no state, so no need for struct method, but just doing it
similar to CreateUsername which also does not have state, but uses
struct method.

* missed base62 decode
2025-03-22 13:16:13 +05:30
Raja Subramanian 55909ed7c4 log the initial join response (#3546) 2025-03-22 11:06:05 +05:30
Soungmin Son (Eddy)andPaul Wells 97fcb82a77 Fix: Return NotFoundErr instead of Unavailable when the participant does not exist in UpdateParticipant. (#3543)
* Check if Participant exists when update metadata

* Change Test cases

* type smuggle oss participant check into roomstore

* tidy

---------

Co-authored-by: Paul Wells <paulwe@gmail.com>
2025-03-20 23:56:34 -07:00
Denys Smirnov 75d0e18e4a Implement SIP update API. (#3141) 2025-03-20 18:37:33 +02:00
Denys Smirnov 7f4c4597f1 Stubs for SIP update API. (#3533) 2025-03-19 14:58:40 +02:00
Paul Wells ac9e62ef05 add server agent load threshold config (#3520)
* remove agent worker load threshold

* cleanup
2025-03-11 21:07:01 -07:00
Raja Subramanian cd5d32f005 Add pID and connID to log context to make it easier to search using pID. (#3518) 2025-03-11 22:33:08 +05:30
shishirng 2d9aa6dde4 Update api call info method (#3515)
* register RequestRouted handler for updating method

Signed-off-by: shishir gowda <shishir@livekit.io>

* pass room to telemetry in DeleteRoom api to extract roomID

Signed-off-by: shishir gowda <shishir@livekit.io>

---------

Signed-off-by: shishir gowda <shishir@livekit.io>
2025-03-11 05:56:30 -04:00
Raja Subramanian b3779a9086 WebHookConfig (#3517)
* default webhook config

* WebHookConfig

* fix test

* protocol with yaml tags
2025-03-11 13:49:29 +05:30
cnderrauber 6121b9af5e Check ForwardParticipant room name (#3514) 2025-03-11 10:07:05 +08:00
cnderrauber 139d1b139c Add ForwardParticipant method to room service (#3507)
It returns unimplemented error now.
2025-03-10 14:08:38 +08:00
Denys Smirnov 47896f50e3 Update protocol and IO service. (#3499) 2025-03-08 01:19:42 +05:30
Benjamin Pracht c3e06f0523 Do not attempt to create objects for URL ingresses as the ingress service will do so (#3491) 2025-03-05 15:15:02 -08:00
Paul Wells 43bd251575 simplify vls base access (#3465) 2025-02-26 09:34:59 +05:30
Denys Smirnov 60a09cb4be Implement SIP iterators. (#3332) 2025-02-20 13:13:21 +02:00
David Zhao 1c69a9eeed Dependent participants should not trigger count towards FirstJoinedAt (#3448)
* Dependent participants should not trigger count towards FirstJoinedAt

According to the API, empty timeout should be honored as long as no
independent participant joins the room. If we counted Agents and Egress
as part of FirstJoinedAt, it would have the side effect of using
departureTimeout instead of emptyTimeout for idle calculations.

* use Room logger
2025-02-20 00:57:40 -06:00
Paul Wells f49103a003 add participant job type (#3443)
* add participant job type

* cleanup

* deps
2025-02-18 00:40:56 -08:00
Raja Subramanian 56a61b6ce2 Safe access of proto fields. (#3436) 2025-02-15 05:51:53 +05:30
Raja Subramanian dc0ff45fd7 Fix panic due to nil Egress (#3431) 2025-02-14 10:17:32 +05:30