interceptor icon indicating copy to clipboard operation
interceptor copied to clipboard

Continued NACK Improvements

Open Sean-Der opened this issue 5 years ago • 3 comments

  • Currently nack is sent in a fixed intervals.
  • There is no limit for how many times a nack will be sent for a single packet (current implementation sends nacks as long as either the packet arrives, or the packet is older than max sequence number - buffer size)
  • Nacked packets/nack requests are sent using the same PayloadType as normal rtp packets. It is possbile to send them in a dedicated feedback stream. This is much more complicated, and current implementation works, so it should definietly be an improvement in a separate issue.

Sean-Der avatar Dec 04 '20 22:12 Sean-Der

Is it normal that the NACK SSRC is random? https://github.com/pion/interceptor/blob/0ee4264763aea2c10d447866f4916982d8e2346c/pkg/nack/generator_interceptor.go#L116

I didn't saw the specification, but the receiver SSRC should be shared between reports and nacks, therefore it is random but at a higher level.

Edit: i realized that interceptors work with a variable number of streams, therefore they must be able to generate SSRCs - but they must be shared between NACKs and receiver reports. We have to find a way to make it so.

aler9 avatar Dec 26 '20 21:12 aler9

@aler9 I think the best way to do this is the Option pattern we use in Pion.

You can see it in GeneratorOption there is also a ResponderOption in the same directory. Instead of doing a 'Configuration Struct' or a bunch of function arguments we do this.

We should add one to set the SSRC. If one isn't set then we can do random!

Sean-Der avatar Dec 28 '20 06:12 Sean-Der