Commit Graph
1114 Commits
Author SHA1 Message Date
cnderrauberandGitHub fcdff4f97a enable nack for audio track (#829) 2022-07-13 16:05:57 +08:00
Ramakrishna ChilakaandGitHub 677b7c16d1 removing piBy180 from critical path (#821) 2022-07-11 16:02:51 -07:00
David Zhao bb7301190c Updated CHANGELOG 2022-07-11 15:59:11 -07:00
David Zhao bddf67041e v1.1.2 v1.1.2 2022-07-11 15:27:44 -07:00
David ZhaoandGitHub 4cbdeb15b0 Switch release CI to build on Linux (#827)
Also disabled .deb generation since it doesn't add much value
in addition to the binary builds.
2022-07-11 15:26:58 -07:00
cnderrauberandGitHub 4280a5993b correct RUnlock (#826) 2022-07-11 12:27:57 +08:00
Raja SubramanianandGitHub 01f7309adc Separate close and stop on MediaTrackSubscriptions. (#823) 2022-07-09 12:42:54 +05:30
David Zhao 1e71343964 v1.1.1 v1.1.1 2022-07-07 23:35:26 -07:00
cnderrauberandGitHub cf88bdebc2 remove close check in downtrack.bind (#819)
* remove close check in downtrack.bind

* return nil but do nothing
2022-07-08 10:59:09 +08:00
Raja SubramanianandGitHub 8315a547a8 Set layer state to stopped on pause. (#818)
* Set layer state to `stopped` on pause.

Previously, on pause, the worker was let run and declare
layer gone 1/2 a second (or whatever the stream tracker window
is set for) later.

But, when rapidly changing mute/unmute, the following cuold happen
and layer changes may be missed
- Available layers - 0, 1, 2
- Mute
- Before layer gone detected, unumute. Because of this layer gone
  is not reported and available layers stay at 0, 1, 2.
- Stream tracker is reset on unmute to enable quick detection of layer
  start.
- If all layers start back up, no issues.
- But, if the layers do not start back up, there is no layer start
  firing and the available layers are still 0, 1, 2 which is incorrect.

* exempt handling when paused
2022-07-07 22:52:45 +05:30
Raja SubramanianandGitHub 177061712c Do not hold lock while invoking resolver. (#816)
* Do not hold lock while invoking resolver.

Resolver is in room and it will grab its lock.
It is called from partcipant when checking permissions.
Permissions processing uses the participant lock.
So, not a good idea to call a room function with
participant lock held. Avoid that.

Also, use a full lock in the add/remove subscription
path. This is to ensure that permissions path and
subscription path (like subscribing to new participant's
tracks) do not race. As subscriptions are queued now
on the subscriber side, this should be fine.

* Revoke path resolution in ops queue goroutine

* fix test
2022-07-07 13:24:26 +05:30
Raja SubramanianandGitHub 52aed86080 Add remote participant context to logger (#815) 2022-07-07 10:44:10 +05:30
Raja SubramanianandGitHub ef66404a1a Keep track of pending subscriber operations. (#814)
* Keep track of pending subscriber operations.

This is required to determine if a receiver does not have
any subscription.

* correct spelling of queuing

* lock around hasPermission
2022-07-06 23:48:28 +05:30
Raja SubramanianandGitHub fbb1f9fc80 Move subscribe/unsubscribe queue to participant. (#813)
* Move subscribe/unsubscribe queue to participant.

As subscribe/unsubscribe operation can come from both
local media track or remote media track, participant
needs to have it.

* Remove comment

* Stop reneg timer on close

* address comments
2022-07-06 17:27:32 +05:30
David ColburnandGitHub fbbcbe77df Remove recording (#811)
* remove recorder service

* update protocol
2022-07-05 18:39:32 -07:00
cnderrauberandGitHub 4242205ede move close downtrack to goroutine (#810) 2022-07-05 17:26:47 +08:00
cnderrauberandGitHub 937882c364 add negotiate failed to ToDisconnectReason (#809) 2022-07-05 11:24:32 +08:00
Russ d'SaandGitHub 9973452df0 Update README.md (#808)
- Adding link to Pat's PHP server SDK
- s/Javascript/JavaScript.
2022-07-04 12:35:38 -07:00
cnderrauberandGitHub f17ed9b925 refine negotiation process (#807)
* refine negotiation process

* not restart during ice gathering

* fix test case
2022-07-04 17:11:09 +08:00
David ZhaoandGitHub e30046f537 Delay room manager close to ensure correct DisconnectReason is sent (#806) 2022-07-03 23:38:59 -07:00
Raja SubramanianandGitHub 7c35184944 Send permissions update on subscribe. (#805)
* Send permissions update on subscribe.

The permission `allowed` update was happening only when
processing pending subscriptions (which happens only on
subscription permissions update).

It is possible that subscription happens through other
paths (like subscribing new participant to tracks).
In that path, we were checking if the track has permissions
and adding to pending. But, we were not checking if
the track is in pending and if it is in there, removing
in on successful subscription and sending an update.
Fix that.

* log more fields in error
2022-07-03 12:17:22 +05:30
Raja SubramanianandGitHub 5704a7bfca Need this public as it is used from elsewhere (#804) 2022-07-03 11:03:26 +05:30
Raja SubramanianandGitHub 1428ab3713 Add logs around permissions handling (#803) 2022-07-03 10:56:00 +05:30
David ZhaoandGitHub f1f62ddda5 Sends disconnect reason when server sends Leave request (#801)
* Sends disconnect reason when server sends Leave request

* update go.mod
2022-07-02 21:22:26 -07:00
Raja SubramanianandGitHub d0bbea6e91 Force send dynacast update on unmute. (#802)
As there is a queue to send dynacast update, forcing
an update on unmute should be fine. That will send
the current state. If the subscribers change it,
an update will be sent as necessary.

This addresses the case of subscription changes happening
when the published track is muted. Dynacast updates are
not sent when publisher tarck is muted. If on unmute,
if subscribers do not have any changes, an update is missed
(i. e. the changes that happen when publisher track is muted
is not sent).
2022-07-03 09:50:14 +05:30
Raja SubramanianandGitHub 41c57f737c More use of subscriber logger when appropriate and an interface to get (#800) 2022-07-02 20:51:38 +05:30
Raja SubramanianandGitHub 5a30f6ed87 Add logging for permissions debugging (#799)
* Add logging for permissions debugging

* Remove debug
2022-07-02 14:10:24 +05:30
Raja SubramanianandGitHub e7033a23c0 Recover from retry on ICE restart (#798) 2022-07-02 11:46:28 +05:30
Raja SubramanianandGitHub 03b0a01aad Use a queue for add/remove subscribe operations. (#797)
* Use a queue for add/remove subscribe operations.

If subscribe/unsubscribe happens very quickly, the subscription
state gets mixed up as things are keyed off of subscriberID.

Use a queue of subscribe operations and process it serially.

* set up callback for down track added

* move the queue on unexpected type

* move the queue if removeSubscirber does not have a subscribed track
2022-07-02 10:52:55 +05:30
Raja SubramanianandGitHub 856cc1798f RemoveSubscriber while revoking. (#796)
Else, a quick turn around of permissions tries to subscribe
again and the subscriber is already in the subscribed list.
2022-07-01 11:31:47 +05:30
Raja SubramanianandGitHub c15eeeff2b Run connection quality worker every 5 seconds. (#795)
With a small window, the quality is volatile even on small disturbances.
For example losing 2 audio packets in a 2 second window could
drop the quality metric.
2022-06-30 09:10:18 +05:30
cnderrauberandGitHub 93f152779e Migrate with muted track (#794)
* update pion

* migrate muted track

* refine
2022-06-30 00:14:29 +08:00
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