-
-
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
Fix consumer NACK with the specified sequence number packet but the retransmission fails #912
Conversation
Would you please add a couple of TEST in the NackGenerator test file to confirm the fixes? https://github.com/versatica/mediasoup/blob/master/worker/test/src/RTC/TestNackGenerator.cpp |
I am a bit worried given that these changes make our |
In fact libwebrtc will pass all rtx packets to decoder not matter whether it's ahead of rtp packet, as follow: But we need to drop the duplicate packets. The RTX packets arrivered ahead will increase the number of repaired packet in statistic. But i think it will not effect the packet loss in RR. |
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.
I don't understand. If we let packet RTX which, once decoded, has real seq 1000, and later real packet seq 1000 arrives, it's gonna be discarded by the remote decoder. Do I miss something?
Yes, libwebrtc will ignore dulpicate rtp packet. |
What I mean is that mediasoup can not leave RTC with internal seq greater than highest seen pass because those packets do not contain a real video frame. If we let them pass them real packets with same seq sent later will be ignored by the receiver. |
@ibc libwebrtc will resend rtp packet in rtx for probing before we sending nack, so there is valid video frame in these packets. If the situation you described does exist, discard rtx greater than highest seen also can not avoid it, for example: |
So in summary:
Is it correct? BTW @ggarber, weren't you working in a PR that makes mediasoup discard packets with no payload? How could that affect here? |
@penguinol I've updated the title of this PR and the description by adding this:
Is it correct? |
|
Update: Filter duplicate rtp packet. |
@penguinol, what's the status of this PR? Could you please update the issue description with a detailed description? |
@jmillan Tried to merge newest code to this branch, but failed. I'll create another PR later. |
libwebrtc may send duplicate rtx packets to estimate bandwidth. When there is packet loss, we may receive rtx packet with seq higher than rtp packet.