Parse rtp extension from padding only empty packet

This commit is contained in:
arjunshajitech
2026-04-17 00:14:14 +05:30
committed by arjun shaji
parent ae0a731cbb
commit f857501780
2 changed files with 35 additions and 5 deletions
+3 -5
View File
@@ -432,12 +432,10 @@ func handleUnknownRTPPacket(
return mid, rid, rsid, false, err
}
if rp.Padding && len(rp.Payload) == 0 {
return mid, rid, rsid, true, nil
}
isPaddingOnlyPacket := rp.Padding && len(rp.Payload) == 0
if !rp.Header.Extension {
return mid, rid, rsid, false, nil
return mid, rid, rsid, isPaddingOnlyPacket, nil
}
if payload := rp.GetExtension(midExtensionID); payload != nil {
@@ -452,5 +450,5 @@ func handleUnknownRTPPacket(
rsid = string(payload)
}
return mid, rid, rsid, false, nil
return mid, rid, rsid, isPaddingOnlyPacket, nil
}
+32
View File
@@ -273,3 +273,35 @@ func Test_RTPTransceiver_UnattachedRTX(t *testing.T) {
closePairNow(t, offerPC, answerPC)
}
func Test_ParseExtensionFromPaddingOnlyPacket(t *testing.T) {
buf := []byte{
176, 114, 15, 39, 0, 0, 0, 0, 209, 108, 221, 2, 190,
222, 0, 2, 64, 49, 176, 102, 49, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,
}
mid, rid, rsid, paddingOnly, err := handleUnknownRTPPacket(
buf, uint8(4),
uint8(10),
uint8(11),
)
assert.NoError(t, err)
assert.Equal(t, mid, "1")
assert.Equal(t, rid, "")
assert.Equal(t, rsid, "f")
assert.Equal(t, paddingOnly, true)
}