Skip to content

Commit 42e44be

Browse files
authored
Fix Transport-wide RTCP Feedback Message parsing (#2024)
* Fix Status Vector Chunk parsing * Fix test cases
1 parent 3824226 commit 42e44be

File tree

2 files changed

+15
-15
lines changed

2 files changed

+15
-15
lines changed

Diff for: src/source/PeerConnection/Rtcp.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ typedef enum {
3939
#define TWCC_RUNLEN_ISRECEIVED(packetChunk) TWCC_ISRECEIVED(TWCC_RUNLEN_STATUS_SYMBOL(packetChunk))
4040
#define TWCC_STATUSVECTOR_IS_2BIT(packetChunk) (((packetChunk) >> 14u) & 1u)
4141
#define TWCC_STATUSVECTOR_SSIZE(packetChunk) (TWCC_STATUSVECTOR_IS_2BIT(packetChunk) ? 2u : 1u)
42-
#define TWCC_STATUSVECTOR_SMASK(packetChunk) (TWCC_STATUSVECTOR_IS_2BIT(packetChunk) ? 2u : 1u)
42+
#define TWCC_STATUSVECTOR_SMASK(packetChunk) (TWCC_STATUSVECTOR_IS_2BIT(packetChunk) ? 3u : 1u)
4343
#define TWCC_STATUSVECTOR_STATUS(packetChunk, i) \
44-
(((packetChunk) >> (14u - (i) * TWCC_STATUSVECTOR_SSIZE(packetChunk))) & TWCC_STATUSVECTOR_SMASK(packetChunk))
44+
(((packetChunk) >> (14u - (i + 1) * TWCC_STATUSVECTOR_SSIZE(packetChunk))) & TWCC_STATUSVECTOR_SMASK(packetChunk))
4545
#define TWCC_STATUSVECTOR_COUNT(packetChunk) (TWCC_STATUSVECTOR_IS_2BIT(packetChunk) ? 7 : 14)
4646
#define TWCC_PACKET_STATUS_COUNT(payload) (getUnalignedInt16BigEndian((payload) + 10))
4747

Diff for: tst/RtcpFunctionalityTest.cpp

+13-13
Original file line numberDiff line numberDiff line change
@@ -369,41 +369,41 @@ TEST_F(RtcpFunctionalityTest, twccParsePacketTest)
369369
{
370370
parseTwcc("", 0, 0);
371371
parseTwcc("4487A9E754B3E6FD01810001147A75A62001C801", 1, 0);
372-
parseTwcc("4487A9E754B3E6FD12740004148566AAC1402C00", 1, 3);
373-
parseTwcc("4487A9E754B3E6FD04FA0006147CAF88C554B80400000001", 1, 5);
372+
parseTwcc("4487A9E754B3E6FD12740004148566AAC1402C00", 2, 2);
373+
parseTwcc("4487A9E754B3E6FD04FA0006147CAF88C554B80400000001", 5, 1);
374374
parseTwcc("4487A9E754B3E6FD00000002147972002002BC00", 2, 0);
375-
parseTwcc("4487A9E754B3E6FD06D40004147DDE41D6403C00FFEC0001", 2, 2);
376-
parseTwcc("4487A9E754B3E6FD04FA0006147CB089D95420FF9804000000000003", 2, 4);
375+
parseTwcc("4487A9E754B3E6FD06D40004147DDE41D6403C00FFEC0001", 4, 0);
376+
parseTwcc("4487A9E754B3E6FD04FA0006147CB089D95420FF9804000000000003", 6, 0);
377377
parseTwcc("4487A9E754B3E6FD000C000314797A052003E40004000003", 3, 0);
378-
parseTwcc("4487A9E754B3E6FD12740006148568ABD6648800FDA4000268000002", 3, 3);
379-
parseTwcc("4487A9E754B3E6FD1431000C14868C5A803CEC0028000002", 3, 9);
378+
parseTwcc("4487A9E754B3E6FD12740006148568ABD6648800FDA4000268000002", 6, 0);
379+
parseTwcc("4487A9E754B3E6FD1431000C14868C5A803CEC0028000002", 4, 8);
380380
parseTwcc("4487A9E754B3E6FD00020004147974012004140000000002", 4, 0);
381-
parseTwcc("4487A9E754B3E6FD12670008148560A8D66520016C00FD780402902800040002", 4, 4);
381+
parseTwcc("4487A9E754B3E6FD12670008148560A8D66520016C00FD780402902800040002", 8, 0);
382382
parseTwcc("4487A9E754B3E6FD012E0005147A45872005900000000401", 5, 0);
383383
parseTwcc("4487A9E754B3E6FD01F20006147AC6D22006600004000000", 6, 0);
384384
parseTwcc("4487A9E754B3E6FD06690007147D9111200748000000040000000003", 7, 0);
385385
parseTwcc("4487A9E754B3E6FD020C0008147AD3D8200898000000000008000002", 8, 0);
386386
parseTwcc("4487A9E754B3E6FD07C20009147E7B8B200990000800000000000001", 9, 0);
387387
parseTwcc("4487A9E754B3E6FD0177000A147A74A5200A70000000000000040000", 10, 0);
388-
parseTwcc("4487A9E754B3E6FD1431000C14868E5B2008E540DC00000000000000FE10002800000003", 10, 2);
388+
parseTwcc("4487A9E754B3E6FD1431000C14868E5B2008E540DC00000000000000FE10002800000003", 12, 0);
389389
parseTwcc("4487A9E754B3E6FD03C6000B147BEB6F200B3000380400000400040000000003", 11, 0);
390390
parseTwcc("4487A9E754B3E6FD02AB000D147B3013200D4800000004000000000000000401", 13, 0);
391391
parseTwcc("4487A9E754B3E6FD01BA000E147AA4C3200EA400000000000000000000000400", 14, 0);
392392
parseTwcc("4487A9E754B3E6FD0610000F147D62F3200FCC0000000000000400000000100000000003", 15, 0);
393393
parseTwcc("4487A9E754B3E6FD08120010147EAAA92010F80000000000000004040000000000000002", 16, 0);
394394
parseTwcc("4487A9E754B3E6FD05B80011147D33D52011F40014000000000000000000040000000001", 17, 0);
395-
parseTwcc("4487A9E754B3E6FD04DA001E147CAC86D556D999D6652009D40000000000EF840001040001DC0004D4000400031400", 17, 13);
395+
parseTwcc("4487A9E754B3E6FD04DA001E147CAC86D556D999D6652009D40000000000EF840001040001DC0004D4000400031400", 30, 0);
396396
parseTwcc("4487A9E754B3E6FD11EA0012148514932012B40000000000000400000000000000000000", 18, 0);
397397
parseTwcc("4487A9E754B3E6FD09BC0013147FC45D201348000400000000000000000000000000000000000003", 19, 0);
398398
parseTwcc("4487A9E754B3E6FD05720014147D05B7201414000000000000100000000000040000000400000002", 20, 0);
399399
parseTwcc("4487A9E754B3E6FD03820015147BBD5A201554000000000000000000000000000000000400009801", 21, 0);
400-
parseTwcc("4487A9E754B3E6FD114B001B1484B87381FF200DE41000000000000000000000000000000000140000000002", 21, 6);
400+
parseTwcc("4487A9E754B3E6FD114B001B1484B87381FF200DE41000000000000000000000000000000000140000000002", 22, 5);
401401
parseTwcc("4487A9E754B3E6FD0B6700161480DD11201678000000000000000000040000000000000000000000", 22, 0);
402402
parseTwcc("4487A9E754B3E6FD07790017147E4E6F2017D400000000000400000000000000000004000400080000000003", 23, 0);
403-
parseTwcc("4487A9E754B3E6FD114B001D1484BB74D5592014E4008400000000FD60100000000000000000000000000000000014", 24, 5);
403+
parseTwcc("4487A9E754B3E6FD114B001D1484BB74D5592014E4008400000000FD60100000000000000000000000000000000014", 29, 0);
404404
parseTwcc("4487A9E754B3E6FD1230002914854FA22027E4002400000000000400000000000000040000000000040000001C0000", 41, 0);
405-
parseTwcc("4487A9E754B3E6FD04B60036147CAA852024C002D999D6407800000000000000000000000000040000000000000000", 43, 11);
406-
parseTwcc("4487A9E754B3E6FD040200E4147C9F81202700B7E6649000000000000000000004000000000008000018000000001", 43, 185);
405+
parseTwcc("4487A9E754B3E6FD04B60036147CAA852024C002D999D6407800000000000000000000000000040000000000000000", 48, 6);
406+
parseTwcc("4487A9E754B3E6FD040200E4147C9F81202700B7E6649000000000000000000004000000000008000018000000001", 45, 183);
407407
}
408408

409409
TEST_F(RtcpFunctionalityTest, onRtcpPacketTwccReport)

0 commit comments

Comments
 (0)