mirror of
https://github.com/aler9/gortsplib
synced 2025-10-27 17:21:22 +08:00
various performance improvements (#561)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user