mirror of
https://github.com/livekit/livekit.git
synced 2026-05-24 08:05:33 +00:00
transfer from non-null for codec change (#3464)
This commit is contained in:
@@ -344,13 +344,13 @@ func (f *Forwarder) DetermineCodec(codec webrtc.RTPCodecCapability, extensions [
|
||||
isDDAvailable := ddAvailable(extensions)
|
||||
if isDDAvailable {
|
||||
if f.vls != nil {
|
||||
f.vls = videolayerselector.NewDependencyDescriptorFromNull(f.vls)
|
||||
f.vls = videolayerselector.NewDependencyDescriptorFromOther(f.vls)
|
||||
} else {
|
||||
f.vls = videolayerselector.NewDependencyDescriptor(f.logger)
|
||||
}
|
||||
} else {
|
||||
if f.vls != nil {
|
||||
f.vls = videolayerselector.NewVP9FromNull(f.vls)
|
||||
f.vls = videolayerselector.NewVP9FromOther(f.vls)
|
||||
} else {
|
||||
f.vls = videolayerselector.NewVP9(f.logger)
|
||||
}
|
||||
@@ -362,7 +362,7 @@ func (f *Forwarder) DetermineCodec(codec webrtc.RTPCodecCapability, extensions [
|
||||
isDDAvailable := ddAvailable(extensions)
|
||||
if isDDAvailable {
|
||||
if f.vls != nil {
|
||||
f.vls = videolayerselector.NewDependencyDescriptorFromNull(f.vls)
|
||||
f.vls = videolayerselector.NewDependencyDescriptorFromOther(f.vls)
|
||||
} else {
|
||||
f.vls = videolayerselector.NewDependencyDescriptor(f.logger)
|
||||
}
|
||||
|
||||
@@ -50,11 +50,30 @@ func NewDependencyDescriptor(logger logger.Logger) *DependencyDescriptor {
|
||||
}
|
||||
}
|
||||
|
||||
func NewDependencyDescriptorFromNull(vls VideoLayerSelector) *DependencyDescriptor {
|
||||
return &DependencyDescriptor{
|
||||
Base: vls.(*Null).Base,
|
||||
decisions: NewSelectorDecisionCache(256, 80),
|
||||
fnWrapper: FrameNumberWrapper{logger: vls.(*Null).logger},
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ func NewSimulcastFromOther(vls VideoLayerSelector) *Simulcast {
|
||||
return &Simulcast{
|
||||
Base: vls.Base,
|
||||
}
|
||||
|
||||
case *Simulcast:
|
||||
return &Simulcast{
|
||||
Base: vls.Base,
|
||||
|
||||
@@ -30,9 +30,30 @@ func NewVP9(logger logger.Logger) *VP9 {
|
||||
}
|
||||
}
|
||||
|
||||
func NewVP9FromNull(vls VideoLayerSelector) *VP9 {
|
||||
return &VP9{
|
||||
Base: vls.(*Null).Base,
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user