한국   대만   중국   일본 
Lempel?Ziv?Oberhumer - Wikipedia Jump to content

Lempel?Ziv?Oberhumer

From Wikipedia, the free encyclopedia
LZO
Developer(s) Markus F.X.J. Oberhumer
Initial release May 20, 1996 ; 28 years ago  ( 1996-05-20 )
Stable release
2.10 / March 1, 2017 ; 7 years ago  ( 2017-03-01 )
Operating system Cross-platform
Type data compression
License GPLv2 or commercial
Website www .oberhumer .com /opensource /lzo /

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 ]

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

External links [ edit ]