Лемпель–Зив–Оберхумер

Алгоритм сжатия данных
ЛЗО
Разработчик(и)Маркус FXJ Оберхумер
Первоначальный выпуск20 мая 1996 г. ; 28 лет назад ( 1996-05-20 )
Стабильный релиз
2.10 / 1 марта 2017 г. ; 7 лет назад ( 2017-03-01 )
Операционная системаКроссплатформенный
Типсжатие данных
ЛицензияGPLv2 или коммерческая
Веб-сайтwww.oberhumer.com/opensource/lzo/

Лемпеля–Зива–Оберхумера ( LZO ) — это алгоритм сжатия данных без потерь , ориентированный на скорость распаковки. [1]

Дизайн

Оригинальная реализация "lzop", выпущенная в 1996 году, была разработана Маркусом Францем Ксавьером Йоханнесом Оберхьюмером на основе более ранних алгоритмов Авраама Лемпела и Якоба Зива . Библиотека LZO реализует ряд алгоритмов со следующими характеристиками:

  • Более высокая скорость сжатия по сравнению со сжатием DEFLATE
  • Очень быстрая декомпрессия
  • Требуется дополнительный буфер во время сжатия (размером 8 кБ или 64 кБ, в зависимости от уровня сжатия)
  • Не требует дополнительной памяти для распаковки, кроме исходного и целевого буферов.
  • Позволяет пользователю регулировать баланс между степенью сжатия и скоростью сжатия, не влияя на скорость декомпрессии.

LZO поддерживает перекрывающееся сжатие и распаковку на месте. Как алгоритм блочного сжатия, он сжимает и распаковывает блоки данных. Размер блока должен быть одинаковым для сжатия и распаковки. LZO сжимает блок данных в соответствия (скользящий словарь) и ряды несовпадающих литералов для получения хороших результатов на сильно избыточных данных и приемлемо работает с несжимаемыми данными, расширяя несжимаемые данные максимум на 1/64 от исходного размера при измерении по размеру блока не менее 1 Кбайт. [2]

Реализации

Эталонная реализация написана на языке ANSI C и распространяется как свободное программное обеспечение по лицензии GNU General Public License . Авторские права на код принадлежат Markus FXJ Oberhumer. Первоначально он был опубликован в 1996 году. Oberhumer также написал интерфейс командной строки под названием lzop .

Версии LZO доступны для языков Perl , Python и Java . Сообщается, что различные реализации LZO работают под AIX , Atari TOS (Atari ST), ConvexOS, IRIX , Linux , Mac OS , Nintendo 64 , Palm OS , PlayStation , Solaris , SunOS , VxWorks , Wii и Win32 .

Библиотека libavutil FFmpeg включает собственную реализацию LZO [3] как возможный метод сжатия видео без потерь. Реализация декомпрессора FFmpeg также используется в OpenConnect для поддержки пакетов ESP, сжатых LZO, отправляемых VPN-серверами Juniper Networks и Pulse Secure . [4]

Ядро Linux использует реализацию LZO в некоторых своих функциях:

Ссылки

  1. ^ Арно Буш (01.01.2008). "Быстрое сжатие/распаковка LZO: реализация в машинном коде 80386 для Delphi". bouchez.info . LZO . Получено 23.08.2022 . Знаете ли вы формат сжатия LZO?
  2. ^ Tarreau, Willy (2014-07-19). "Формат потока LZO, понимаемый декомпрессором LZO Linux". infradead.org . Infra Dead . Получено 2022-08-23 . В этом документе описывается, какой входной формат понимает декомпрессор LZO, реализованный в ядре Linux.
  3. ^ Реймар Дёффингер. "libavutil/lzo.c". FFmpeg .
  4. ^ Дэвид Вудхаус (26 января 2015 г.). «Добавить поддержку декомпрессии LZO». OpenConnect .
  • Фан-страница LZO/LZOP на Wayback Machine (архив 25 июня 2012 г.)
  • lzo-java на GitHub — реализация алгоритма сжатия LZO liblzo2 на чистом Java
Взято с "https://en.wikipedia.org/w/index.php?title=Лемпель–Зив–Оберхумер&oldid=1261421310"