This project is the implementation in Python of the iterative encoding and iterative decoding algorithms of the LT Codes, an error correction code based on the principles of Fountain Codes.
The encoder and decoder are optimized to handle big transfers for files between 1MB to 1GB at high speed.
Usage (python 3.x):
python lt_codes.py filename [-h] [-r REDUNDANCY] [--systematic] [--verbose] [--x86]
An example describing how to use the implementation is in lt_codes.py. However:
core.pycontains the Symbol class, constants and functions that are used in both encoding and decoding.distributions.pycontains the two functions that generate degrees based on the ideal soliton and robust soliton distributionsencoder.pycontains the encoding algorithmdecoder.pycontains the decoding algorithmmd5_checker.shcallslt_codes.pyand then compare the integrity of the original file with the newly created file. The integrity check is made withmd5sum.exe, remove the ".exe" if you work on Unix.
The time consumed by the encoding and decoding process is completely related to the size of the file to encode and the wanted redundancy. I have made some measure on an Intel i5 @ 2.30GHz with a 1.5 redundancy :
| Size (MB) | Blocks | Symbols | Encoding | Decoding | ||
| Time (s) | Speed (MB/s) | Time (s) | Speed (MB/s) | |||
| 1 | 16 | 24 | 0.00 | - | 0.00 | - |
| 100 | 1600 | 2400 | 0.21 | 476.1 | 0.31 | 322.5 |
| 1200 | 19200 | 28800 | 3.86 | 310.8 | 39.82 | 30.1 |
| 2000 | 32000 | 48000 | 6.44 | 310.5 | 104.10 | 19.2 |
| 3600 | 57600 | 86400 | 23.14 | 155.5 | 426.36 | 8.4 |
