mirror of
https://github.com/livekit/livekit.git
synced 2026-05-24 19:05:36 +00:00
A few misc changes (#915)
- Do not update jitter on padding only packet. Padding only packet may not have proper timestamp. If it does, it probably has the time stamp of the last packet with payload. That will also affect jitter calculation, i. e. wall clock time is moving, but RTP time is the same. - Do not send `onMaxLayer` changed on bind. It was probably racing with update when max layer is updated when adaptive stream is off. There is no need to send that update as the default would be OFF. It will be enabled when adaptive stream subscription turns it on or when max layer is set when down track bind happens and adaptive stream is off.
This commit is contained in:
@@ -174,6 +174,12 @@ func (d *DynacastManager) updateMaxQualityForMime(mime string, maxQuality liveki
|
||||
func (d *DynacastManager) update(force bool) {
|
||||
d.lock.Lock()
|
||||
|
||||
if len(d.maxSubscribedQuality) == 0 {
|
||||
// no mime has been added, nothing to update
|
||||
d.lock.Unlock()
|
||||
return
|
||||
}
|
||||
|
||||
// add or remove of a mime triggers an update
|
||||
changed := len(d.maxSubscribedQuality) != len(d.committedMaxSubscribedQuality)
|
||||
downgradesOnly := !changed
|
||||
|
||||
@@ -160,6 +160,20 @@ func (t *MediaTrackSubscriptions) AddSubscriber(sub types.LocalParticipant, wr *
|
||||
subTrack.SetPublisherMuted(t.params.MediaTrack.IsMuted())
|
||||
})
|
||||
|
||||
downTrack.OnStatsUpdate(func(_ *sfu.DownTrack, stat *livekit.AnalyticsStat) {
|
||||
t.params.Telemetry.TrackStats(livekit.StreamType_DOWNSTREAM, subscriberID, trackID, stat)
|
||||
})
|
||||
|
||||
downTrack.OnMaxLayerChanged(func(dt *sfu.DownTrack, layer int32) {
|
||||
if t.onSubscriberMaxQualityChange != nil {
|
||||
t.onSubscriberMaxQualityChange(subscriberID, dt.Codec(), layer)
|
||||
}
|
||||
})
|
||||
|
||||
downTrack.OnRttUpdate(func(_ *sfu.DownTrack, rtt uint32) {
|
||||
go sub.UpdateRTT(rtt)
|
||||
})
|
||||
|
||||
var transceiver *webrtc.RTPTransceiver
|
||||
var sender *webrtc.RTPSender
|
||||
|
||||
@@ -240,20 +254,6 @@ func (t *MediaTrackSubscriptions) AddSubscriber(sub types.LocalParticipant, wr *
|
||||
|
||||
downTrack.SetTransceiver(transceiver)
|
||||
|
||||
downTrack.OnStatsUpdate(func(_ *sfu.DownTrack, stat *livekit.AnalyticsStat) {
|
||||
t.params.Telemetry.TrackStats(livekit.StreamType_DOWNSTREAM, subscriberID, trackID, stat)
|
||||
})
|
||||
|
||||
downTrack.OnMaxLayerChanged(func(dt *sfu.DownTrack, layer int32) {
|
||||
if t.onSubscriberMaxQualityChange != nil {
|
||||
t.onSubscriberMaxQualityChange(subscriberID, dt.Codec(), layer)
|
||||
}
|
||||
})
|
||||
|
||||
downTrack.OnRttUpdate(func(_ *sfu.DownTrack, rtt uint32) {
|
||||
go sub.UpdateRTT(rtt)
|
||||
})
|
||||
|
||||
downTrack.OnCloseHandler(func(willBeResumed bool) {
|
||||
go t.downTrackClosed(sub, subTrack, willBeResumed, sender)
|
||||
})
|
||||
|
||||
@@ -294,9 +294,10 @@ func (r *RTPStats) Update(rtph *rtp.Header, payloadSize int, paddingSize int, pa
|
||||
if rtph.Marker {
|
||||
r.frames++
|
||||
}
|
||||
|
||||
r.updateJitter(rtph, packetTime)
|
||||
}
|
||||
|
||||
r.updateJitter(rtph, packetTime)
|
||||
}
|
||||
|
||||
return
|
||||
|
||||
@@ -298,9 +298,6 @@ func (d *DownTrack) Bind(t webrtc.TrackLocalContext) (webrtc.RTPCodecParameters,
|
||||
d.bound.Store(true)
|
||||
d.bindLock.Unlock()
|
||||
|
||||
if d.onMaxLayerChanged != nil {
|
||||
d.onMaxLayerChanged(d, d.MaxLayers().Spatial)
|
||||
}
|
||||
d.connectionStats.Start(d.receiver.TrackInfo())
|
||||
d.logger.Debugw("downtrack bound")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user