Optimized and cross platform SMPTE 2022-1 FEC library in C, Python, Java.
SMPTE 2022-1 is a forward error correction standard for real-time video/audio (RTP) transport over IP networks.
Initial goal of the project was to help VLC and others to implement this FEC algorithm by implementing a standalone C/C++ SMPTE 2022-1 FEC streams generator and receiver.
Nowadays I focus on using the newer Java and Python implementations for some Ra&D projects using RTP streams.
I developed this version to generate SMPTE 2022-1 FEC streams from a sniffed RTP media stream.
This implementation is now part of pytoolbox (see commit).
This is the Java re-implementation of the old C/C++ SMPTE 2022-1 FEC library.
I developed this version to receive protected RTP multicast streams from an Android device.
Of course, you can also use it for another purpose (e.g. a Java powered PC application).
Note
FecReceiver.java
is the RTP / SMPTE 2022-1 FEC receiver.
This is the first (abandon-ware) implementation of the library.
I do not use it anymore and I really think that this implementation needs some heavy refactoring.
You can read the resume of the project files if you understand French.
Don't hesitate to contact me to get further explanations.
- install CodeBlocks and g++ with
sudo apt-get install codeblocks g++
- open file
ForC_old/CodeBlocks/VLC-SMPTE.workspace
with CodeBlocks - double click on project Smpte-2022- in CodeBlocks IDE and Ctrl+F11 to compile
- double click on project FecGenerator in CodeBlocks IDE and Ctrl+F11 to compile
- double click on project ErrorsGenerator in CodeBlocks IDE and Ctrl+F11 to compile
- double click on project FecDecoder in CodeBlocks IDE and Ctrl+F11 to compile
- open a terminal in path
ForC_old/Release-linux64
- execute
sh script_example.sh "source_file_name"
- read logs of each module
- compare
*.raw
output file (without any error recovery) and*.david
output file (recovered by SMPTE 2022-1 library) - execute each module with different options :
- like this :
source_file -> FecGenerator -> FecDecoder -> results_files
- or like this :
source_file -> FecGenerator -> ErrorsGenerator -> FecDecoder -> results_files
- like this :
Steps are equivalent to GNU/Linux steps with some variations (CodeBlocks running under a MinGW environment).
Steps are equivalent to GNU/Linux steps with some variations (scripts names and files extensions).
This is the work done by Jérémie Mathieu Rossier to integrate the old C/C++ SMPTE 2022-1 FEC library into VLC.
2013 - David Fischer