The following resources are available:
Project | Status | Activity |
---|---|---|
LDPC | Mature | Active |
FLUTE/ALC | Mature | Active |
NORM | Experimental | Standby |
version | date | source (gzipped tar) | source ((win)zip) |
---|---|---|---|
ldpc_v2.1 | September 7th, 2006 | ldpc_v2.1_src.tgz | ldpc_v2.1_src.zip |
ldpc_v2.0 | March 9th, 2006 | ldpc_v2.0_src.tgz | ldpc_v2.0_src.zip |
ldpc_v1.8 | September 15th, 2005 | ldpc_v1.8_src.tgz | ldpc_v1.8_src.zip |
This release brings the following improvements:
- The codec supports any size of symbols (in previous releases, the symbol
size had to be multiple of 4). Note that sometimes the packet size must still be a power of two (i.e. if multiple symbols are packed in the same packet).
- Improved performances (6.3% relative improvement during encoding, 3.8%
during decoding with LDPC-Staircase codes, with a 20,000 symbol object
and 2/3 code rate).
- Source code clarifications. In particular, the src/ldpc_profile.h file
gathers all the codec compilation controls. Don’t hesitate to give a look
at it and change when needed.
- A new SPARSE_MATRIX_OPT_SMALL_INDEX mode reduces significantly the memory
requirements of sparse matrices (the matrix size is decreased by 1/6 on
32-bit systems).
- Tested on 64-bit architectures (Pentium D)/Linux.
- This version is in line with IETF Internet-Draft:
draft-ietf-rmt-bb-fec-ldpc-03.txt (available in the doc/ directory),
and is compatible with release 2.0 (but not the 1.* releases).
- There is no major change in the API. Yet an LDPCFecSession::GetMaxN()
method has been added which can be useful in SPARSE_MATRIX_OPT_SMALL_INDEX
mode.
This is a major release (hence the new major version number).
It brings the following improvements:
- added the LDPCFecScheme class that implements parts of the LDPC-Staircase
/Triangle FEC Scheme, as defined in draft-ietf-rmt-bb-fec-ldpc-01.txt.
It defines the notion of packet, i.e. the possibility to group several
symbols in the same packet, which dramatically improves the codec
efficiency when operating on small objects. But with large objects,
there will be no change, a packet being composed of a single symbol.
See the above Internet Draft for more information. Using this class makes
the symbol(s) <=> packet mapping almost transparent to the user, the
optimal number of symbols per packet being automatically defined.
- New Pseudo Random Number Generator algorithm (much faster).
- Changed a little bit the Triangle matrix creation algorithm
(moved from j = i; to j = i-1).
!!! Therefore LDPC_v2.0 IS NOT backward compatible with LDPC_v1.* codecs,
but it can easily be made compatible by changing the above two points if needed !!!
- Corrected an error in LDPCFecSession::DecodingStepWithSymbol() which
used to create all parity symbols systematically when decoding was over,
leading to a waste of ressource (CPU/Memory). Shame on us for not
finding it sooner :-(
- This version is in line with draft-ietf-rmt-bb-fec-ldpc-01.txt
(available in the doc/ directory).
- Added perf_tool2 which is an extended version of perf_tool, using the
LDPCFecScheme class in addition to the LDPCFecSession class. This is
also an example of how to use the LDPCFecScheme class in practice.
- Added a memory management optimization PART_SUM_OPTIMIZATION for
reduced memory requirements (src/ldpc_fec.h). Explanations are available
C. Neumann, ``Large Scale Content Delivery applied to Files and Videos’’,
PhD Dissertation, INPG (Institut National Polytechnique de Grenoble),
France, December 2005.
in section 8.2.2 (as well as many other technical points related to the
LDPC FEC building block).
- Updated the FAQ.
Several major changes in the LDPCFecSession API (sorry in advance for the
inconvenience):
- LDPCFecSession methods are renamed so that it only uses the term "symbol".
The term "packet" is now reserved to the LDPCFecScheme methods.
- the "leftDegree" argument of LDPCFecSession::InitSession() has been
moved at the last position, since it is only meaningfull in case of
LDGM codes (do not change with LDPC-Staircase/Triangle codes).
version | date | source (gzipped tar) | source ((win)zip) | linux bin | win32 bin | other bin distribs |
---|---|---|---|---|---|---|
mcl_v2.99.6 snapshot | May 25, 2005 | src.tgz | ||||
mcl_v2.99.5 | Dec. 21, 2004 | src.tgz | src.zip | linux.tgz | win32.zip | freebsd.tgz |
IPv6 support on Windows platforms
Congestion control protocol can now be selected at runtime (rather than preset at compilation time).
Short LCT header fields (16 bits) for the TOI and TSI fields are now supported and used whenever possible.
AIX, IRIX, HP-UX support added (thanks to Florian Geyer).
Not tested on our side though.
Many bugfixes
Warning: -singlelayer argument of FCAST/FLUTE is replaced by the -cc0 argument (i.e. no congestion control)
2/ NORM part:
No changes.
Dependancies: only tested with LDPC v1.7 and Xerces-C++ v2.6.0
TBD
NORM implementation is included in the following MCLv3 distribution (but not in the new recent ones...).
version | date | source (gzipped tar) | source ((win)zip) | linux bin | win32 bin | other bin distribs |
---|---|---|---|---|---|---|
mcl_v2.99.5 | Dec. 21, 2004 | src.tgz | src.zip | linux.tgz | win32.zip | freebsd.tgz |