transfer from non-null for codec change (#3464)

This commit is contained in:
Raja Subramanian
2025-02-25 23:31:14 +05:30
committed by GitHub
parent ca4526048c
commit 7350e99331
4 changed files with 52 additions and 11 deletions
+3 -3
View File
@@ -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
}
}
+1
View File
@@ -35,6 +35,7 @@ func NewSimulcastFromOther(vls VideoLayerSelector) *Simulcast {
return &Simulcast{
Base: vls.Base,
}
case *Simulcast:
return &Simulcast{
Base: vls.Base,
+24 -3
View File
@@ -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
}
}