Data compression algorithm
Lempel?Ziv?Oberhumer
(
LZO
) is a
lossless
data compression
algorithm
that is focused on decompression speed.
[1]
Design
[
edit
]
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:
- Higher compression speed compared to
DEFLATE
compression
- Very fast decompression
- Requires an additional buffer during compression (of size 8 kB or 64 kB, depending on compression level)
- Requires no additional memory for decompression other than the source and destination buffers
- Allows the user to adjust the balance between compression ratio and compression speed, without affecting the speed of decompression
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
[
edit
]
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:
References
[
edit
]
External links
[
edit
]