-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Forward Error Correction #7
Open
autumn-traveller
wants to merge
62
commits into
5G-MAG:development
Choose a base branch
from
autumn-traveller:development
base: development
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Forward Error Correction #7
autumn-traveller
wants to merge
62
commits into
5G-MAG:development
from
autumn-traveller:development
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…ransmitter to match receiver
…eholders for future integration of Raptor FEC
…ebug mode by default, small fixes in readme,cmakelists,gitignore
…ding symbols to_payload() functions
…uct since its too difficult to directly replace it
…based on fec scheme in use
…and file, cleaned up cmakelistst for raptor build case
…on for all FEC transformers
…s to allocate the file buffer themselves
…isabled or ssl doesnt define ex2 on ubu20
…] instead of delete
…or calls in FEC + updated readme
dsilhavy
requested changes
Jun 9, 2023
Remove an unnecessary #ifdef in Receiver.h, and fix error messages in AlcPacket.cpp
6d2e248
to
5ddfac0
Compare
@autumn-traveller : @kuehnhammer is currently working on the FEC integration and harmonizing our two implementations (one of these is yours). Then we should be ready to merge. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
This PR adds support for forward error correction. Firstly, an abstract class for FEC schemes of any kind is added ("FEC Transformer"), which can be used to encode individual files and source blocks. Secondly, an instance of the class for a raptor-based FEC scheme is added. The mechanism used is very similar to the Raptor FEC encoding scheme but differs in the generation of random numbers for selecting symbol degrees, and in not generating Half symbols. The scheme used only generates LDPC symbols during the intermediate symbol generation.
Full list of Changes:
This PR (unintentionally) addresses Issue #1
Building with FEC
The library used for FEC is in a git submodule in another repository. To pull and build the raptor changes you need to pull the other submodule and then rebuild. Pull using
git submodule update --init
if you are in a previously checked out repsitory.When building, raptor is enabled by default (but can be turned off) so build as usual.
Testing the changes
To test that everything works you need an environment with packet loss. One way to do this is to modify the loopback device so that it experiences packet loss. There is a script included -
setup_packet_loss_on_loopback
which uses thetc
command to adjust the loopback device to experience packet loss, as well as adding a routing entry for the default mulitcast address used by libflute to make it go via the lo device. After testin you can rever the changes with thesetup_packet_loss_on_loopback
script.