Subject: Java FEC Library & Java ALC

From: Justin Chapweske <[email-masked]>
Date: Fri, 17 Nov 2000 02:36:38 -0800 (PST)

Hello all, we have just released a Java library for FEC encoding,
decoding, and IO at http://www.sourceforge.net/projects/swarmcast/.  We
are committed to having the best Java FEC library out there, so we will be
constantly making minor improvements to this core package and would
greatly appreciate any feedback.  
	Next we will be doing an ALC/RLC implementation that will be
released under the LGPL.  We have not yet started on this and love to
collaborate with anyone else that has started or interested in such an
undertaking.

Release Notes for Java FEC v0.5

This software is a library for performing Forward Error Correction
(FEC) encoding, decoding, and IO in Java. 

1 Features

1. A SPI plugin architecture that allows any FEC code that has no inherent
  reception innefficiency to be plugged in. Preferences between different
  implementations can be expressed via a simple configuration file.

2. A pure Java port of Luigi Rizzo's wonderful C FEC package. The code
  for this port is quite solid and provides an acceptible 33/k MB/s
  performance on a 500mhz k6-2 for 8 bit codes. This is 4-5 times
  faster than the port done by Dan Rubenstein's group, which is to
  be expected as they were more focused on adding interesting 
  encoding/decoding features than speed.

3. A much improved version of Lorenzo Vicisano's JNI wrapper. The JNI
  calls now have a negligable overhead for a delightful 160/k MB/s
  on a 900mhz Athlon. If a native library for your platform is not
  available then it will fall back to the pure Java version.

4. A FEC I/O package that is optimized for decoding speed and low memory
  consumption.

5. For the license I've simply included Luigi's original copyright,
  so you can basically do whatever you want with this thing. But if
  you do use this thing, please let me know what I can do to make
  it better for you.

2 Future Work/Open Tasks

1. Implement different IO routines based on Jim Gemmel's very nicely
  written paper on FEC performance tuning.

2. Implement more codes (Please let me know if you know of any codes
  as I'll implement them myself if they are compelling enough)

3. Tune the 16 bit codes to create the minimum required matrices on
  demand, this will allow n values of up to 65536 to be feasible.

4. The shuffling proceedure causes some confusing behavior for decoding,
  this will be fixed asap.

5. Have the native implementation automatically deploy itself so that
  the user does not have to manually set up their library path.

-Justin