3
votes

I have an application in which I need to use error correction. I am uncertain as to which approach makes the most sense. Reed Solomon seems to be the most popular choice but I thought I'd just list my environment to see if something else comes up.

I have a potentially very noisy data stream with 50% data loss and occassional synchronization loss problems. The sender will repeat the data many times. The receiver can read multiple copies of the data, but each one is subject to a different loss and may have pieces of the data missing. In each each data block I can generally determine which bytes have been lost due to transmission, but the error correction should also include a way to verify and correct the entire data block.

When I say pieces are missing I mean a synchronization loss. I will drop out of the data stream and come back in at some arbitrary point later. There is no way to tell where I am in the stream without some kind of marker codes. These I can add myself, but if there is a standard approach here as well, that would be nice.

If Reed-Solomon is the way to go, does somebody know of a good C++ implementation?

1
is it possible to see how it is done in TCP? Would that help? - Default
TCP just uses checksums to see if something is wrong. It won't actually do error correction (it simply requests the packet again). - edA-qa mort-ora-y
Check out openfec.org I dont know how well it works. - rve

1 Answers

-1
votes

Source code of Reed-Solomon: http://sourceforge.net/projects/rscode/

However, for 50% data loss rate, I think turbo code or LDPC will have better performance than Reed-Solomon.