rtpreorderer: return all buffered packets when the buffer is full

(https://github.com/aler9/rtsp-simple-server/issues/1049)
This commit is contained in:
aler9
2022-07-23 13:10:20 +02:00
parent 937b36cfb1
commit 2d5211f734
2 changed files with 83 additions and 25 deletions

View File

@@ -155,21 +155,6 @@ func TestReorder(t *testing.T) {
},
},
},
{
// buffer is full
&rtp.Packet{
Header: rtp.Header{
SequenceNumber: 67,
},
},
[]*rtp.Packet{
{
Header: rtp.Header{
SequenceNumber: 67,
},
},
},
},
}
r := New()
@@ -180,3 +165,50 @@ func TestReorder(t *testing.T) {
require.Equal(t, entry.out, out)
}
}
func TestBufferIsFull(t *testing.T) {
r := New()
r.absPos = 25
out := r.Process(&rtp.Packet{
Header: rtp.Header{
SequenceNumber: 1,
},
})
require.Equal(t, []*rtp.Packet{{
Header: rtp.Header{
SequenceNumber: 1,
},
}}, out)
var expected []*rtp.Packet
for i := uint16(0); i < 63; i++ {
out := r.Process(&rtp.Packet{
Header: rtp.Header{
SequenceNumber: 3 + i,
},
})
require.Equal(t, []*rtp.Packet(nil), out)
expected = append(expected, &rtp.Packet{
Header: rtp.Header{
SequenceNumber: 3 + i,
},
})
}
out = r.Process(&rtp.Packet{
Header: rtp.Header{
SequenceNumber: 3 + 64,
},
})
expected = append(expected, &rtp.Packet{
Header: rtp.Header{
SequenceNumber: 3 + 64,
},
})
require.Equal(t, expected, out)
}