One shot signalling mode fixes (#3223)

* set desired on synchronous track

* debug

* debug

* direction

* reuse

* clean up
This commit is contained in:
Raja Subramanian
2024-12-01 04:25:36 +05:30
committed by GitHub
parent 8bb29c3a7b
commit 7f0c14306f
3 changed files with 6 additions and 0 deletions
+1
View File
@@ -309,6 +309,7 @@ func (t *MediaTrackSubscriptions) AddSubscriber(sub types.LocalParticipant, wr *
// but it is not detrimental to set this, needs clean up when participants modes are separated out better.
subTrack.SetNeedsNegotiation(!replacedTrack)
subTrack.SetRTPSender(sender)
// it is possible that subscribed track is closed before subscription manager sets
// the `OnClose` callback. That handler in subscription manager removes the track
// from the peer connection.
+4
View File
@@ -2954,6 +2954,10 @@ func (p *ParticipantImpl) SupportsSyncStreamID() bool {
}
func (p *ParticipantImpl) SupportsTransceiverReuse() bool {
if p.params.UseOneShotSignallingMode {
return p.ProtocolVersion().SupportsTransceiverReuse()
}
return p.ProtocolVersion().SupportsTransceiverReuse() && !p.SupportsSyncStreamID()
}
+1
View File
@@ -645,6 +645,7 @@ func (m *SubscriptionManager) subscribeSynchronous(trackID livekit.TrackID) erro
m.subscriptions[trackID] = sub
}
m.lock.Unlock()
sub.setDesired(true)
subTrack, err := track.AddSubscriber(m.params.Participant)
if err != nil && !errors.Is(err, errAlreadySubscribed) {