Forward Error Correction Library
Contents |
Downloads News Information General AL-FEC documents Library content Standardization activities & publications raptorq open source Performance FAQ Licences & patents About us... AL-FEC
Openfec
in a nutshell... This site deals with Application-Level Forward Erasure Correction codes, or feclib AL-FEC (also called UL-FEC, for Upper-Layers FEC). The idea, in one line, is to add redundancy in order to be able
Al-fec
to recover from erasures. Because of their position in the communication stack, these codes are implemented as software codecs, and they find many applications in robust transmission and distrituted storage systems. OpenFEC.org goals The goals of the OpenFEC.org project are to: share libfec IPR-free, open, AL-FEC codes (see our note on patents); share high performance, ready-to-use, open, free, C-language, software codecs; share versatile and automated performance evaluation environments; share useful documents and tutorials on AL-FEC codes; be a privileged place for discussion on AL-FEC codes. Intended audience The content of this site is intended to be used by: users who do not want to know AL-FEC scheme details but do need to use one of them in the software they are designing; users who want to test new codes or new encoding or decoding techniques, and who do know what they are doing and are looking for; users who need to do extensive tests for certain AL-FEC schemes in a given use-case, with a well defined channel model.
and incorporate on their applications, whilst maintaining RaptorQ’s acclaimed performance and resillience. For a (very) general idea on FEC, fountain codes and Raptor codes keep reading the next few paragraphs. Forward error correction (FEC) is a technique for the recovery
Forward Error Correction Tutorial
of errors in data disseminated over unreliable or noisy communication channels. The central idea is
Reed Solomon
that the sender encodes the message in a redundant way by applying an error-correcting code, which allows the receiver to repair the errors. An erasure code is a FEC code with the capability to recover from losses in the communications. The data is divided into K source symbols, which are transformed in a larger number of N encoding symbols such that the http://openfec.org/ original data can be retrieved from a subset of the N encoding symbols. One immediate benefit of this approach is that the receiver gains the ability to amend the errors without needing a reverse channel to request the retransmission of data, but at the cost of a fixed, higher bandwidth forward channel. FEC is therefore applied in situations where retransmissions are costly, such as when broadcasting data to multiple destinations, or when communication links are one-way. Fountain http://openrq-team.github.io/openrq/ codes are a class of erasure codes with two attractive properties: an arbitrary number of encoding symbols can be produced on the fly, simplifying the adaptation to varying loss rates; and the data can be reconstructed with high probability from any subset of the encoding symbols (of size equal to or slightly larger than the number of source symbols). A typical use case scenario for fountain codes appears when a single source multicasts a file to many destinations. In such a scenario, resorting to TCP channels would not be scalable because the sender needs to keep track of which packets arrive at each receiver. Multicasting with UDP would solve this limitation, but would lack the reliability offered by TCP. Coding the file with a fountain code and disseminating over UDP addresses both problems — each receiver would be able to recover the (different) erasures affecting its own channel, without the need for retransmissions. Raptor codes (or Rapid Tornado) [1] are the closest solution to an ideal digital fountain code. They have the capability of achieving constant per-symbol encoding/decoding cost with an overhead near to zero. Up to this point, two versions of Raptor codes have been standardized by the Internet Engineering Task Force (IETF), called R10 and RaptorQ. R10 appeared first, and over the years was adopted into a number of different standards, covering areas related to the tra
Sign in Pricing Blog Support Search GitHub This repository Watch 1 Star 0 Fork 0 Venemo/fecmagic Code Issues 0 Pull requests 0 Projects https://github.com/Venemo/fecmagic 0 Pulse Graphs Forward error correction library in C++ 24 commits 1 https://github.com/smanders/feclib branch 0 releases Fetching contributors C++ 100.0% C++ Clone or download Clone with HTTPS Use Git or checkout with SVN using the web URL. Open in Desktop Download ZIP Find file Branch: master Switch branches/tags Branches Tags master Nothing to show Nothing to show New pull request forward error Fetching latest commit… Cannot retrieve the latest commit at this time. Permalink Failed to load latest commit information. src tests .gitignore README.md README.md Welcome to fecmagic fecmagic is a header-only C++ library which implements some FEC (forward error correction) codes and some utility functions that help developing and testing such codes. What's in the box? Currently, we've got the forward error correction following: A generic block code algorithm that works with binary matrix operations, and has a generic method of syndrome-based decoding. A generic convolutional codec that is implemented using variadic templates and can be configured to work with any convolutional code. The encoder implements the classical "shift register" algorithm, and the decoder implements a hard-decision Viterbi algorithm. And we have specialized codecs for: Hamming(7, 4) Golay(24, 12) And for your convenience, we've also got: A way to work with binary matrices efficiently A way to print a number in binary A way to iterate through bit mask combinations How to use All the algorithms are implemented in modern C++ and should compile on a C++11 compiler. The tests use the 0b notation for binary numbers, so you need C++14 to compile the tests. Since this is a header-only library, you can simply copy the necessary header files, include them and you're good to go. Contributions Testing and bugreports This code is primarily tested using GCC on Linux x86. If you find bugs or issues on other compile
Sign in Pricing Blog Support Search GitHub This repository Watch 1 Star 3 Fork 4 smanders/feclib Code Issues 0 Pull requests 0 Projects 0 Pulse Graphs Forward Error Correction Library http://feclib.sourceforge.net/ 1 commit 2 branches 1 release Fetching contributors C 72.8% HTML 25.5% Makefile 1.7% C HTML Makefile Clone or download Clone with HTTPS Use Git or checkout with SVN using the web URL. Open in Desktop Download ZIP Find file Branch: master Switch branches/tags Branches Tags master xp0.90 Nothing to show v0.90 Nothing to show New pull request Fetching latest commit… Cannot retrieve the latest commit at this time. Permalink Failed to load latest commit information. Makefile documentation.html fec.c fec.h feclib.spec fecrecv.c fecrecv.dsp fecsend.c fecsend.dsp fectest.c fectest.dsp index.html Contact GitHub API Training Shop Blog About © 2016 GitHub, Inc. Terms Privacy Security Status Help You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.