mirror of
https://github.com/livekit/livekit.git
synced 2026-07-28 12:09:26 +00:00
Fix timing issue between track republish (#3428)
This commit is contained in:
@@ -1773,9 +1773,6 @@ func (p *ParticipantImpl) onMediaTrack(rtcTrack *webrtc.TrackRemote, rtpReceiver
|
||||
var track sfu.TrackRemote = sfu.NewTrackRemoteFromSdp(rtcTrack, codec)
|
||||
publishedTrack, isNewTrack := p.mediaTrackReceived(track, rtpReceiver)
|
||||
if publishedTrack == nil {
|
||||
p.pendingTracksLock.Lock()
|
||||
p.pendingRemoteTracks = append(p.pendingRemoteTracks, &pendingRemoteTrack{track: rtcTrack, receiver: rtpReceiver})
|
||||
p.pendingTracksLock.Unlock()
|
||||
p.pubLogger.Debugw(
|
||||
"webrtc Track published but can't find MediaTrack, add to pendingTracks",
|
||||
"kind", track.Kind().String(),
|
||||
@@ -2397,6 +2394,7 @@ func (p *ParticipantImpl) mediaTrackReceived(track sfu.TrackRemote, rtpReceiver
|
||||
"mid", mid,
|
||||
)
|
||||
if mid == "" {
|
||||
p.pendingRemoteTracks = append(p.pendingRemoteTracks, &pendingRemoteTrack{track: track.RTCTrack(), receiver: rtpReceiver})
|
||||
p.pendingTracksLock.Unlock()
|
||||
p.pubLogger.Warnw("could not get mid for track", nil, "trackID", track.ID())
|
||||
return nil, false
|
||||
@@ -2408,6 +2406,7 @@ func (p *ParticipantImpl) mediaTrackReceived(track sfu.TrackRemote, rtpReceiver
|
||||
if !ok {
|
||||
signalCid, ti, migrated, createdAt := p.getPendingTrack(track.ID(), ToProtoTrackKind(track.Kind()), true)
|
||||
if ti == nil {
|
||||
p.pendingRemoteTracks = append(p.pendingRemoteTracks, &pendingRemoteTrack{track: track.RTCTrack(), receiver: rtpReceiver})
|
||||
p.pendingTracksLock.Unlock()
|
||||
return nil, false
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ type TrackRemote interface {
|
||||
StreamID() string
|
||||
Kind() webrtc.RTPCodecType
|
||||
Codec() webrtc.RTPCodecParameters
|
||||
RTCTrack() *webrtc.TrackRemote
|
||||
}
|
||||
|
||||
// TrackRemoteFromSdp represents a remote track that could be created by the sdp.
|
||||
@@ -30,3 +31,7 @@ func NewTrackRemoteFromSdp(track *webrtc.TrackRemote, codec webrtc.RTPCodecParam
|
||||
func (t *TrackRemoteFromSdp) Codec() webrtc.RTPCodecParameters {
|
||||
return t.sdpCodec
|
||||
}
|
||||
|
||||
func (t *TrackRemoteFromSdp) RTCTrack() *webrtc.TrackRemote {
|
||||
return t.TrackRemote
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user