Commit Graph
1082 Commits
Author SHA1 Message Date
Raja SubramanianandGitHub 2c48eafd6e Retain previous audio score if number of packets is low (#793)
* Retain previous audio score if number of packets is low

* better comment and correct spelling
2022-06-29 14:48:06 +05:30
Raja SubramanianandGitHub 1e39a680ac Log details of track score when not excellent. (#792) 2022-06-28 14:26:11 +05:30
cnderrauberandGitHub 6eb1c1efe1 update pion (#790) 2022-06-27 15:08:56 +08:00
David ZhaoandGitHub b316698409 Release with GoReleaser. Allow start without key configuration (#788) 2022-06-26 12:27:43 -07:00
Raja SubramanianandGitHub e5f53a0d21 Pass willBeResumed into RemovePublishedTrack (#789) 2022-06-26 11:39:27 +05:30
David ZhaoandGitHub 16505e2ce9 Close room if recorder is the only participant left, not hidden. (#787)
Also need to close participant connections
2022-06-24 15:49:02 -07:00
Raja SubramanianandGitHub 46bce33fb8 Cache and restore forwarder state on resume (#786)
* WIP commit

* Clean up

* spelling mistake

* Run subscribed track onBind in a go routine

* Address comments and more safety net

* Cache and restore forwarder state on resume

* conflicts

* mage generate
2022-06-24 22:02:03 +05:30
David ColburnandGitHub 407996702b update participant grants (#782) 2022-06-24 09:29:04 -07:00
Raja SubramanianandGitHub adf2d191b0 Re-use transceiver (via ReplaceTrack) if a down track is going to be resumed. (#785)
* WIP commit

* Clean up

* spelling mistake

* Run subscribed track onBind in a go routine

* Address comments and more safety net
2022-06-24 15:07:48 +05:30
cnderrauberandGitHub 0b630e15b6 disable ice lite by default (#784)
* disable ice lite by default
2022-06-24 15:06:07 +08:00
Raja SubramanianandGitHub 20512151c6 Prevent subscribe renegotiation if tracks will be resumed. (#781) 2022-06-24 00:06:37 +05:30
Raja SubramanianandGitHub 667ff4eba4 pick up ICE agent panic crash (#780) 2022-06-23 11:31:45 +05:30
cnderrauberandGitHub 20d777eff9 queue onSubscribedMaxQualityChange callback (#779) 2022-06-23 12:11:16 +08:00
Raja SubramanianandGitHub 120110fbbe A few more reasons a participant could be closed with (#778) 2022-06-22 11:56:03 +05:30
David Zhao 007b5866a3 v1.1.0 v1.1.0 2022-06-21 23:21:14 -07:00
David ZhaoandGitHub 9d12147d97 Temporary workaround for clients not able to handle combined updates (#777)
See: https://github.com/livekit/client-sdk-js/pull/275
2022-06-21 23:04:49 -07:00
Raja SubramanianandGitHub 47b89c155f Log reason for participant close (#776)
* Log reason for participant close

Please suggest better naming for different scenarios if something comes
to mind.

* group service requests

* incorporate feedback

* Change names in tests
2022-06-22 10:32:22 +05:30
Raja SubramanianandGitHub 87c8ec25b9 Check that max layers are valid before allowing overshoot. (#775) 2022-06-21 23:14:06 +05:30
Raja SubramanianandGitHub 45ed8ce85a Look for stable mex expected layer before calculating score. (#774) 2022-06-21 17:24:34 +05:30
Raja SubramanianandGitHub ac1e55fa27 Use current layer for actual dimension when calculating quality of muxed (#773)
tracks.
2022-06-21 11:31:51 +05:30
David ZhaoandGitHub 301bd2771c Expose IsPublisher and IsSubscribedTo via LocalParticipant interface (#772) 2022-06-19 23:58:31 -07:00
Raja SubramanianandGitHub 1e6a12167b Use loss based scoring for screen share tracks. (#771)
* Use loss based scoring for screen share tracks.

* Remove named TODO markers and file issues
2022-06-20 12:08:30 +05:30
Raja SubramanianandGitHub 69800a45cb Use go map for subscribedTo. (#769)
* Reinstating a function used by cloud

* Use go map for `subscribedTo`.

Range over a sync.Map could produce unexpected results if
there are concurrent changes (change in value or delete).
While we do not change value (the value is a place holder in this map),
just moving to go map to avoid hard to find concurrency issues.
The lock scoping is well defined for the map. So, making the change
to be more defensive.
2022-06-19 22:09:55 +05:30
Raja SubramanianandGitHub 62943f2096 Set DtxDisabled from TrackInfo in score calculation. (#770)
* Set DtxDisabled from TrackInfo in score calculation.

Also, fix sending connection quality upate on a new subscription.

* comments tweaks

* Move TrackInfo into StreamTrackerManager as this is used by cloud as well
2022-06-19 21:12:09 +05:30
Raja SubramanianandGitHub 227247b012 Reinstating a function used by cloud (#768) 2022-06-19 10:37:51 +05:30
Raja SubramanianandGitHub 17fb420c2f Send connection quality updates only if there is a change (#767) 2022-06-19 10:19:43 +05:30
Raja SubramanianandGitHub 9032db857c Connection quality clean up (#766)
* WIP commit

* WIP commit

* Remove debug

* Revert to reduce diff

* Fix tests

* Determine spatial layer from track info quality if non-simulcast

* Adjust for invalid layer on no rid, previously that function was returning 0 for no rid case

* Fall back to top level width/height if there are no layers

* Use duration from RTPDeltaInfo
2022-06-18 21:58:47 +05:30
cnderrauberandGitHub 651d2aee4d fix datachannel to same postion as previous negotiate (#765) 2022-06-17 18:28:57 +08:00
Raja SubramanianandGitHub bbd5d3739f Use logger with context (#764) 2022-06-17 11:12:29 +05:30
Raja SubramanianandGitHub 568d6c5432 Do not munge VP8 header in place. (#763)
As the buffer could be used to send to remote nodes, the publisher
side buffer should be treated as read-only.
2022-06-16 20:25:26 +05:30
cnderrauberandGitHub d15725c662 publish new codec when subscriber needed (#762)
* publish new codec as needed
2022-06-16 18:16:34 +08:00
Raja SubramanianandGitHub 83b71fce50 Set SSRC for RTCP (#760)
- SenderSSRC was not set for NACK, RTCP_RR - so SRTP context
was using SSRC = 0 which is not bad, but let us set the SSRC properly.
- PLI was using a random SSRC on every PLI. So, that would have
created a new SRTP stream (not bad as that stream context is small)
on every PLI. It is wasteful. So, set the SenderSSRC to the mediaSSRC.
- Reduce re-start of higher layers to 10 seconds. That is long enough
to declare that a stream layer has restarted.
2022-06-16 12:07:21 +05:30
AlessioandGitHub 558be854be Add turn relay start and end port configuration (#733) 2022-06-13 15:03:12 -07:00
David ColburnandGitHub 4be096cf74 Update egress RPC handler (#759)
* egress rpc handler

* add egress statuses

* nil redis client

* update protocol
2022-06-13 12:18:17 -07:00
cnderrauberandGitHub 15da445fd7 fix subscription update on codec change (#757) 2022-06-10 12:31:34 +08:00
David Zhao b81694b664 Updated example config with use_tls for Redis 2022-06-09 12:35:34 -07:00
Raja SubramanianandGitHub 4701119885 Proto clone VideoLayer (#756)
Otherwise, there are warnings about copying locks.
2022-06-09 09:32:57 +05:30
cnderrauberandGitHub 15e91344be add disabled_codecs to client conf, and disable it at server side (#755)
* add disabled_codecs to client conf, and disable it at server side

* update go mod
2022-06-08 15:55:48 +08:00
cnderrauberandGitHub 90ae3892b3 add simulate switch candidate (#754)
* add simulate switch candidate

* update go mod
2022-06-07 17:56:41 +08:00
Raja SubramanianandGitHub e72fd80ca0 Move rtp stats log to info (#752) 2022-06-06 22:20:48 +05:30
David ZhaoandGitHub c62def3fdf Use stable TrackID after unpublishing & republishing (#751)
Multiple parts of the system relies on a Track's ID (egress, telemetry, etc).
Track ID changes when a track was unpublished, then republished with the
exact same attributes. This PR would allow us to re-use a previously
unpublished Track ID
2022-06-05 23:31:51 -07:00
shishirngandGitHub 2927521b8b Send publisher max layer change info to telemetry (#748)
Signed-off-by: shishir gowda <shishir@livekit.io>
2022-06-02 14:15:23 -04:00
cnderrauberandGitHub 6ba034feae shorten the time cost for subscriber get media tracks (#747)
* set DownTrack's initial codec to first codec of potential codecs

* faststart on subscribe
2022-06-02 10:00:42 +08:00
shishirngandGitHub 46301d7d6f Send layer dimensions when max subscribed layers change (#746)
Signed-off-by: shishir gowda <shishir@livekit.io>
2022-05-31 11:46:08 -04:00
Raja SubramanianandGitHub 4ed9b5f90e Revert "Using shadow pattern for stats workers (#742)" (#744)
This reverts commit 2b561d2bad.
2022-05-31 11:06:44 +05:30
Raja SubramanianandGitHub f19815754c Do not re-compute average on real time metric change (#743) 2022-05-31 10:33:17 +05:30
Raja SubramanianandGitHub 2b561d2bad Using shadow pattern for stats workers (#742) 2022-05-31 10:32:54 +05:30
Raja SubramanianandGitHub 508aa471a9 Track participant join total + rate in node stats (#741)
* Track participant join total + rate in node stats

* update protocol
2022-05-30 15:58:30 +05:30
cnderrauberandGitHub 62308b2ce0 set DownTrack's initial codec to first codec of potential codecs (#740) 2022-05-30 16:34:55 +08:00
Raja SubramanianandGitHub 10b0c9b9ff Allow overshooting maximum when there are no bandwidth constraints. (#739)
* Allow overshooting maximum when there are no bandwidth constraints.

Some clients prioritize sending higher layer of video (for e.g.
Firefox). They may get into a state where congestion does not allow
sending lower layers.

That combined with adaptive streaming capping the max layer at a
certain level, it is possible to get into a state where video is
not streamed.

To make this experience better, allow overshoot beyond max layers
in case of optimal (i. e. no congestion) allocation.

NOTE: This means that the video could freeze when there is congestion
even if `AllowPause` is not disabled as in congested state, we do
not overshoot the max layer.

* log about allowing overshoot
2022-05-30 13:51:59 +05:30