David Zhao
7449175c8e
Fix participant update version generation. ( #477 )
...
Previously it was stuck at 1
2022-03-01 09:36:11 -08:00
cnderrauber
913ef3a646
Datatrack for data channel ( #476 )
...
* data track
2022-03-01 15:48:20 +08:00
Raja Subramanian
13e21e7c45
Callback queue for a couple of modules ( #468 )
...
* callback queue for stream tracker
* Ops queue for down track
* fix test
2022-03-01 09:55:13 +05:30
David Colburn
a1bef5b18d
deadlock CI ( #475 )
...
* deadlock CI
* make sure the test fails
* remove fail check
2022-02-28 14:48:19 -08:00
shishirng
c3a3fb569d
add track publisher info in track subscribed event ( #473 )
...
* add track publisher info in track subscribed event
Signed-off-by: shishir gowda <shishir@livekit.io >
* update protocol ver
Signed-off-by: shishir gowda <shishir@livekit.io >
2022-02-28 13:48:02 -05:00
Raja Subramanian
2706dc130f
Replace sync/atomic usage with uber/atomic ( #471 )
2022-02-28 09:57:17 +05:30
David Zhao
933b41e42a
v0.15.5
v0.15.5
2022-02-27 16:55:48 -08:00
David Zhao
433a5cd8d1
Disable default node limits ( #472 )
...
* Disable default node limits
* removed unused vars
2022-02-27 16:54:39 -08:00
cnderrauber
c2d3e6e33e
create data channel from sync state ( #469 )
...
* create data channel from sync state
* fix fake type
2022-02-25 18:32:02 +08:00
David Zhao
130decbf1d
CI step for static check ( #467 )
...
* CI step for static check
* fix staticcheck
2022-02-24 23:07:15 -08:00
Raja Subramanian
778d1aa141
utils.AtomicFlag -> atomic.Bool (#466 )
...
* Replacing hand rolled ion-sfu atomic with uber/atomic
* Remove another hand rolled atomic
* utils.AtomicFlag -> atomic.Bool
2022-02-25 12:19:49 +05:30
Raja Subramanian
0170cc1cb6
Staticcheck ( #464 )
...
Using `go get -u honnef.co/go/tools/cmd/staticcheck`
Uneaarthed a couple of real bugs
2022-02-25 12:04:08 +05:30
Raja Subramanian
5a4181b581
Replacing hand rolled ion-sfu atomic with uber/atomic ( #465 )
...
* Replacing hand rolled ion-sfu atomic with uber/atomic
* Remove another hand rolled atomic
2022-02-25 11:57:09 +05:30
Raja Subramanian
2959eebca8
Introducing OpsQueue ( #463 )
...
* Introducing OpsQueue
Creating a PR to get feedback on standardizing on this concept.
Can be used for callbacks.
Already a couple of places use this construct. Wondering if we
should standardize on this across the board.
Just changing one place to use the new struct. Another place
that I know of which uses this pattern is the telemetry package.
* atomic flag -> bool
2022-02-25 11:56:26 +05:30
David Zhao
6d88154402
Reduce lock scope, avoid callbacks under lock ( #462 )
2022-02-24 15:09:34 -08:00
David Colburn
20f21cce2b
Egress ( #455 )
...
* egress updates
* pass egressInfo to delete
* update typefakes
* export StartEgress
* update protocol
* new rpc, rename stores
* add json tag
* update tests
* update protocol
2022-02-24 14:57:14 -08:00
shishirng
b7aac6cb6b
Set track_type to VIDEO for max subscriber video quality change explcitly ( #461 )
...
its defaulting to 0 -> AUDIO
Signed-off-by: shishir gowda <shishir@livekit.io >
2022-02-24 12:45:07 -05:00
Raja Subramanian
5a9459d0d5
Use the same wrap logic as bucket as it is more robust ( #460 )
...
Also rename n -> s for golang convention
2022-02-24 17:51:02 +05:30
Raja Subramanian
eed241cf7f
Refactor Bucket a little bit ( #459 )
2022-02-24 13:43:12 +05:30
David Zhao
7eb2fecadd
Close websocket connection upon join failure ( #458 )
...
* Close websocket connection on join failure to avoid hang
* fix auto creation bug
2022-02-22 17:43:25 -08:00
shishirng
3e7fae96ea
Add telemetry method to capture max video_quality ( #457 )
...
* Add telemetry method to capture max video_quality
Signed-off-by: shishir gowda <shishir@livekit.io >
* Telemetry fakes
Signed-off-by: shishir gowda <shishir@livekit.io >
* Update go mod dep
Signed-off-by: shishir gowda <shishir@livekit.io >
2022-02-22 19:08:49 -05:00
Raja Subramanian
870190624e
Fix no-video with adaptive streaming ( #456 )
...
* Fix no-video with adaptive streaming
With a recent change to initialize max quality for subscriber
synchronously, a subsequent update at the same quality was
getting ignored. So, there was no message back to publisher
to start up video layers. Reproducible every time the subscriber
joined after all the layers of publishers was turned off.
While not pretty, for now, disable the check for quality match
on subscriber update. That disabling itself is fine as there is
another check for consolidated quality match before sending
a message to the publisher, but in general this area has shown
some shakiness and needs some work.
* Use notify function to set initial quality also
2022-02-22 10:34:18 -08:00
David Zhao
a48cb6d0c4
Avoid deadlock during room close ( #451 )
...
* avoid deadlock during room closse
* better fix
2022-02-20 21:14:57 -08:00
Raja Subramanian
3f38172139
Types for ConnectionID, NodeID, ParticipantKey ( #450 )
...
* Types for ConnectionID, NodeID, ParticipantKey
* latest protocol version
2022-02-21 08:52:11 +05:30
Raja Subramanian
f209e9319a
Reset channel observer in resetState ( #449 )
...
* Reset channel observer in resetState
* Spelling fix
2022-02-20 20:52:17 +05:30
Raja Subramanian
1e459e91cc
Stream priority ( #448 )
2022-02-19 13:17:55 +05:30
David Zhao
c20fb237d5
Initialize subscriber quality to default layer ( #444 )
2022-02-18 09:21:24 -08:00
Raja Subramanian
dd4cec7724
Deleting unused code in stream allocator ( #447 )
2022-02-18 21:10:52 +05:30
Raja Subramanian
92d47ec421
Resync uses SSRC change. Reset to 0 when a resync is needed. ( #446 )
2022-02-18 16:26:27 +05:30
cnderrauber
517312fb87
update to turn@v2.0.8 ( #445 )
2022-02-18 17:45:14 +08:00
Raja Subramanian
babbfb37aa
Include NACK ratio in congestion control ( #443 )
...
* WIP commit
* WIP commit
* WIP commit
* WIP commit
* WIP commit
* WIP commit
* WIP commit
* WIP commit
* Clean up
* Remove debug
* Remove unneeded change
* fix test
* Remove incorrect comment
* WIP commit
* Reset probe after estimate trends down
* WIP commit
* variable name change
* WIP commit
* WIP commit
* out-of-order test
* WIP commit
* Clean up
* more strict probe NACKs
2022-02-18 14:21:30 +05:30
shishirng
7fcb887eb8
use delta bytes in window to identify max layer ( #442 )
...
total_bytes is aggregate, when we switch from higher layer to lower
layer, it takes time for lower layers total_bytes to catch up to
stopped higher layers
Signed-off-by: shishir gowda <shishir@livekit.io >
2022-02-17 15:15:10 -05:00
Raja Subramanian
d04f4d12d1
Throttle RTX under certain conditions to prevent RTX storm ( #440 )
...
* WIP commit
* WIP commit
* WIP commit
* WIP commit
* WIP commit
* WIP commit
* WIP commit
* WIP commit
* Clean up
* Remove debug
* Remove unneeded change
* fix test
* Remove incorrect comment
* WIP commit
* Reset probe after estimate trends down
* WIP commit
* variable name change
* Clean up
* Remove debug logs
* gofmt
2022-02-17 13:33:44 +05:30
Raja Subramanian
0bbed7f0bd
Use padding for probing ( #434 )
...
* WIP commit
* WIP commit
* WIP commit
* WIP commit
* WIP commit
* WIP commit
* WIP commit
* WIP commit
* Clean up
* Remove debug
* Remove unneeded change
* fix test
* Remove incorrect comment
* Reset probe after estimate trends down
2022-02-17 11:03:23 +05:30
shishirng
c534099e3a
fix connection_scores not being sent to telemetry during delta calc ( #439 )
...
Signed-off-by: shishir gowda <shishir@livekit.io >
2022-02-16 19:31:59 -05:00
Raja Subramanian
7b086ecf4c
Do not send RTCP if receiver is closed ( #438 )
2022-02-16 18:57:43 +05:30
Raja Subramanian
d69ee14696
Make stream tracker very forgiving for layer 0. ( #437 )
...
With screen sharing in Chrome 97, static content sends one packet
a second. Layer 0 stream tracker was configured to expect 2 per second.
Make it very relaxed so that one packet in two seconds declares layer 0
active.
2022-02-16 18:28:41 +05:30
cnderrauber
32d8af6da0
repeat request pli until first keyframe received ( #436 )
2022-02-16 19:57:55 +08:00
Raja Subramanian
c9cfb0d362
Need to return delta the new provisional layer takes. ( #433 )
2022-02-11 14:04:47 +05:30
Raja Subramanian
f3a6f58006
Use correct publisher id in stream state update ( #432 )
2022-02-11 12:09:48 +05:30
Raja Subramanian
a6338992e8
Stop forwarding on congestion ( #429 )
...
* WIP commit
* comment out debug stuff
2022-02-11 09:17:53 +05:30
shishirng
8680f6fd23
Send trackInfo object in TRACK_SUBSCRIBED event ( #431 )
...
Need track details in subscribed events
Signed-off-by: shishir gowda <shishir@livekit.io >
2022-02-10 16:48:16 -05:00
shishirng
e96e8e7f97
Clean up closed tracks stats and handle -ve packet_lost ( #430 )
...
Signed-off-by: shishir gowda <shishir@livekit.io >
2022-02-10 11:21:17 -05:00
cnderrauber
f3572d2654
tune speaker detector more sensitive ( #427 )
...
* tune speaker detector more sensitive
2022-02-10 16:39:59 +08:00
David Zhao
aadfc97b0b
Minor cleanup, updated docs to reflect Swift ( #428 )
2022-02-10 00:31:09 -08:00
shishirng
6f7e6c4556
Compute delta stats to send downstream ( #426 )
...
* Compute delta stats to send downstream
Signed-off-by: shishir gowda <shishir@livekit.io >
* Update tests: total_packets should be diff between 2 packets
First packet was 1, second was 4. diff should be 3
Signed-off-by: shishir gowda <shishir@livekit.io >
* If there are no videoLayers, do not sent in Stats
For audio and Downstream tracks, we do not get layers
Signed-off-by: shishir gowda <shishir@livekit.io >
* Use prev Max layer for current delta and update layer info for next round
2022-02-09 20:45:53 -05:00
David Zhao
837f64643f
v0.15.4
v0.15.4
2022-02-09 12:08:56 -08:00
Raja Subramanian
aff25afb70
NACKs with min/max intervals and exponential backoff retries ( #425 )
...
* NACKs with min/max intervals and exponential backoff retries
* simplify
2022-02-09 19:00:03 +05:30
Raja Subramanian
f4f9df375f
Ignore 0 RTT for nacker ( #424 )
...
- Propagate when a track is added
- Reduce scope of lock
2022-02-09 14:08:07 +05:30
Raja Subramanian
222b02aa73
RTT ( #420 )
...
* Consolidating PLI throttle
Use the throttler in `sfu.WebRTCReceiver`.
Does change shape of config object.
* Move PLIThrottleConfig to sfu.WebRTCReceiver
* fix test compile
* Cleaning up unused stuff
* improve readability
* RTT
- Calculate down track RTT using RTCP Receiver report
- Surface it back to the participant
- Participant updates all its published trackes
(throttled to limit update to once in 5 seconds)
- That propagates to all the upstream sfu.Buffer and the nacker.
So, we will have RTT throttled NACKs.
* rtt callback
2022-02-09 09:34:40 +05:30