diff --git a/pkg/rtc/localparticipant.go b/pkg/rtc/localparticipant.go index 29d93b9f3..1ee98b804 100644 --- a/pkg/rtc/localparticipant.go +++ b/pkg/rtc/localparticipant.go @@ -12,6 +12,7 @@ import ( "github.com/livekit/livekit-server/pkg/config" "github.com/livekit/livekit-server/pkg/rtc/types" + "github.com/livekit/livekit-server/pkg/sfu" "github.com/livekit/livekit-server/pkg/sfu/twcc" "github.com/livekit/livekit-server/pkg/telemetry" ) @@ -29,6 +30,7 @@ type LocalParticipantParams struct { Telemetry telemetry.TelemetryService ThrottleConfig config.PLIThrottleConfig Logger logger.Logger + SimTracks map[uint32]SimulcastTrackInfo } type LocalParticipant struct { @@ -227,6 +229,12 @@ func (l *LocalParticipant) MediaTrackReceived(track *webrtc.TrackRemote, rtpRece SubscriberConfig: l.params.Config.Subscriber, }) + for ssrc,info :=range l.params.SimTracks { + if info.Mid == mid { + mt.TrySetSimulcastSSRC(uint8(sfu.RidToLayer(info.Rid)), ssrc) + } + } + // add to published and clean up pending l.UptrackManager.AddPublishedTrack(mt) delete(l.pendingTracks, signalCid) diff --git a/pkg/rtc/participant.go b/pkg/rtc/participant.go index bf41d3dfc..d79bb18cf 100644 --- a/pkg/rtc/participant.go +++ b/pkg/rtc/participant.go @@ -817,6 +817,7 @@ func (p *ParticipantImpl) setupLocalParticipant() { Telemetry: p.params.Telemetry, ThrottleConfig: p.params.ThrottleConfig, Logger: p.params.Logger, + SimTracks: p.params.SimTracks, }) p.LocalParticipant.OnTrackPublished(func(track types.PublishedTrack) {