-
Notifications
You must be signed in to change notification settings - Fork 317
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG] resendPacketOnNack() potentially putting RTP Packet back into wrong location in Rolling Buffer when RTP sequence overflows #1453
Comments
This is a very old issue. We encourage you to check if this is still an issue in the latest release and if you find that this is still a problem, please feel free to open a new one. |
This is a very old issue. We encourage you to check if this is still an issue in the latest release and if you find that this is still a problem, please feel free to open a new one. |
This is a very old issue. We encourage you to check if this is still an issue in the latest release and if you find that this is still a problem, please feel free to open a new one. |
This is a very old issue. We encourage you to check if this is still an issue in the latest release and if you find that this is still a problem, please feel free to open a new one. |
The ticket was not fixed. Please see new ticket #1991 |
Describe the bug
Observation, when nack count from chrome://webrtc-internals exceeds around 3.5k, chrome is no longer able to decode video.
When turning on logging lvl 1, the observation is that when resendPacketOnNack is called, RTP sequence number starts to roll back from 65535 (UINT16) to 0, and rolling buffer will complain about STATUS_ROLLING_BUFFER_NOT_IN_RANGE,
At first glance, it might seem to be the rolling buffer not handling the edge case where the index rolls back. However, after a closer
look. It might seem that the Rtp packet putting back into the rollingbuffer isn't the same as the one extracted.
Source:
https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c/blob/master/src/source/PeerConnection/Retransmitter.c
Item retrieved:
retStatus = rollingBufferExtractData(pSenderTranceiver->sender.packetBuffer->pRollingBuffer, pRetransmitter->validIndexList[index], &item);
Item put back:
retStatus =
rollingBufferInsertData(pSenderTranceiver->sender.packetBuffer->pRollingBuffer, pRetransmitter->sequenceNumberList[index], item);
Expected to be put back
retStatus =
rollingBufferInsertData(pSenderTranceiver->sender.packetBuffer->pRollingBuffer, pRetransmitter->validIndexList[index], item);
To Reproduce
Steps to reproduce the behavior:
Expected behavior
reendPacketOnNack() added back the correct RtpPacket back into the rolling buffer.
Screenshots
Additional context
Add any other context about the problem here.
The text was updated successfully, but these errors were encountered: