mirror of
https://github.com/livekit/livekit.git
synced 2026-05-14 20:35:27 +00:00
retransmit dd extension (#837)
This commit is contained in:
+14
-2
@@ -453,8 +453,9 @@ func (d *DownTrack) WriteRTP(extPkt *buffer.ExtPacket, layer int32) error {
|
||||
}
|
||||
}
|
||||
|
||||
var meta *packetMeta
|
||||
if d.sequencer != nil {
|
||||
meta := d.sequencer.push(extPkt.Packet.SequenceNumber, tp.rtp.sequenceNumber, tp.rtp.timestamp, int8(layer))
|
||||
meta = d.sequencer.push(extPkt.Packet.SequenceNumber, tp.rtp.sequenceNumber, tp.rtp.timestamp, int8(layer))
|
||||
if meta != nil && tp.vp8 != nil {
|
||||
meta.packVP8(tp.vp8.Header)
|
||||
}
|
||||
@@ -466,6 +467,10 @@ func (d *DownTrack) WriteRTP(extPkt *buffer.ExtPacket, layer int32) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if meta != nil && d.dependencyDescriptorID != 0 {
|
||||
meta.ddBytes = hdr.GetExtension(uint8(d.dependencyDescriptorID))
|
||||
}
|
||||
|
||||
_, err = d.writeStream.WriteRTP(hdr, payload)
|
||||
if err == nil {
|
||||
pktSize := hdr.MarshalSize() + len(payload)
|
||||
@@ -1263,7 +1268,14 @@ func (d *DownTrack) retransmitPackets(nacks []uint16) {
|
||||
}
|
||||
}
|
||||
|
||||
err = d.writeRTPHeaderExtensions(&pkt.Header)
|
||||
var extraExtensions []extensionData
|
||||
if len(meta.ddBytes) > 0 {
|
||||
extraExtensions = append(extraExtensions, extensionData{
|
||||
id: uint8(d.dependencyDescriptorID),
|
||||
payload: meta.ddBytes,
|
||||
})
|
||||
}
|
||||
err = d.writeRTPHeaderExtensions(&pkt.Header, extraExtensions...)
|
||||
if err != nil {
|
||||
d.logger.Errorw("writing rtp header extensions err", err)
|
||||
continue
|
||||
|
||||
@@ -53,6 +53,8 @@ type packetMeta struct {
|
||||
layer int8
|
||||
// Information that differs depending on the codec
|
||||
misc uint64
|
||||
// Dependency Descriptor of packet
|
||||
ddBytes []byte
|
||||
}
|
||||
|
||||
func (p *packetMeta) packVP8(vp8 *buffer.VP8) {
|
||||
|
||||
Reference in New Issue
Block a user