Lempel–Ziv–Oberhumer Explained

LZO
Developer:Markus F.X.J. Oberhumer
Latest Release Version:2.10
Operating System:Cross-platform
Genre:data compression
License:GPLv2 or commercial

Lempel–Ziv–Oberhumer (LZO) is a lossless data compression algorithm that is focused on decompression speed.[1]

Design

The original "lzop" implementation, released in 1996, was developed by Markus Franz Xaver Johannes Oberhumer, based on earlier algorithms by Abraham Lempel and Jacob Ziv. The LZO library implements a number of algorithms with the following characteristics:

LZO supports overlapping compression and in-place decompression. As a block compression algorithm, it compresses and decompresses blocks of data. Block size must be the same for compression and decompression. LZO compresses a block of data into matches (a sliding dictionary) and runs of non-matching literals to produce good results on highly redundant data and deals acceptably with non-compressible data, only expanding incompressible data by a maximum of 1/64 of the original size when measured over a block size of at least 1 kB.[2]

Implementations

The reference implementation is written in ANSI C, and it has been made available as free software under the GNU General Public License. The copyright for the code is owned by Markus F. X. J. Oberhumer. It was originally published in 1996. Oberhumer has also written a command-line frontend called lzop.

Versions of LZO are available for the Perl, Python and Java languages. Various LZO implementations are reported to work under Win32, AIX, ConvexOS, IRIX, Mac OS, Palm OS, PlayStation, Nintendo 64, Wii, Solaris, SunOS, TOS (Atari ST), Linux and VxWorks.

FFmpeg's libavutil library includes its own implementation of LZO[3] as a possible method for lossless video compression. FFmpeg's implementation of the decompressor is also used in OpenConnect in order to support LZO-compressed ESP packets sent by Juniper Networks and Pulse Secure VPN servers.[4]

The Linux kernel uses its LZO implementation in some of its features:

External links

Notes and References

  1. Web site: LZO fast compress/uncompress: implementation in 80386 machine code for Delphi. Arnaud Bouche. bouchez.info. LZO. 2022-08-23. 2008-01-01. Do you know the LZO compression format?.
  2. Web site: LZO stream format as understood by Linux's LZO decompressor. Tarreau. Willy . 2014-07-19. infradead.org. Infra Dead. 2022-08-23. This document describes what input format the LZO decompressor as implemented in the Linux kernel understands..
  3. Web site: libavutil/lzo.c. Reimar Döffinger. FFmpeg.
  4. Web site: Add LZO decompression support. OpenConnect. David Woodhouse. January 26, 2015.