Unequal Loss Protection
Unequal Loss Protection (ULP) is the name that we have given to a
scheme that uses explicit Forward Error Correction (FEC) to protect
data from packet losses in store-and-forward networks.
This page attempts to explain our motivation and present some of the
reasoning behind the approach, as well as providing documentation
for the ULP Simulator. This research was supported in part by
NSF Grant EIA-9973531.
Publications
We've
published a conference paper at DCC 1999 that
outlines the framework
and presents a local-search algorithm that finds an allocation
of FEC for a given estimate of network loss conditions.
A second conference paper at ICIP 1999
outlines how the ULP framework and assignment
algorithm are an alternative solution to the Generalized Multiple
Description Problem.
At ICIP 2000, we presented a new assignment algorithm that runs
much more quickly and has good theoretical justification.
A journal article appeared
in the June 2000 issue of JSAC. It provides more detail than
the DCC 1999 paper.
All are available from my
publications
page.
Software
The ULP Simulator is available in source form and as precompiled
binaries for linux. This package includes two utilities,
ulpsim and ulpmatch. The
first of these utilities can find an allocation of forward error
correction to progressively coded source data such that the
expected utility over a packet erasure channel is maximized.
It takes as input a description of the source's utility (psnr/mse)
vs cost (bit rate, byte count, etc) curve, a PMF of expected
channel/network loss conditions, the number of packets/descriptions
transmitted, and the length of each packet/description. It runs
an algorithm to maximize utility and reports the results.
The second utility, ulpmatch, is more useful for researchers
who would like to compare their own approaches for multiple description
coding or joint source/channel coding with the performance
of an FEC-based baseline. It takes as input the utility-cost
curve of a source, the number of packets/descriptions transmitted,
and the utility achieved by the proposed algorithm for each
number of packets/descriptions received. It then reports how
many bytes an FEC-based system would require to achieve (and slightly exceed)
those same utilities.
You can view the README
or change log from the source.
Source
Note: the source is research prototype code. It's not heavily
commented, though there are some and I tried to use elegant
implementations where I could. It also doesn't do extensive
(or graceful) error checking. If you run into problems, let
me know.
- Version 0.74: February 1, 2001.
Binaries
Binaries are for Redhat 6.2, based on linux 2.2. The dynamic
The dynamically linked version requires libc and libm version 6 (glibc 2.1).
The statically linked version should run no matter which version of linux
you have, but is significantly larger.
Data files
Some utility-cost data files are available. If you'd like one not listed
here, send me mail and I'll do what I can to generate it for you.
- Lena/Lenna (grayscale) at 512x512x8bpp, compressed with Said and
Pearlman's SPIHT with arithmetic coding codec:
- Barbara (grayscale) at 512x512x8bpp, compressed with Said and
Pearlman's SPIHT with arithmetic coding codec:
- Goldhill (grayscale) at 512x512x8bpp, compressed with Said and
Pearlman's SPIHT with arithmetic coding codec:
- Peppers (grayscale) at 512x512x8bpp, compressed with Said and
Pearlman's SPIHT with arithmetic coding codec:
- Foreman (Y component of compressed color sequence), first 256 frames, compressed with Xiong's
3D-SPIHT codec:
Obsolete source
I generally move obsolete and older source
files to a separate page.
Contact
Feel free to email me
if you have any questions about the papers or the simulator.
Further information is available from my
homepage or
publication list.
Alex Mohr
June 17, 2004