Send full muxing map

This commit is contained in:
cnderrauber
2023-03-13 10:19:32 +08:00
parent 1937631ccc
commit c69a8e926d
3 changed files with 16 additions and 13 deletions
+1 -1
View File
@@ -103,4 +103,4 @@ require (
gopkg.in/yaml.v2 v2.4.0 // indirect
)
replace github.com/livekit/protocol => ../protocol
replace github.com/livekit/protocol => ../protocol
-2
View File
@@ -232,8 +232,6 @@ github.com/livekit/mageutil v0.0.0-20230125210925-54e8a70427c1 h1:jm09419p0lqTkD
github.com/livekit/mageutil v0.0.0-20230125210925-54e8a70427c1/go.mod h1:Rs3MhFwutWhGwmY1VQsygw28z5bWcnEYmS1OG9OxjOQ=
github.com/livekit/mediatransportutil v0.0.0-20230130133657-96cfb115473a h1:5UkGQpskXp7HcBmyrCwWtO7ygDWbqtjN09Yva4l/nyE=
github.com/livekit/mediatransportutil v0.0.0-20230130133657-96cfb115473a/go.mod h1:1Dlx20JPoIKGP45eo+yuj0HjeE25zmyeX/EWHiPCjFw=
github.com/livekit/protocol v1.4.3-0.20230222030027-e946da680c7b h1:2toBhQKTJSqoizjUUOPapRX9prKpNcLxSuvhZ9NKeGI=
github.com/livekit/protocol v1.4.3-0.20230222030027-e946da680c7b/go.mod h1:mVzmVesPCIgk2gg/jMr6PWtHu8dfRdhaAJ6okFs5nQw=
github.com/livekit/psrpc v0.2.7 h1:j8ns7+t/7LJxTH/jnD9Ds7qn3VkNOV/qCUbt2nbirfU=
github.com/livekit/psrpc v0.2.7/go.mod h1:2wtOo1F03vub2qIjx0rAPpVplg873670/LN08o/yopM=
github.com/livekit/rtcscore-go v0.0.0-20220815072451-20ee10ae1995 h1:vOaY2qvfLihDyeZtnGGN1Law9wRrw8BMGCr1TygTvMw=
+15 -10
View File
@@ -59,6 +59,7 @@ type SelectionForwarder struct {
idleDowntracks []*sfu.DownTrack
downtracks []*sfu.DownTrack
close chan struct{}
sourceChanged bool
onForwardMappingChanged func(muxInfo []*livekit.AudioTrackMuxInfo)
}
@@ -111,6 +112,7 @@ func (f *SelectionForwarder) AddSource(participantID livekit.ParticipantID, trac
f.params.Logger.Debugw("adding source", "trackID", trackID)
f.lock.Lock()
f.sources = append(f.sources, &sourceInfo{participantID: participantID, trackID: trackID, receiver: source})
f.sourceChanged = true
f.lock.Unlock()
}
@@ -126,6 +128,7 @@ func (f *SelectionForwarder) RemoveSource(trackID livekit.TrackID) {
break
}
}
f.sourceChanged = true
f.lock.Unlock()
}
@@ -150,7 +153,7 @@ func (f *SelectionForwarder) process() {
func (f *SelectionForwarder) updateForward() {
f.lock.Lock()
defer f.lock.Unlock()
if len(f.sources) == 0 {
if len(f.sources) == 0 && !f.sourceChanged {
return
}
@@ -186,19 +189,21 @@ func (f *SelectionForwarder) updateForward() {
}
}
if forwardChanged && f.onForwardMappingChanged != nil {
muxInfo := make([]*livekit.AudioTrackMuxInfo, 0, len(f.sources))
if (f.sourceChanged || forwardChanged) && f.onForwardMappingChanged != nil {
f.sourceChanged = false
muxInfos := make([]*livekit.AudioTrackMuxInfo, 0, len(f.sources))
for _, source := range f.sources {
if source.active && source.downtrack != nil {
muxInfo = append(muxInfo, &livekit.AudioTrackMuxInfo{
SdpTrackId: source.downtrack.ID(),
ParticipantSid: string(source.participantID),
TrackSid: string(source.trackID),
})
info := &livekit.AudioTrackMuxInfo{
ParticipantSid: string(source.participantID),
TrackSid: string(source.trackID),
}
if source.downtrack != nil {
info.SdpTrackId = source.downtrack.ID()
}
muxInfos = append(muxInfos, info)
}
f.onForwardMappingChanged(muxInfo)
f.onForwardMappingChanged(muxInfos)
}
}