* 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
* Fix forwarding status deduction
- When muted OR when there are no available layers, declare optimal
- When target layer is the maximum it can achieve taking available
layers into account even if they are not the maximum subscribed layer,
it is still optimal as there is nothing better available.
* Fix and add more tests for forwarding status
* WIP commit
* deficient handling
* Add missing ProvisionalAllocatePrepare
* adjust state on track removal
* Increase test timeout
* - Add comments about cooperative routines
- Take down transition if available in cooperative scheme
- Use layer comparison when taking down transition. Because of when the
bitrate is measured, it is not always guaranteed bandwidthDelta is -ve
when moving down.
- Do not add track to stream allocator till bind.
* make comment better
* a bit more clear comments
* Use OnBind on subscribed track
* 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
* WIP commit
* test padding only with a gap scenario
* Debug
* Fix video corruption, need buffer to include payload and translated header size
* Revert incorrect change
* Fix VP8 translation to return buffer with proper length
* Restore 7-bit mode
* WIP commit
* Clean up
* More clean up and tests compiling again
* Fix tests
* 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>
* Make VP8 packet translation thread-safe.
Was using one packet from pool for all VP8 translation which was not thread safe.
Grab packets from the pool when needed for VP8 translation and return to pool after done.
Do not grab packet from pool if the header size between incoming and translated matches.
That also saves copying the packet payload.
* Keep Get/Put in the same function.
* Use protocol friendly StreamedTracksUpdate
* WIP commit
* Stream allocator update
* subtract the requested bandwidth as delta from Allocate could be adding to bandwidth
* Calculate delta correctly
* correct comment
* Simplify eventCh per David's suggestion
* Simplifying (hopefully) sfu.DownTrack
* Remove unnecessary check as pdding only packets are dropped before that check
* Temporal filtering max layer
* - Split out forwarder bits into a separate structure
- Address comments from Jie and David
* Remove debug and unneeded stuff
* Fix test
* Remove unneeded default initialization
* WIP branch to hash out down stream allocator.
* Plug more bits of stream allocator
* update protocol
* remove SignalRequest_Simulcast (#154)
* Plug more bits of stream allocator
* Handle simulcast track available layers change
* WIP branch to hash out down stream allocator.
* Plug more bits of stream allocator
* Handle simulcast track available layers change
* Adopt signature of call to AdjustAllocation
* Move StreamAllocator to PCTransport and allocate only for subscriber.
* Move streamallocator to ion-sfu
* Start/Stop of streamallocator
* Use StreamAllocator for subscriber bandwidth management.
* Do not allocate in ADD_TRACK
* Set payload in constructor
* - Add some logging
- Protocol message to notify clients of paused/resumed streams
* named return
* oops correct sense of isPausing
* Update pkg/sfu/streamallocator.go
Committing David's suggestion.
Co-authored-by: David Zhao <david@davidzhao.com>
* - Log estimate changes/commits.
- Catch more than epsilon change oscillating for long time.
Co-authored-by: David Colburn <xero73@gmail.com>
Co-authored-by: David Zhao <david@davidzhao.com>
* configurable node track limit
* sample config
* todos
* end of file new line
* default max num tracks
* bandwidth limit
* client message for limit exceeded node
* 10 Gbps default network limit