Commit Graph

733 Commits

Author SHA1 Message Date
Raja Subramanian e138ef3f55 Use error level to get some back trace (#625) 2022-04-19 13:06:47 +05:30
Raja Subramanian 75ec31f237 Support starting off with not forwarding video (#623) 2022-04-19 12:37:53 +05:30
Raja Subramanian 50bd08e551 ICE restart - dynacast settings were lost (#620)
* Prevent stats update if the deltas are empty

* increase force interval

* static check

* Change max delay to 30 seconds

* Restart the max subscribed quality timer on ICE restart.

Force an update after a restart to let clients apply dynacast settings.
Also, set the max expected layer to HIGH on restart so that stream
tracker starts up fast on a restart.

* fix test
2022-04-18 22:58:11 +05:30
Raja Subramanian a19ca69f5f Prevent stats update if the deltas are empty (#619)
* Prevent stats update if the deltas are empty

* increase force interval

* static check

* Change max delay to 30 seconds
2022-04-18 22:51:34 +05:30
Raja Subramanian 2e9bccfeff Allow padding packets to stream tracker. (#618) 2022-04-18 10:20:52 +05:30
Raja Subramanian ed2a0011d9 Lock to receiver report for senders (#616) 2022-04-17 08:43:50 +05:30
Raja Subramanian a98d955284 Delta stats throughout (#615)
* Use delta stats throughout and avoid calculating deltas in telemetry

* Fix a few things after testing

* Remove debug

* Fix tests

* delete instead of setting to nil

* Point to the latest protocol
2022-04-16 21:11:32 +05:30
cnderrauber 7a3e446a65 run StartSession in a goroutine (#614) 2022-04-15 09:36:24 +08:00
Raja Subramanian 08c764c9bd Do not force an update on unmute. (#613)
Let the subs drive subscription quality update.
2022-04-14 15:35:17 +05:30
Brint E. Kriebel f8ae219eab Add sort by option to node selector (#599)
* Add sort by option to node selector

Allow the final decision of a selected node to be based on different
sorting options rather than just random.

Add a `sysload`, `cpuload`, `rooms`, `clients`, `tracks`, and
`bytespersec` sorting options to select the appropriate room when
multiple are suitable for the chosen selector.

Add tests for sysload sort_by option

Closes: #598

* NodeSelector: rename "random" selector to "any"

Since the selector introduces limits but the final selection is now
based on the sort by value, the random selector name does not make
sense. Rename this selector to "any" to accurately reflect that it will
select any available no with no additional selection limits.

Allow the old setting "random" to point to the new selector name, but
print a deprecation warning message.
2022-04-14 01:25:36 -07:00
Raja Subramanian 587534d121 Count repeated NACK only on a hit (#611) 2022-04-13 18:01:59 +05:30
Raja Subramanian ee7bb0a1ad Log both estimate and nack ratio when congestion detected (#608) 2022-04-10 12:09:11 +05:30
David Zhao 69d9cc19bc Switch back to reconnecting only on failure. (#604)
Sometimes peerconnection jumps to disconnected periodically even
when the underlying connection is ok. In these cases we are
triggering unnecessary connection restarts.

Given this, we'll leave the responsibility of early-detecting
disconnections to clients, where they have more control/knowledge
of networking conditions.
2022-04-07 23:11:11 -07:00
David Zhao 4475a028b6 Removed REMB references for publisher (#605) 2022-04-07 18:24:11 -07:00
cnderrauber 665e53aba8 rename log and comment (#601) 2022-04-07 17:28:33 +08:00
cnderrauber f74144846b create new subscriber datatrack after migration (#600)
* use negotiated data channel in migration case

* create subscriber data track after migration

* fix participant state update

* add participant leave log

* update protocol
2022-04-07 15:43:24 +08:00
Raja Subramanian 93a2730128 Resync on mute to avoid sequence number jumps on unmute (#597) 2022-04-06 23:23:57 +05:30
David Zhao 8fbe00edb3 Avoid locking when flushing DownTrack (#594) 2022-04-05 23:45:51 -07:00
cnderrauber 1471830990 use negotiated data channel in migration case (#596) 2022-04-06 14:13:31 +08:00
Raja Subramanian 2e71fba3da Prevent negative timestamp diff (#595)
Found another reason for potential stalling on layer switch up.

When switching up, it is possible that the key frame of the packet
at higher layer arrives very close to a packet in the currently
forwarded layer.

An inversion happens when higher layer packet arrives earlier
(as timestamped at receicver), but gets scheduled for forwarding
later (as seen by forwarder).

Because of the order of processing goroutines,
it is possible to have negative diff when trying to adjust
RTP timestamps for layer switch. A negative diff results in
large jump in RTP timestamp. Client stalls, sends PLI three seconds
later (3 seconds is a Chrome thing, not sure about others), waits
for another key frame and starts again. In the mean time, the
video is frozen.
2022-04-06 10:18:41 +05:30
Raja Subramanian 73ae58bb42 Reduce chatty logs (#592) 2022-04-06 06:30:26 +05:30
Raja Subramanian 92009b6428 Consistently stop tickers (#593) 2022-04-05 20:42:06 +05:30
Raja Subramanian b695376086 Avoid locking in callback (#588) 2022-04-04 21:37:10 +05:30
David Zhao 130aefa597 Use type-specific track prefixes. (#586)
* Use type-specific track prefixes.

Making it easier to identify track type from its ID

* also include track source
2022-03-31 12:35:15 -07:00
Raja Subramanian 4696503790 Include region in ParticipantInfo (#585) 2022-03-31 14:57:55 +05:30
cnderrauber ffb45f7fe2 change client resume condition to disconnected, not failed (#583) 2022-03-31 13:43:22 +08:00
David Colburn 7dc90e805c Update protocol (#582) 2022-03-30 16:38:38 -07:00
David Colburn 0b8a180554 Code inspection (#581)
* Code inspection

* fix [4]int64 conversiong
2022-03-30 13:49:53 -07:00
David Colburn 26f7bb498a Identity cannot be empty (#580) 2022-03-30 12:53:32 -07:00
cnderrauber 3f5d4df65d fix subscribe only client migrate with data channel (#579) 2022-03-30 18:45:03 +08:00
Raja Subramanian f694dad105 Reset available layers when removing all trackers (#575) 2022-03-29 08:16:18 +05:30
cnderrauber e35d75f7d7 disable av1 and vp9 support (#576) 2022-03-29 10:29:54 +08:00
cnderrauber 3959251837 add support for vp9 and av1 (#574) 2022-03-28 22:22:48 +08:00
cnderrauber 75ca70aef7 add ipv6 support (#571) 2022-03-28 14:23:48 +08:00
David Zhao f2556483a3 Re-issue tokens when clients initially connect. (#569)
This ensures if they are disconnected before token is refreshed, they
could reconnect back with a valid token.
2022-03-25 23:55:19 -07:00
David Zhao 51cf626a70 Dump goroutines when possible deadlock is detected (#568) 2022-03-25 23:54:35 -07:00
shishirng a6bb59b159 handle deltas being null leading to crash (#567)
Signed-off-by: shishir gowda <shishir@livekit.io>
2022-03-25 19:18:32 -04:00
cnderrauber 3352ee6b79 add size limit to metadata of room & participant (#566)
* add size limit to metadata of room & participant

* description in config-sample

* solve comments
2022-03-25 12:48:11 +08:00
cnderrauber 61655c6ff0 fix firefox reconnect with ice-lite enabled (#565) 2022-03-24 17:38:44 +08:00
Raja Subramanian f293de054d Fix large reported loss in RTPStats (#564)
Had to check for half the range to see if start needed to be moved back.
2022-03-24 12:17:36 +05:30
Raja Subramanian ab7c63a08a Remove padding double counting (#562) 2022-03-24 06:36:17 +05:30
shishirng 579d3d1a19 Check if current stats < prev and guard against underflow (#563)
Signed-off-by: shishir gowda <shishir@livekit.io>
2022-03-23 15:16:59 -04:00
Raja Subramanian ed9234f71b Removing unused functions and adding more logs (#560)
* Removing unused functions and adding more logs

* Do not include padding packets in Packets
2022-03-23 22:26:34 +05:30
Raja Subramanian 06ea1d2ad3 Log rtp stats for debugging large gaps or all packets getting reported lost (#559) 2022-03-23 15:12:45 +05:30
cnderrauber 534cc01b85 refine dynacast pause delay (#558)
* refine dynacast pause delay

* fix test
2022-03-23 16:52:40 +08:00
Raja Subramanian 757a59fbcd Use windowing for NACK monitoring (#557)
* Use windowing for NACK monitoring

* Fix test
2022-03-23 13:42:29 +05:30
cnderrauber b98b828618 throttle quality come down (#556) 2022-03-23 15:27:00 +08:00
David Zhao dfd3dade00 Disallow pause by default (#554) 2022-03-22 22:07:01 -07:00
sibi adc20649ce limit speaker events to microhpone track (#553)
* limit speaker events to microhpone track

* PR suggestion
2022-03-22 13:55:06 -07:00
David Colburn 13c91678bf Remove egress store (#552)
* Remove egress store

* fix imports
2022-03-22 12:37:31 -07:00