quiet / libcorrect

C library for Convolutional codes and Reed-Solomon

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Quickstart usage

mikeyg123 opened this issue · comments

I must be really dumb but I find it impossible to understand how to start using this without knowing the details about roots of polynomials etc.

I've searched the issues and the code and found similar questions but nothing that helps

Could you possibly create pair of small example functions and add them to the README:

  • One which takes a message of length n bytes and adds p parity (is that the right word) bits,
  • One which takes an array of length n+p and writes out the original n byte message either in-place or to a different array.
    Reed-soloman or convolutional - it doesn't matter

That would help enormously - I'm lost at sea
Thank you

Hi!

Sorry to hear you're feeling frustrated. I've wanted to create examples but I haven't got around to it yet.

There is something like an example in the tests here but it's not super easy to read. The Reed-solomon create() function is unfortunately somewhat complicated, but if you're not trying to interop with an existing RS setup, you don't need to worry too much about it. You can pick any of the polynomials and use 1 and 1 for FCR and root gap. num_roots is how many parity bytes you get.

What kind of lossiness are you transmitting through? Is it analog at all?

Brian

Thanks, that helps, hopefully I'll get it working soon.
The link is radio and the losses are hugely variable and possibly bursty.
The channel also carries audio data using codecs that degrade reasonably gracefully with increased error rate. So rather than use the theoretical BER from some particular S/N ratio; my plan is to experimentally determine the bit error rate at the point where the other streams become unusable and tune my data channel to that.
The other issue is that the frames used by the modem are less than 100 bits and I'd like to make each frame stand alone while using every bit possible. For efficiency and convenience if I need to request re-transmission I'd like to do it for individual frames rather blocks of several frames.
This is all early days yet. My first step was to find a FEC library in C with minimal dependencies and a compatible licence - so thanks!