[Zlib-devel] And now for something completely different

Mark Adler madler at alumni.caltech.edu
Sat Dec 6 14:29:47 EST 2003


On Friday, December 5, 2003, at 11:42 PM, Matt H. wrote:
> Does nasa use any of the zlib code to compress data streams they 
> send/receive
> from the rovers ? Or do they use something completely different ?

It's funny--I never thought to look until you asked.  I have no direct 
involvement in the rover software development.

What I did happen to know is that nearly all of the compression done by 
the MER rover software is on images, since that is the vast majority of 
the data sent from the rovers.  The two compression methods used there 
are a lossy wavelet compression method called ICER, and the LOCO 
lossless image compression method.

So I went and grepped the rover software source code and found that LZO 
by Markus Oberhumer is the only other compression method used for data 
sent from the rovers.  You can find a link to LZO on the zlib web site. 
  LZO is a very good choice, since the rover computers use a slow 
processor in order to be radiation-hard (it's a 20 MHz IBM RISC 
processor, an ancestor of the PowerPC).  LZO is quite fast, doesn't use 
much memory, and provides good compression--more than adequate for the 
small fraction of the data that is not images.

I did however find that zlib, in particular inflate, is used in the 
rover software, but not for data.  At least I think it is--I couldn't 
tell exactly how the module that uses zlib is compiled.  The rover's 
VxWorks real-time operating system looks like it uses inflate to 
decompress itself when it loads from ROM.  I can tell that the 
remainder of the rover software is not compressed, since the whole 
image is compressible by more than a factor of three.  (Which makes me 
wonder why we spent over twenty hours around the clock one day last 
week loading a new version of the software on one of the spacecraft in 
flight, when we could have in principle done it in less than one shift.)

mark





More information about the Zlib-devel mailing list