diff --git a/pkg/rtc/room.go b/pkg/rtc/room.go index 5f7a2ea4a..cd33e4fc8 100644 --- a/pkg/rtc/room.go +++ b/pkg/rtc/room.go @@ -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) { diff --git a/pkg/service/roommanager.go b/pkg/service/roommanager.go index 18835af28..2417f1f66 100644 --- a/pkg/service/roommanager.go +++ b/pkg/service/roommanager.go @@ -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() } } diff --git a/pkg/sfu/videolayerselector/base.go b/pkg/sfu/videolayerselector/base.go index 91551fbfd..186ef47c8 100644 --- a/pkg/sfu/videolayerselector/base.go +++ b/pkg/sfu/videolayerselector/base.go @@ -50,6 +50,10 @@ func NewBase(logger logger.Logger) *Base { } } +func (b *Base) getBase() *Base { + return b +} + func (b *Base) IsOvershootOkay() bool { return false } diff --git a/pkg/sfu/videolayerselector/dependencydescriptor.go b/pkg/sfu/videolayerselector/dependencydescriptor.go index d86a96e8f..2f652c14b 100644 --- a/pkg/sfu/videolayerselector/dependencydescriptor.go +++ b/pkg/sfu/videolayerselector/dependencydescriptor.go @@ -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 { diff --git a/pkg/sfu/videolayerselector/videolayerselector.go b/pkg/sfu/videolayerselector/videolayerselector.go index 46b97fedf..5a20c36fa 100644 --- a/pkg/sfu/videolayerselector/videolayerselector.go +++ b/pkg/sfu/videolayerselector/videolayerselector.go @@ -29,6 +29,8 @@ type VideoLayerSelectorResult struct { } type VideoLayerSelector interface { + getBase() *Base + IsOvershootOkay() bool SetTemporalLayerSelector(tls temporallayerselector.TemporalLayerSelector) diff --git a/pkg/sfu/videolayerselector/vp9.go b/pkg/sfu/videolayerselector/vp9.go index a8793dfb3..dc5999c48 100644 --- a/pkg/sfu/videolayerselector/vp9.go +++ b/pkg/sfu/videolayerselector/vp9.go @@ -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 {