-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Add a configurable delay before sending NACK (II) #827
Conversation
We should subtract the whole bitrate of provisional layer.
This reverts commit f79d071.
…or from RtpStreamRecv from Producer - In `Producer.cpp` we use a constant `SendNackDelay{ 10u }` (ms). - In tests we use delay 0 since otherwise it's terribly hard to make them work.
@penguinol your thoughts about this? |
It's ok |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thx for looking at this @ibc
But given that the nack timer is 40ms can't it happen that after a lost packet it can take up to 50 ms to request a retransmission?
I don't know well this code so maybe i'm wrong but if that's the case i think it wouldn't be ideal.
Actually I didn't write the code of this PR but I don't understand your concern. Which timer do you mean? |
Ok, I see the timer of 40ms and I understand the question. @penguinol @jmillan thoughts? Problem here seems to be that, indeed, if a packet is lost (we receive SEQ 3, then SEQ 5 so SEQ 4 is lost) we don't send NACK for SEQ 4 immediately but instead wait at least 10ms, but the truth is that there is a 40ms timer meaning that such a NACK could be sent after 40ms or 50ms. However I have my doubts. If you see the // Check if there are any nacks that are waiting for this seq number.
std::vector<uint16_t> nackBatch = GetNackBatch(NackFilter::SEQ);
if (!nackBatch.empty())
this->listener->OnNackGeneratorNackRequired(nackBatch); and |
@ibc yes, you're right. |
Clear. Thanks. |
Same as #609 but with some additions:
NackGenerator
given byRtpStreamRecv
which receives it fromProducer
.Producer.cpp
we use a constantSendNackDelay{ 10u }
(ms).