mirror of
https://github.com/livekit/livekit.git
synced 2026-05-14 20:35:27 +00:00
Need to set reference layer when starting with dummy packets. (#2034)
Dummy packets are used at start to trigger Pion's OnTrack.
This commit is contained in:
@@ -644,8 +644,6 @@ func (r *RTPStats) UpdateFromReceiverReport(rr rtcp.ReceptionReport) (rtt uint32
|
||||
if extHighestSNOverridden < r.sequenceNumber.GetExtendedStart() {
|
||||
// it is possible that the `LastSequenceNumber` in the receiver report is before the starting
|
||||
// sequence number when dummy packets are used to trigger Pion's OnTrack path.
|
||||
r.lastRRTime = time.Now()
|
||||
r.lastRR = rr
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1211,7 +1209,7 @@ func (r *RTPStats) DeltaInfo(snapshotId uint32) *RTPDeltaInfo {
|
||||
}
|
||||
|
||||
func (r *RTPStats) DeltaInfoOverridden(snapshotId uint32) *RTPDeltaInfo {
|
||||
if !r.params.IsReceiverReportDriven {
|
||||
if !r.params.IsReceiverReportDriven || r.lastRRTime.IsZero() {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -1786,8 +1786,11 @@ func (d *DownTrack) sendSilentFrameOnMuteForOpus() {
|
||||
AbsSendTimeExtID: uint8(d.absSendTimeExtID),
|
||||
TransportWideExtID: uint8(d.transportWideExtID),
|
||||
WriteStream: d.writeStream,
|
||||
Metadata: sendPacketMetadata{},
|
||||
OnSent: d.packetSent,
|
||||
Metadata: sendPacketMetadata{
|
||||
// although this is using empty frames, mark as padding as these are used to trigger Pion OnTrack only
|
||||
isPadding: true,
|
||||
},
|
||||
OnSent: d.packetSent,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -1454,6 +1454,15 @@ func (f *Forwarder) processSourceSwitch(extPkt *buffer.ExtPacket, layer int32) e
|
||||
"referenceLayerSpatial", f.referenceLayerSpatial,
|
||||
)
|
||||
return nil
|
||||
} else if f.referenceLayerSpatial == buffer.InvalidLayerSpatial {
|
||||
f.referenceLayerSpatial = layer
|
||||
f.logger.Debugw(
|
||||
"catch up forwarding",
|
||||
"sequenceNumber", extPkt.Packet.SequenceNumber,
|
||||
"timestamp", extPkt.Packet.Timestamp,
|
||||
"layer", layer,
|
||||
"referenceLayerSpatial", f.referenceLayerSpatial,
|
||||
)
|
||||
}
|
||||
|
||||
logTransition := func(message string, extExpectedTS, extRefTS, extLastTS uint64, diffSeconds float64) {
|
||||
|
||||
Reference in New Issue
Block a user