Updated Test_TrackLocalStatic_Padding test

Use custom packetizer in Test_TrackLocalStatic_Padding to verify that
padding added in different ways works.
This commit is contained in:
sirzooro
2025-06-12 07:44:49 +02:00
parent 6f6038b022
commit f5d98ceac9

View File

@@ -271,6 +271,37 @@ func BenchmarkTrackLocalWrite(b *testing.B) {
}
}
type TestPacketizer struct {
rtp.Packetizer
checked [3]bool
}
func (p *TestPacketizer) GeneratePadding(samples uint32) []*rtp.Packet {
packets := p.Packetizer.GeneratePadding(samples)
for _, packet := range packets {
// Reset padding to ensure we control it
packet.Header.PaddingSize = 0
packet.PaddingSize = 0
packet.Payload = nil
p.checked[packet.SequenceNumber%3] = true
switch packet.SequenceNumber % 3 {
case 0:
// Recommended way to add padding
packet.Header.PaddingSize = 255
case 1:
// This was used as a workaround so has to be supported too
packet.Payload = make([]byte, 255)
packet.Payload[254] = 255
case 2:
// This field is deprecated but still used by some clients
packet.PaddingSize = 255
}
}
return packets
}
func Test_TrackLocalStatic_Padding(t *testing.T) {
mediaEngineOne := &MediaEngine{}
assert.NoError(t, mediaEngineOne.RegisterCodec(RTPCodecParameters{
@@ -333,6 +364,10 @@ func Test_TrackLocalStatic_Padding(t *testing.T) {
exit := false
// Use a custom packetizer that generates packets with padding in a few different ways
packetizer := &TestPacketizer{Packetizer: track.packetizer}
track.packetizer = packetizer
for !exit {
select {
case <-time.After(1 * time.Millisecond):
@@ -343,6 +378,8 @@ func Test_TrackLocalStatic_Padding(t *testing.T) {
}
closePairNow(t, offerer, answerer)
assert.Equal(t, [3]bool{true, true, true}, packetizer.checked)
}
func Test_TrackLocalStatic_RTX(t *testing.T) {