obolo / freeraptor Goto Github PK
View Code? Open in Web Editor NEWA free and open implementation of Raptor codes
A free and open implementation of Raptor codes
When I tried this program by setting K = 64 or 128, the precoding matrix became singular, which was quite abnormal as rfc5053 guaranteed that the matrix must be invertible.
The bug comes from the way of defining S (the number of LDPC symbols) in r10_compute_params of raptor10.c. It doesn't match the definition in rfc5053, where S is the smallest prime integer such that S >= ceil(0.01*K) + X.
As the guidelines in RC5053 specify, build the so called generator matrix A, needed for obtaining the intermediate symbols.
A test main to be built in the Makefile. Just for building something.
The types used by the raptor encoder/decoder need to be set up, along with the basic functions
The path of execution in r10_multiplication depends on the value of variable beg. The said value is set once and never modified later. Unsurprisingly that results in one operation res_block[i + t] = res_block[i + t] ^ block[j + t];
never being executed.
Currently raptor10.c contains many arguments to the functions which are never accessed or variables which are assigned value and again, ignored later.
While it would be trivial to simply delete them, they might indicate incomplete implementation of the RFC. For this reason, they should be reviewed one by one. Not to overcrowd the issue list, I created a list of functions to review. An element should be marked as complete, once all arguments and variables are accessed or it is clearly stated in the comment why they are not.
The Raptor10 structure defines many, if not all packet fields defined in the RFC. Ideally, their values would be trusted from the structure initialisation. Unfortunately that is not the case. The value of L (defined in the structure as well) is recalculated locally in r10_Trip, r10_build_LT_submat and r10_build_LT_mat. This is troublesome, since no indication is given whether this is done on purpose or as an oversight. If the first one is true, shouldn't the value be updated in the structure?
Other problems arise:
C++ not best fit anymore. Better to switch to C.
Maintaining structure of:
The software will initially use good ol' Gaussian Elimination
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.