mirror of
https://github.com/livekit/livekit.git
synced 2026-08-29 07:39:09 +00:00
simplify vls base access (#3465)
This commit is contained in:
+5
-7
@@ -871,24 +871,24 @@ func (r *Room) IsClosed() bool {
|
||||
}
|
||||
|
||||
// CloseIfEmpty closes the room if all participants had left, or it's still empty past timeout
|
||||
func (r *Room) CloseIfEmpty() string {
|
||||
func (r *Room) CloseIfEmpty() {
|
||||
r.lock.Lock()
|
||||
|
||||
if r.IsClosed() || r.holds.Load() > 0 {
|
||||
r.lock.Unlock()
|
||||
return ""
|
||||
return
|
||||
}
|
||||
|
||||
for _, p := range r.participants {
|
||||
if !p.IsDependent() {
|
||||
r.lock.Unlock()
|
||||
return ""
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
var timeout uint32
|
||||
var elapsed int64
|
||||
reason := ""
|
||||
var reason string
|
||||
if r.FirstJoinedAt() > 0 && r.LastLeftAt() > 0 {
|
||||
elapsed = time.Now().Unix() - r.LastLeftAt()
|
||||
// need to give time in case participant is reconnecting
|
||||
@@ -903,10 +903,8 @@ func (r *Room) CloseIfEmpty() string {
|
||||
|
||||
if elapsed >= int64(timeout) {
|
||||
r.Close(types.ParticipantCloseReasonRoomClosed)
|
||||
return reason
|
||||
r.Logger.Infow("closing idle room", "reason", reason)
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (r *Room) Close(reason types.ParticipantCloseReason) {
|
||||
|
||||
@@ -197,10 +197,7 @@ func (r *RoomManager) CloseIdleRooms() {
|
||||
r.lock.RUnlock()
|
||||
|
||||
for _, room := range rooms {
|
||||
reason := room.CloseIfEmpty()
|
||||
if reason != "" {
|
||||
room.Logger.Infow("closing idle room", "reason", reason)
|
||||
}
|
||||
room.CloseIfEmpty()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -50,6 +50,10 @@ func NewBase(logger logger.Logger) *Base {
|
||||
}
|
||||
}
|
||||
|
||||
func (b *Base) getBase() *Base {
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *Base) IsOvershootOkay() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -51,30 +51,7 @@ func NewDependencyDescriptor(logger logger.Logger) *DependencyDescriptor {
|
||||
}
|
||||
|
||||
func NewDependencyDescriptorFromOther(vls VideoLayerSelector) *DependencyDescriptor {
|
||||
switch vls := vls.(type) {
|
||||
case *Null:
|
||||
return &DependencyDescriptor{
|
||||
Base: vls.Base,
|
||||
}
|
||||
|
||||
case *Simulcast:
|
||||
return &DependencyDescriptor{
|
||||
Base: vls.Base,
|
||||
}
|
||||
|
||||
case *DependencyDescriptor:
|
||||
return &DependencyDescriptor{
|
||||
Base: vls.Base,
|
||||
}
|
||||
|
||||
case *VP9:
|
||||
return &DependencyDescriptor{
|
||||
Base: vls.Base,
|
||||
}
|
||||
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
return &DependencyDescriptor{Base: vls.getBase()}
|
||||
}
|
||||
|
||||
func (d *DependencyDescriptor) IsOvershootOkay() bool {
|
||||
|
||||
@@ -29,6 +29,8 @@ type VideoLayerSelectorResult struct {
|
||||
}
|
||||
|
||||
type VideoLayerSelector interface {
|
||||
getBase() *Base
|
||||
|
||||
IsOvershootOkay() bool
|
||||
|
||||
SetTemporalLayerSelector(tls temporallayerselector.TemporalLayerSelector)
|
||||
|
||||
@@ -15,9 +15,10 @@
|
||||
package videolayerselector
|
||||
|
||||
import (
|
||||
"github.com/pion/rtp/codecs"
|
||||
|
||||
"github.com/livekit/livekit-server/pkg/sfu/buffer"
|
||||
"github.com/livekit/protocol/logger"
|
||||
"github.com/pion/rtp/codecs"
|
||||
)
|
||||
|
||||
type VP9 struct {
|
||||
@@ -31,30 +32,7 @@ func NewVP9(logger logger.Logger) *VP9 {
|
||||
}
|
||||
|
||||
func NewVP9FromOther(vls VideoLayerSelector) *VP9 {
|
||||
switch vls := vls.(type) {
|
||||
case *Null:
|
||||
return &VP9{
|
||||
Base: vls.Base,
|
||||
}
|
||||
|
||||
case *Simulcast:
|
||||
return &VP9{
|
||||
Base: vls.Base,
|
||||
}
|
||||
|
||||
case *DependencyDescriptor:
|
||||
return &VP9{
|
||||
Base: vls.Base,
|
||||
}
|
||||
|
||||
case *VP9:
|
||||
return &VP9{
|
||||
Base: vls.Base,
|
||||
}
|
||||
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
return &VP9{Base: vls.getBase()}
|
||||
}
|
||||
|
||||
func (v *VP9) IsOvershootOkay() bool {
|
||||
|
||||
Reference in New Issue
Block a user