mirror of
https://github.com/livekit/livekit.git
synced 2026-05-14 20:35:27 +00:00
AddDownTrack to regressed codec after restarting forwarder. (#4037)
Without that the new codec was skipping through with old selector and not working correctly.
This commit is contained in:
@@ -710,7 +710,8 @@ func (d *DownTrack) handleUpstreamCodecChange(mimeType string) {
|
||||
)
|
||||
|
||||
receiver := d.Receiver()
|
||||
d.forwarder.Restart(codec.RTPCodecCapability, receiver.HeaderExtensions(), receiver.VideoLayerMode())
|
||||
d.forwarder.Restart()
|
||||
d.forwarder.DetermineCodec(codec.RTPCodecCapability, receiver.HeaderExtensions(), receiver.VideoLayerMode())
|
||||
|
||||
d.connectionStats.UpdateCodec(d.Mime(), isFECEnabled)
|
||||
}
|
||||
@@ -794,13 +795,17 @@ func (d *DownTrack) SetReceiver(r TrackReceiver) {
|
||||
d.receiverLock.Unlock()
|
||||
|
||||
old.DeleteDownTrack(d.SubscriberID())
|
||||
d.bindLock.Unlock()
|
||||
|
||||
r.AddOnReady(d.handleReceiverReady)
|
||||
d.handleUpstreamCodecChange(r.Codec().MimeType)
|
||||
|
||||
d.bindLock.Lock()
|
||||
if err := r.AddDownTrack(d); err != nil {
|
||||
d.params.Logger.Warnw("failed to add downtrack to receiver", err)
|
||||
}
|
||||
d.bindLock.Unlock()
|
||||
|
||||
r.AddOnReady(d.handleReceiverReady)
|
||||
d.handleUpstreamCodecChange(r.Codec().MimeType)
|
||||
if sal := d.getStreamAllocatorListener(); sal != nil {
|
||||
sal.OnSubscribedLayerChanged(d, d.forwarder.MaxLayer())
|
||||
}
|
||||
|
||||
@@ -310,10 +310,6 @@ func (f *Forwarder) DetermineCodec(codec webrtc.RTPCodecCapability, extensions [
|
||||
f.lock.Lock()
|
||||
defer f.lock.Unlock()
|
||||
|
||||
f.determineCodecLocked(codec, extensions, videoLayerMode)
|
||||
}
|
||||
|
||||
func (f *Forwarder) determineCodecLocked(codec webrtc.RTPCodecCapability, extensions []webrtc.RTPHeaderExtensionParameter, videoLayerMode livekit.VideoLayer_Mode) {
|
||||
if videoLayerMode == livekit.VideoLayer_ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR {
|
||||
f.skipReferenceTS = true
|
||||
}
|
||||
@@ -1634,7 +1630,7 @@ func (f *Forwarder) CheckSync() (bool, int32) {
|
||||
return f.vls.CheckSync()
|
||||
}
|
||||
|
||||
func (f *Forwarder) Restart(codec webrtc.RTPCodecCapability, extensions []webrtc.RTPHeaderExtensionParameter, videoLayerMode livekit.VideoLayer_Mode) {
|
||||
func (f *Forwarder) Restart() {
|
||||
f.lock.Lock()
|
||||
defer f.lock.Unlock()
|
||||
|
||||
@@ -1648,8 +1644,6 @@ func (f *Forwarder) Restart(codec webrtc.RTPCodecCapability, extensions []webrtc
|
||||
}
|
||||
f.lastSwitchExtIncomingTS = 0
|
||||
f.refVideoLayerMode = livekit.VideoLayer_MODE_UNUSED
|
||||
|
||||
f.determineCodecLocked(codec, extensions, videoLayerMode)
|
||||
}
|
||||
|
||||
func (f *Forwarder) FilterRTX(nacks []uint16) (filtered []uint16, disallowedLayers [buffer.DefaultMaxLayerSpatial + 1]bool) {
|
||||
|
||||
Reference in New Issue
Block a user