mirror of
https://github.com/livekit/livekit.git
synced 2026-08-29 07:39:09 +00:00
Send full muxing map
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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=
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user