* WIP commit
* SubscribedQualityUpdate message to send list of currently subscribed
qualities for a simulcast video publisher
* Correct subscriberID
* goimports
* Do quality update on add/remove of subscribed track
* do not update quality when admin mute is active
* update quality on admin unmute
* Update protocol version
* Simplify max subscribed quality loop per David's suggestion
* Stream Allocator Try 3
Making an intermediate PR to do
- Special treatment for screen share tracks
- When allocating all tracks,
o try to stream all tracks by starting with the lowest layer
o multi-pass across tracks to get a more even distribution
Not yet done:
-------------
In deficient state,
o Allocate a specific track on a change
o Steal from other tracks
* Correct sense of managed track
* have to range to copy
* generate
* fix VideoLayers compare
* Use t.simulcasted
* Allow participants to create new connection for publishing new tracks
new param 'publish=<name>' enables publishing new connection with publish
only grants. Also, identity is appended with '#<name>'
* Add integration test to duplicate publish only connection
Signed-off-by: shishir gowda <shishir@livekit.io>
* Reuse token in test and set subscribeGrant to false on publish param
Signed-off-by: shishir gowda <shishir@livekit.io>
* create auth token with grants
Signed-off-by: shishir gowda <shishir@livekit.io>
* Signal ice on negotiate in test client
Signed-off-by: shishir gowda <shishir@livekit.io>
* Update pkg/service/rtcservice.go
Co-authored-by: David Zhao <david@davidzhao.com>
Co-authored-by: David Zhao <david@davidzhao.com>
* Handle multiple codecs in renegotiation
update pion to v3.1.9 for answer same order of codec as publisher.
register enable codecs in subscriber peerconnectin created.
add codec parameter to buffer.bind
buffer should use the codec of TrackRemote as it's codec mime.
sent h264blankframe when DownTrack closing
* Disallow AddTrack from participants that don't have the permission
* Support protocol 3 speaker updates, client info
* update protocol
* Disallow AddTrack from participants that don't have the permission
* increase wait time for GH to pass
* prestop and hasparticipants in interface
* add prestop function to existing routers
* fakerouter prestop
* update protocol version
* read lock
* redis router graceful stop
* test fix
* force stop
* refactor: active speakers
1. Observe the loudest adjusted with active ratio instead of linear average of decibel values
2. Follow RFC6465 to convert audio level from decibel to linear value.
3. Quantize audio level for stable slice comparison
4. Switch moving average algorithm from MMA to EMA to have the same center of mass with SMA
5. Minor: remove seenSids map allocation
6. Minor: minimize division arithmetic
* Update pkg/rtc/audiolevel.go
Co-authored-by: David Zhao <david@davidzhao.com>