various performance improvements (#561)

This commit is contained in:
Alessandro Ros
2024-05-05 11:20:22 +02:00
committed by GitHub
parent 8c26f5f00a
commit 9da49cdf63
5 changed files with 26 additions and 6 deletions

View File

@@ -136,7 +136,7 @@ func (f *H264) PTSEqualsDTS(pkt *rtp.Packet) bool {
case 24: // STAP-A
payload := pkt.Payload[1:]
for len(payload) > 0 {
for {
if len(payload) < 2 {
return false
}
@@ -156,6 +156,10 @@ func (f *H264) PTSEqualsDTS(pkt *rtp.Packet) bool {
case h264.NALUTypeIDR, h264.NALUTypeSPS, h264.NALUTypePPS:
return true
}
if len(payload) == 0 {
break
}
}
case 28: // FU-A

View File

@@ -142,7 +142,7 @@ func (f *H265) PTSEqualsDTS(pkt *rtp.Packet) bool {
case h265.NALUType_AggregationUnit:
payload := pkt.Payload[2:]
for len(payload) > 0 {
for {
if len(payload) < 2 {
return false
}
@@ -163,6 +163,10 @@ func (f *H265) PTSEqualsDTS(pkt *rtp.Packet) bool {
h265.NALUType_VPS_NUT, h265.NALUType_SPS_NUT, h265.NALUType_PPS_NUT:
return true
}
if len(payload) == 0 {
break
}
}
case h265.NALUType_FragmentationUnit:

View File

@@ -126,7 +126,7 @@ func (d *Decoder) decodeNALUs(pkt *rtp.Packet) ([][]byte, error) {
payload := pkt.Payload[1:]
for len(payload) > 0 {
for {
if len(payload) < 2 {
return nil, fmt.Errorf("invalid STAP-A packet (invalid size)")
}
@@ -145,6 +145,10 @@ func (d *Decoder) decodeNALUs(pkt *rtp.Packet) ([][]byte, error) {
nalus = append(nalus, payload[:size])
payload = payload[size:]
if len(payload) == 0 {
break
}
}
if nalus == nil {

View File

@@ -67,7 +67,7 @@ func (d *Decoder) decodeNALUs(pkt *rtp.Packet) ([][]byte, error) {
payload := pkt.Payload[2:]
for len(payload) > 0 {
for {
if len(payload) < 2 {
return nil, fmt.Errorf("invalid aggregation unit (invalid size)")
}
@@ -81,6 +81,10 @@ func (d *Decoder) decodeNALUs(pkt *rtp.Packet) ([][]byte, error) {
nalus = append(nalus, payload[:size])
payload = payload[size:]
if len(payload) == 0 {
break
}
}
if nalus == nil {

View File

@@ -191,7 +191,7 @@ outer:
return nil, fmt.Errorf("JPEG type %d is not supported", sof.Type)
}
if data == nil {
if len(data) == 0 {
return nil, fmt.Errorf("image data not found")
}
@@ -211,7 +211,7 @@ outer:
offset := 0
var ret []*rtp.Packet
for len(data) > 0 {
for {
var buf []byte
jh.FragmentOffset = uint32(offset)
@@ -266,6 +266,10 @@ outer:
Payload: buf,
})
e.sequenceNumber++
if len(data) == 0 {
break
}
}
return ret, nil