From a66c1a8bdfb11eb8686a6c67c7b8cf9633dc6a7a Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Sun, 7 Mar 2021 21:42:33 +0100 Subject: [PATCH] rtph264: reset decoder state in case of error --- pkg/rtph264/decoder.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/rtph264/decoder.go b/pkg/rtph264/decoder.go index 30f579dc..ac24fab6 100644 --- a/pkg/rtph264/decoder.go +++ b/pkg/rtph264/decoder.go @@ -141,15 +141,18 @@ func (d *Decoder) Decode(byts []byte) ([]*NALUAndTimestamp, error) { pkt := rtp.Packet{} err := pkt.Unmarshal(byts) if err != nil { + d.state = decoderStateInitial return nil, err } if len(pkt.Payload) < 2 { + d.state = decoderStateInitial return nil, fmt.Errorf("Invalid FU-A packet") } typ := NALUType(pkt.Payload[0] & 0x1F) if typ != NALUTypeFuA { + d.state = decoderStateInitial return nil, fmt.Errorf("non-starting NALU is not FU-A") } end := (pkt.Payload[1] >> 6) & 0x01