Commit Graph
1571 Commits
Author SHA1 Message Date
cnderrauberandGitHub e754a86068 return error when moving egree/agent participant (#3741) 2025-06-18 15:10:08 +08:00
Raja SubramanianandGitHub 5549ab5562 Revert clearing RIDs. (#3732) 2025-06-13 23:34:01 -07:00
Raja SubramanianandGitHub ae9673130f Clear rids if not present in SDP. (#3731) 2025-06-13 21:02:01 -07:00
cnderrauberandGitHub 9ce737db31 Add log for dropping out of order reliable message (#3728) 2025-06-13 22:08:56 +08:00
Raja SubramanianandGitHub 670f927ff6 Set and use rid/spatial layer in TrackInfo. (#3724)
* Set and use rid/spatial layer in TrackInfo.

* test
2025-06-12 23:22:11 -07:00
Raja SubramanianandGitHub 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 SubramanianandGitHub 4ec828ce00 Fix bug with SDP rid, clear only overflow. (#3723) 2025-06-12 14:04:13 -07:00
Raja SubramanianandGitHub 8f6c3a9b4e Clear rids from default for layers not published. (#3721) 2025-06-12 08:59:16 -07:00
Raja SubramanianandGitHub ce07740e11 Add simulcast support for WHIP. (#3719)
* Add simulcast support for WHIP.

- General change to have rids be anything.
- One issue is rid ordering not matching quality ordering, will need
  some dynamic layer quality determination for that.

* clean up

* deps

* test
2025-06-11 19:40:38 -07:00
cnderrauberandGitHub fdf9b85290 e2e reliability for data channel (#3716)
* e2e reliability for data channel

* solve comments
2025-06-11 11:14:30 +08:00
Paul WellsandGitHub 35dda8ea43 swap pub/sub track metrics (#3717) 2025-06-10 11:27:34 -07:00
Paul WellsandGitHub 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
Raja SubramanianandGitHub 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
cnderrauberandGitHub 83b189b0c5 Add ServerInfo to ReconnectResponse (#3671) 2025-05-19 10:32:39 +08:00
Raja SubramanianandGitHub 5f87a35b7e Prevent operating on swapped out map. (#3670)
* Prevent operating on swapped out map.

* test
2025-05-17 17:02:41 +05:30
Raja SubramanianandGitHub 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
cnderrauberandGitHub dbb70e0f06 Fix dynacast quality for moving out tracks (#3664)
* Make sure moving out track has been unsubscribed

Remove start time checking in subscription manager
as We always use new track ID for republished track at #3020
so there is no race condition now.

Also RemoveSubscriber for moving out tracks for safety,
the subscription manager will handle the removed event but
RemoveSubscriber again will not be bad.

* Clear subscriber node max quality for moving out tracks
2025-05-14 12:54:33 +08:00
cnderrauberandGitHub 0a5f3c2ae6 resolve new room name logger earlier when moving participant (#3662) 2025-05-13 20:29:07 +08:00
Raja SubramanianandGitHub 2df0551762 Revert unbound transceiver stop. (#3661)
This is causing duplicate a=msid in testing. Will chase condition that
caused the addition of code to stop transceiver later.
2025-05-13 16:33:09 +05:30
Raja SubramanianandGitHub 5172af1526 ~Send initial participant update only after a participant becomes active.~ - General clean up (#3655)
* Send initial participant update only after a participant becomes active.

There are cases where apps send data to remote participant as soon as
client emits `ParticipantConnected`. But, that time point would not have
a fully established client (i. e. the media connection + data channel
establishment is still in progress).

This PR changes the initial participant update to be sent from server
side only when a participant becomes `ACTIVE`, i.e fully connected
(media channel established and data channels open).

It is supported for clients using protocol version > 15.

@cnderrauber bumping up the protocol version in this PR. Move support is
also conditioned on protocol version > 15, but that PR did not ump
protocol version. Please let me know if there are issues bumping
protocol version.

* check for joining states in broadcast

* have to check on other participant

* test

* make helper for sending participant updates

* test

* make utility of pushAndDeque

* test

* consolidate getting other participants

* remove extra cast

* debug

* debug

* typo

* stop transceiver that is not bound

* logs

* log

* check for ever bound

* clean up

* clean up
2025-05-13 14:46:35 +05:30
Raja SubramanianandGitHub 7f8e632330 Send self participant update immediately. (#3656)
* Send self participant update immediately.

Match with cloud. Send immediately for non-hidden participants also

* comment
2025-05-11 03:08:30 +05:30
Raja SubramanianandGitHub 116308780e Use unordered for lossy data channel. (#3653) 2025-05-09 23:09:27 +05:30
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 SubramanianandGitHub d4ab1142cb Redact address (#3643) 2025-05-06 09:51:30 +05:30
Raja SubramanianandGitHub 2f002388b6 Use participant close reason in remove. (#3639) 2025-05-05 11:50:53 +05:30
Raja SubramanianandGitHub 58822c26ab Include clientInfo in connectivity logs. (#3638)
Makes it easier for log based filtering.
2025-05-05 10:44:17 +05:30
Raja SubramanianandGitHub 6d6393a6e0 Take AudioFeatures from AddTrack. (#3635)
* Take AudioFeatures from AddTrack.

* use slices.Compact

* feedback

* remove early bail
2025-05-01 13:53:09 +05:30
Raja SubramanianandGitHub 9f5bc9b9b5 Avoid synthesising duplicate feature. (#3632) 2025-04-30 17:52:26 +05:30
cnderrauberandGitHub 847239c3f2 Disable vp9 for safari 18.4 (#3631)
* Disable vp9 for safari 18.4

safari 18.4's svc encoding is broken

* more flex on test timeout
2025-04-29 13:17:39 +08:00
Raja SubramanianandGitHub f69ab68045 Populate the sender identity when translating to user packet. (#3628) 2025-04-25 23:44:43 +05:30
Raja SubramanianandGitHub e14905581c Forward data between WHIP client and non-WHIP client (#3627)
* Forward data between WHIP client and non-WHIP client

* fix test
2025-04-25 23:20:08 +05:30
Raja SubramanianandGitHub 34a2e2c107 Check for multiple layers for managed track. (#3622)
The previous check was checking only for simulcast and would have made a
screen share track published with multiple layers using SVC as
unmanaged.
2025-04-24 10:02:38 +05:30
Raja SubramanianandGitHub d9ee921445 Set up RTX for WHIP publish (#3619)
* Set up RTX for WHIP publish

* bail early on error
2025-04-22 23:12:41 +05:30
Raja SubramanianandGitHub d8cf54399f Determine TURN connection type and no fallback for TURN/TLS. (#3612) 2025-04-22 11:42:05 +05:30
Raja SubramanianandGitHub d0d212fd13 Fix WHIP ICE restart. (#3616)
* Fix WHIP ICE restart.

Need to wait for candidates to be gathered.

Also, resettig ICE connection details on ice restart.

* deps
2025-04-18 01:31:56 +05:30
Raja SubramanianandGitHub 2130980d17 Add basic video support to WHIP. (#3602)
Tested with eyevinn client.

There are a few issues to figure out still
1. Simulcast - how?
2. For simulcast, how to know width, height so that adaptive stream can
   work.
3. The layer added is dummy. It works, but connection quality scoring
   would be incorrect (will always say excellent) without bitrate.

Will need some dynamic update of `TrackInfo` based on actual stream for
all of this to fit well into our system, but the simple video support
works for now.
2025-04-11 13:07:47 +05:30
Benjamin PrachtandGitHub e5cbb22777 Allow specifying extra webhooks with egress requests (#3597) 2025-04-09 16:20:21 -07:00
Raja SubramanianandGitHub 7e16106a0e Add OnSubscirberReady callback on LocalParticipant. (#3600)
Was setting the state to ACTIVE prematurely to enable the subscription
inter-lock in one shot signalling mode. But, that is incorrectly
changing state.

Use a callback to indicate subscriber ready and let the participant
ACTIVE happen when the connection actually establishes.
2025-04-09 15:02:27 +05:30
Raja SubramanianandGitHub 2e236a193e Revert participant state ACTIVE change. (#3598)
Had made the change to align `participant active` to after the ICE
connection is done and that log could list all candidates.

But, with one shot signalling, the state change has to be early to wait
on (auto) subscriptions of track of other participant. So, state has to
be changed early.
2025-04-09 12:12:56 +05:30
Raja SubramanianandGitHub 35ac5f561a Add support for WHIP ICE Trickle/Restart. (#3596)
* Add support for WHIP ICE Trickle/Restart.

Tested a bit using the WHIP client at https://github.com/Eyevinn/whip,
but needs a lot more testing. ICERestart is not tested yet.

* comment

* clean up
2025-04-09 00:20:58 +05:30
Raja SubramanianandGitHub e24fe77bc7 map PEER_CONNECTION_DISCONNECTED -> CONNECTION_TIMEOUT (#3591) 2025-04-08 00:00:10 +05:30
Raja SubramanianandGitHub 68357ba60a List audio codecs after video codecs. (#3589) 2025-04-07 21:38:56 +05:30
Paul WellsandGitHub ee08aede5b skip out of order participant state updates (#3583)
* skip out of order participant state updates

* avoid nil last active pointer

* cleanup

* protect state change callbacks

* gen

* test
2025-04-06 06:44:50 -07:00
Raja SubramanianandGitHub 15a8d9a266 Break track published fuse when there are no tracks (#3581)
* Break track published fuse when there are no tracks

* use a goroutine to break the fuse

* safety net

* comment
2025-04-05 22:47:23 +05:30
Raja SubramanianandGitHub 35f83c515b Replace Promise with Fuse. (#3580) 2025-04-05 16:27:13 +05:30
Raja SubramanianandGitHub 07fe9b7241 Prevent migration race. (#3579)
* Prevent migration race.

Comments in code. Briefly, due to race, the remote participant/track
could be closed early leading to missing subscription post-migration.

* fixes
2025-04-05 16:12:25 +05:30
Raja SubramanianandGitHub e9be0fca54 log SDP offer on error (#3577)
* log SDP offer on error

* use util
2025-04-05 02:07:00 +05:30
Raja SubramanianandGitHub 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 MaheshwariandGitHub 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 SubramanianandGitHub cdfbb106d1 Audio uses signal SignalCid and SdpCid. (#3564)
This is a bit annoying and painful. Audio does not have the information
in the track info (because it does not use Codecs, it should probably at
some point to make it consistent).
2025-03-31 21:16:11 +05:30