Skip to content

Commit

Permalink
Update packet_factory.go
Browse files Browse the repository at this point in the history
fix: reduce heap memory usage to prevent excessive GC CPU pressure
  • Loading branch information
nithu1991 authored Oct 23, 2024
1 parent d34a3c5 commit fe32aa8
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions internal/rtpbuffer/packet_factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,9 @@ func (m *PacketFactoryCopy) NewPacket(header *rtp.Header, payload []byte, rtxSsr
return nil, errFailedToCastPayloadPool
}

size := copy(*p.buffer, payload)
p.payload = (*p.buffer)[:size]
buf := (*p.buffer)[:0]
size := copy(buf, payload)
p.payload = buf[:size]
}

if rtxSsrc != 0 && rtxPayloadType != 0 {
Expand All @@ -91,9 +92,11 @@ func (m *PacketFactoryCopy) NewPacket(header *rtp.Header, payload []byte, rtxSsr
}

// Write the original sequence number at the beginning of the payload.
payload := make([]byte, 2)
binary.BigEndian.PutUint16(payload, originalSequenceNumber)
p.payload = append(payload, p.payload[:len(p.payload)-paddingLength]...)
payloadLen := 2 + len(p.payload) - paddingLength
newPayload := make([]byte, payloadLen)
binary.BigEndian.PutUint16(newPayload[:2], originalSequenceNumber)
copy(newPayload[2:], p.payload[:len(p.payload)-paddingLength])
p.payload = newPayload
}

return p, nil
Expand Down

0 comments on commit fe32aa8

Please sign in to comment.