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.