fix wrong size being reported in error messages (#740)

This commit is contained in:
Alessandro Ros
2025-03-27 11:34:23 +01:00
committed by GitHub
parent 20b6d71e58
commit 4b0fe4f7d2
9 changed files with 32 additions and 13 deletions

View File

@@ -83,8 +83,10 @@ func (d *Decoder) decodeOBUs(pkt *rtp.Packet) ([][]byte, error) {
d.fragmentsSize += len(av1header.OBUElements[0])
if d.fragmentsSize > av1.MaxTemporalUnitSize {
errSize := d.fragmentsSize
d.resetFragments()
return nil, fmt.Errorf("temporal unit size (%d) is too big, maximum is %d", d.fragmentsSize, av1.MaxTemporalUnitSize)
return nil, fmt.Errorf("temporal unit size (%d) is too big, maximum is %d",
errSize, av1.MaxTemporalUnitSize)
}
d.fragments = append(d.fragments, av1header.OBUElements[0])
@@ -108,9 +110,10 @@ func (d *Decoder) decodeOBUs(pkt *rtp.Packet) ([][]byte, error) {
d.fragmentsSize += len(av1header.OBUElements[elementCount-1])
if d.fragmentsSize > av1.MaxTemporalUnitSize {
errSize := d.fragmentsSize
d.resetFragments()
return nil, fmt.Errorf("temporal unit size (%d) is too big, maximum is %d",
d.fragmentsSize, av1.MaxTemporalUnitSize)
errSize, av1.MaxTemporalUnitSize)
}
d.fragments = append(d.fragments, av1header.OBUElements[elementCount-1])
@@ -154,11 +157,12 @@ func (d *Decoder) Decode(pkt *rtp.Packet) ([][]byte, error) {
}
if (d.frameBufferSize + addSize) > av1.MaxTemporalUnitSize {
errSize := d.frameBufferSize + addSize
d.frameBuffer = nil
d.frameBufferLen = 0
d.frameBufferSize = 0
return nil, fmt.Errorf("temporal unit size (%d) is too big, maximum is %d",
d.frameBufferSize+addSize, av1.MaxOBUsPerTemporalUnit)
errSize, av1.MaxOBUsPerTemporalUnit)
}
d.frameBuffer = append(d.frameBuffer, obus...)

View File

@@ -130,8 +130,10 @@ func (d *Decoder) decodeNALUs(pkt *rtp.Packet) ([][]byte, error) {
d.fragmentsSize += len(pkt.Payload[2:])
if d.fragmentsSize > h264.MaxAccessUnitSize {
errSize := d.fragmentsSize
d.resetFragments()
return nil, fmt.Errorf("NALU size (%d) is too big, maximum is %d", d.fragmentsSize, h264.MaxAccessUnitSize)
return nil, fmt.Errorf("NALU size (%d) is too big, maximum is %d",
errSize, h264.MaxAccessUnitSize)
}
d.fragments = append(d.fragments, pkt.Payload[2:])
@@ -227,11 +229,12 @@ func (d *Decoder) Decode(pkt *rtp.Packet) ([][]byte, error) {
}
if (d.frameBufferSize + addSize) > h264.MaxAccessUnitSize {
errSize := d.frameBufferSize + addSize
d.frameBuffer = nil
d.frameBufferLen = 0
d.frameBufferSize = 0
return nil, fmt.Errorf("access unit size (%d) is too big, maximum is %d",
d.frameBufferSize+addSize, h264.MaxAccessUnitSize)
errSize, h264.MaxAccessUnitSize)
}
d.frameBuffer = append(d.frameBuffer, nalus...)

View File

@@ -137,8 +137,10 @@ func (d *Decoder) decodeNALUs(pkt *rtp.Packet) ([][]byte, error) {
d.fragmentsSize += len(pkt.Payload[3:])
if d.fragmentsSize > h265.MaxAccessUnitSize {
errSize := d.fragmentsSize
d.resetFragments()
return nil, fmt.Errorf("NALU size (%d) is too big, maximum is %d", d.fragmentsSize, h265.MaxAccessUnitSize)
return nil, fmt.Errorf("NALU size (%d) is too big, maximum is %d",
errSize, h265.MaxAccessUnitSize)
}
d.fragments = append(d.fragments, pkt.Payload[3:])
@@ -186,11 +188,12 @@ func (d *Decoder) Decode(pkt *rtp.Packet) ([][]byte, error) {
}
if (d.frameBufferSize + addSize) > h265.MaxAccessUnitSize {
errSize := d.frameBufferSize + addSize
d.frameBuffer = nil
d.frameBufferLen = 0
d.frameBufferSize = 0
return nil, fmt.Errorf("access unit size (%d) is too big, maximum is %d",
d.frameBufferSize+addSize, h265.MaxAccessUnitSize)
errSize, h265.MaxAccessUnitSize)
}
d.frameBuffer = append(d.frameBuffer, nalus...)

View File

@@ -139,10 +139,11 @@ func (d *Decoder) Decode(pkt *rtp.Packet) ([]byte, error) {
addSize := len(slice)
if (d.sliceBufferSize + addSize) > maxFrameSize {
errSize := d.sliceBufferSize + addSize
d.sliceBuffer = nil
d.sliceBufferSize = 0
return nil, fmt.Errorf("frame size (%d) is too big, maximum is %d",
d.sliceBufferSize+addSize, maxFrameSize)
errSize, maxFrameSize)
}
d.sliceBuffer = append(d.sliceBuffer, slice)

View File

@@ -85,9 +85,10 @@ func (d *Decoder) decodeGeneric(pkt *rtp.Packet) ([][]byte, error) {
d.fragmentsSize += int(dataLens[0])
if d.fragmentsSize > mpeg4audio.MaxAccessUnitSize {
errSize := d.fragmentsSize
d.resetFragments()
return nil, fmt.Errorf("access unit size (%d) is too big, maximum is %d",
d.fragmentsSize, mpeg4audio.MaxAccessUnitSize)
errSize, mpeg4audio.MaxAccessUnitSize)
}
d.fragments = append(d.fragments, payload[:dataLens[0]])

View File

@@ -25,9 +25,10 @@ func (d *Decoder) decodeLATM(pkt *rtp.Packet) ([][]byte, error) {
// there could be other data, due to otherDataPresent. Ignore it.
} else {
if pl > mpeg4audio.MaxAccessUnitSize {
errSize := pl
d.resetFragments()
return nil, fmt.Errorf("access unit size (%d) is too big, maximum is %d",
pl, mpeg4audio.MaxAccessUnitSize)
errSize, mpeg4audio.MaxAccessUnitSize)
}
d.fragments = append(d.fragments, buf)

View File

@@ -61,8 +61,10 @@ func (d *Decoder) Decode(pkt *rtp.Packet) ([]byte, error) {
d.fragmentsSize += len(pkt.Payload)
if d.fragmentsSize > mpeg4video.MaxFrameSize {
errSize := d.fragmentsSize
d.resetFragments()
return nil, fmt.Errorf("frame size (%d) is too big, maximum is %d", d.fragmentsSize, mpeg4video.MaxFrameSize)
return nil, fmt.Errorf("frame size (%d) is too big, maximum is %d",
errSize, mpeg4video.MaxFrameSize)
}
d.fragments = append(d.fragments, pkt.Payload)

View File

@@ -92,8 +92,10 @@ func (d *Decoder) Decode(pkt *rtp.Packet) ([]byte, error) {
d.fragmentsSize += len(vpkt.Payload)
if d.fragmentsSize > vp8.MaxFrameSize {
errSize := d.fragmentsSize
d.resetFragments()
return nil, fmt.Errorf("frame size (%d) is too big, maximum is %d", d.fragmentsSize, vp8.MaxFrameSize)
return nil, fmt.Errorf("frame size (%d) is too big, maximum is %d",
errSize, vp8.MaxFrameSize)
}
d.fragments = append(d.fragments, vpkt.Payload)

View File

@@ -87,8 +87,10 @@ func (d *Decoder) Decode(pkt *rtp.Packet) ([]byte, error) {
d.fragmentsSize += len(vpkt.Payload)
if d.fragmentsSize > vp9.MaxFrameSize {
errSize := d.fragmentsSize
d.resetFragments()
return nil, fmt.Errorf("frame size (%d) is too big, maximum is %d", d.fragmentsSize, vp9.MaxFrameSize)
return nil, fmt.Errorf("frame size (%d) is too big, maximum is %d",
errSize, vp9.MaxFrameSize)
}
d.fragments = append(d.fragments, vpkt.Payload)