Skip to content

Resolve "rtpsession: Drops all NACKS if the list is larger remaining space"

In order to fix this issue, I have separated the storage of the SEQNUM from the creation of of the FB NACK. That gives the ability to create an optimal set of FB NACK. Another aspect of this issue is that NACK may expired between two packets. So in parallel to the NACKs I now store the deadline (now + max_delay) and cleanup any outdated entry prior to creating the packet.

While writing the unit tests, I found many races condition (e.g. would fail every 100 try). I have cherry-picked some fixes from Pexip repositories.

I also discovered that the only way to alter the creation of the FB NACK was by parsing them, removing them and re-adding them. This is sub-optional, so I allowed myself to add an extra action signal. This is needed if you want to implement custom NACK format (using APP FB), as found in RIST and some proprietary RTP extensions.

Closes #583 (closed)

cc @cap @hgr @fludkov @gkiagia

Edited by Nicolas Dufresne

Merge request reports