From eed457d8bec72a88842fca4865ec2e7002587c88 Mon Sep 17 00:00:00 2001 From: Raja Subramanian Date: Sun, 25 Feb 2024 01:31:04 +0530 Subject: [PATCH] Do not need pending migration tracks. (#2507) Simplify a bit. Pending migratiion tracks need not be maintained as when a migrated track is added, it is added to up track manager and treated as a published track. When up track manager closes, published tracks will close. So, no need to maintain a separate list. --- pkg/rtc/participant.go | 27 ++------------------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/pkg/rtc/participant.go b/pkg/rtc/participant.go index 1851128cf..efdce9d63 100644 --- a/pkg/rtc/participant.go +++ b/pkg/rtc/participant.go @@ -172,8 +172,6 @@ type ParticipantImpl struct { pendingTracksLock utils.RWMutex pendingTracks map[string]*pendingTrackInfo pendingPublishingTracks map[livekit.TrackID]*pendingTrackInfo - // migrated in tracks that have not fired need close at participant close - pendingMigratedTracks []*MediaTrack // supported codecs enabledPublishCodecs []*livekit.Codec @@ -714,7 +712,6 @@ func (p *ParticipantImpl) handleMigrateTracks() { p.pubLogger.Warnw("could not find migrated track", nil, "cid", cid) } } - p.pendingMigratedTracks = append(p.pendingMigratedTracks, addedTracks...) if len(addedTracks) != 0 { p.dirty.Store(true) @@ -730,19 +727,6 @@ func (p *ParticipantImpl) handleMigrateTracks() { }() } -func (p *ParticipantImpl) removePendingMigratedTrack(mt *MediaTrack) { - p.pendingTracksLock.Lock() - for i, t := range p.pendingMigratedTracks { - if t == mt { - p.pendingMigratedTracks[i] = p.pendingMigratedTracks[len(p.pendingMigratedTracks)-1] - p.pendingMigratedTracks[len(p.pendingMigratedTracks)-1] = nil - p.pendingMigratedTracks = p.pendingMigratedTracks[:len(p.pendingMigratedTracks)-1] - break - } - } - p.pendingTracksLock.Unlock() -} - // AddTrack is called when client intends to publish track. // records track details and lets client know it's ok to proceed func (p *ParticipantImpl) AddTrack(req *livekit.AddTrackRequest) { @@ -813,14 +797,9 @@ func (p *ParticipantImpl) Close(sendLeave bool, reason types.ParticipantCloseRea p.pendingTracksLock.Lock() p.pendingTracks = make(map[string]*pendingTrackInfo) - pendingMigratedTracksToClose := p.pendingMigratedTracks - p.pendingMigratedTracks = p.pendingMigratedTracks[:0] + p.pendingPublishingTracks = make(map[livekit.TrackID]*pendingTrackInfo) p.pendingTracksLock.Unlock() - for _, t := range pendingMigratedTracksToClose { - t.Close(isExpectedToResume) - } - p.UpTrackManager.Close(isExpectedToResume) p.updateState(livekit.ParticipantInfo_DISCONNECTED) @@ -1967,9 +1946,7 @@ func (p *ParticipantImpl) mediaTrackReceived(track *webrtc.TrackRemote, rtpRecei p.pendingTracksLock.Unlock() - if mt.AddReceiver(rtpReceiver, track, mid) { - p.removePendingMigratedTrack(mt) - } + mt.AddReceiver(rtpReceiver, track, mid) if newTrack { go func() {