retransmit dd extension (#837)

This commit is contained in:
cnderrauber
2022-07-18 13:06:33 +08:00
committed by GitHub
parent e0676132d4
commit aee97c68bc
2 changed files with 16 additions and 2 deletions
+14 -2
View File
@@ -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
+2
View File
@@ -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) {