roc-streaming / roc-toolkit

Real-time audio streaming over the network.
https://roc-streaming.org
Mozilla Public License 2.0
1.05k stars 205 forks source link

convolutional (streaming) FEC #467

Open gmaxwell opened 2 years ago

gmaxwell commented 2 years ago

For low latency, you can get better loss tolerance for a given delay from a convolutional code such as https://github.com/catid/CauchyCaterpillar ... You may want to consider using this FEC (or one like it int he future):

As, https://hal.inria.fr/hal-01395937v2/document shows: streaming FEC can "reduce the FEC-related latency by an order of magnitude while keeping similar erasure recovery performance". https://faculty.engineering.asu.edu/mre/wp-content/uploads/sites/31/2020/02/CRLNC.pdf has a more extensive evaluation of this kind of short window streaming FEC.

(the same author has a block FEC called wirehair which requires much lower overhead than LDPC-staircase esp for small numbers of packets).

baranovmv commented 2 years ago

@gmaxwell Thank you for the good idea. I think we'd start with integrating CauchyCaterpillar

gavv commented 1 year ago

Yes, I think we definitely should try it and compare performance with Reed Solomon.

Unlike Reed Solomon and LDPC, it seems the codec and protocol are not standardized, right?

gavv commented 1 year ago

For now I'll add help wanted tag so that someone could pick this up; maybe a bit later I'll have time for this by myself.

This issue describe details on incorporating a new FEC implementation: #236