Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions src/source/PeerConnection/Retransmitter.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,21 @@
#define LOG_CLASS "Retransmitter"

#include "../Include_i.h"
/**
Layout of Retransmitter
0 [ PSequenceNumberList ]
8 [ seqNumberListLen ]
12 [ validIndexList ]
16 [ PValidIndexList ]
24 (PSequenceNumberList) [ seq_num_0 ]
26 (PSequenceNumberList + 1) [ seq_num_1 ]
...
(PSequenceNumberList + seqNumListLen - 1) [ seq_num_{seqNumListLen - 1} ]
PValidIndexList = (PSequenceNumberList + seqNumListLen) [ valid_index_0 ]
(PValidIndexList + 1) [ valid_index_1 ]
...
(PValidIndexList + validIndexLen - 1) [ valid_index_{seqNumListLen - 1} ]
**/

STATUS createRetransmitter(UINT32 seqNumListLen, UINT32 validIndexListLen, PRetransmitter* ppRetransmitter)
{
Expand Down Expand Up @@ -104,8 +119,7 @@ STATUS resendPacketOnNack(PRtcpPacket pRtcpPacket, PKvsPeerConnection pKvsPeerCo
DLOGV("Resent packet ssrc %lu seq %lu failed 0x%08x", pRtpPacket->header.ssrc, pRtpPacket->header.sequenceNumber, retStatus);
}
// putBackPacketToRollingBuffer
retStatus =
rollingBufferInsertData(pSenderTranceiver->sender.packetBuffer->pRollingBuffer, pRetransmitter->sequenceNumberList[index], item);
retStatus = rollingBufferInsertData(pSenderTranceiver->sender.packetBuffer->pRollingBuffer, pRetransmitter->validIndexList[index], item);
CHK(retStatus == STATUS_SUCCESS || retStatus == STATUS_ROLLING_BUFFER_NOT_IN_RANGE, retStatus);

// free the packet if it is not in the valid range any more
Expand Down
6 changes: 3 additions & 3 deletions src/source/Rtcp/RtcpPacket.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ STATUS setRtcpPacketFromBytes(PBYTE pRawPacket, UINT32 pRawPacketsLen, PRtcpPack
return retStatus;
}

// Given a RTCP Packet list extract the list of SSRCes, since the list of SSRCes may not be know ahead of time (because of BLP)
// Given a RTCP Packet list extract the list of SSRCes, since the list of SSRCes may not be known ahead of time (because of BLP)
// we need to allocate the list dynamically
STATUS rtcpNackListGet(PBYTE pPayload, UINT32 payloadLen, PUINT32 pSenderSsrc, PUINT32 pReceiverSsrc, PUINT16 pSequenceNumberList,
PUINT32 pSequenceNumberListLen)
Expand All @@ -55,14 +55,14 @@ STATUS rtcpNackListGet(PBYTE pPayload, UINT32 payloadLen, PUINT32 pSenderSsrc, P
BLP = getInt16(*(PUINT16) (pPayload + i + 2));

// If pSsrcList is not NULL and we have space push and increment
if (pSequenceNumberList != NULL && sequenceNumberCount <= *pSequenceNumberListLen) {
if (pSequenceNumberList != NULL && sequenceNumberCount < *pSequenceNumberListLen) {
pSequenceNumberList[sequenceNumberCount] = currentSequenceNumber;
}
sequenceNumberCount++;

for (j = 0; j < 16; j++) {
if ((BLP & (1 << j)) >> j) {
if (pSequenceNumberList != NULL && sequenceNumberCount <= *pSequenceNumberListLen) {
if (pSequenceNumberList != NULL && sequenceNumberCount < *pSequenceNumberListLen) {
pSequenceNumberList[sequenceNumberCount] = (currentSequenceNumber + j + 1);
}
sequenceNumberCount++;
Expand Down
1 change: 1 addition & 0 deletions tst/RtcpFunctionalityTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ TEST_F(RtcpFunctionalityTest, onRtcpPacketCompoundNack)
freeRtpPacket(&pRtpPacket);
}


TEST_F(RtcpFunctionalityTest, onRtcpPacketCompound)
{
KvsPeerConnection peerConnection{};
Expand Down