simplify vls base access (#3465)

This commit is contained in:
Paul Wells
2025-02-26 09:34:59 +05:30
committed by GitHub
parent 7350e99331
commit 43bd251575
6 changed files with 16 additions and 60 deletions
+5 -7
View File
@@ -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) {
+1 -4
View File
@@ -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()
}
}
+4
View File
@@ -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)
+3 -25
View File
@@ -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 {