Articulo de referencia

Lempel–Ziv–Oberhumer

Lempel–Ziv–Oberhumer ( LZO ) es un algoritmo de compresión de datos sin pérdidas que se centra en la velocidad de descompresión. [ 1 ] Diseño La implementación original de "lzop...

Lempel–Ziv–Oberhumer ( LZO ) es un algoritmo de compresión de datos sin pérdidas que se centra en la velocidad de descompresión. [ 1 ]

Diseño

La implementación original de "lzop", publicada en 1996, fue desarrollada por Markus Franz Xaver Johannes Oberhumer, basándose en algoritmos anteriores de Abraham Lempel y Jacob Ziv . La biblioteca LZO implementa varios algoritmos con las siguientes características:

  • Mayor velocidad de compresión en comparación con la compresión DEFLATE.
  • descompresión muy rápida
  • Requiere un búfer adicional durante la compresión (de 8 kB o 64 kB, según el nivel de compresión).
  • No requiere memoria adicional para la descompresión, aparte de los búferes de origen y destino.
  • Permite al usuario ajustar el equilibrio entre la relación de compresión y la velocidad de compresión, sin afectar la velocidad de descompresión.

LZO admite compresión superpuesta y descompresión in situ. Como algoritmo de compresión de bloques, comprime y descomprime bloques de datos. El tamaño del bloque debe ser el mismo para la compresión y la descompresión. LZO comprime un bloque de datos en coincidencias (un diccionario deslizante) y secuencias de literales que no coinciden para producir buenos resultados en datos altamente redundantes y maneja de forma aceptable los datos no comprimibles, expandiendo los datos incompresibles solo en un máximo de 1/64 del tamaño original cuando se mide sobre un tamaño de bloque de al menos 1 kB. [ 2 ]

Implementaciones

La implementación de referencia está escrita en ANSI C y se ha distribuido como software libre bajo la Licencia Pública General de GNU . Los derechos de autor del código pertenecen a Markus FXJ Oberhumer. Fue publicado originalmente en 1996. Oberhumer también ha desarrollado una interfaz de línea de comandos llamada lzop .

Existen versiones de LZO disponibles para los lenguajes Perl , Python y Java . Se ha informado que varias implementaciones de LZO funcionan en AIX , Atari TOS (Atari ST), ConvexOS, IRIX , Linux , Mac OS , Nintendo 64 , Palm OS , PlayStation , Solaris , SunOS , VxWorks , Wii y Win32 .

La biblioteca libavutil de FFmpeg incluye su propia implementación de LZO [ 3 ] como un posible método para la compresión de vídeo sin pérdidas. La implementación del descompresor de FFmpeg también se utiliza en OpenConnect para admitir paquetes ESP comprimidos con LZO enviados por servidores VPN de Juniper Networks y Pulse Secure . [ 4 ]

El núcleo de Linux utiliza su implementación LZO en algunas de sus características:

Referencias

  1. ^ Arnaud Bouche (01/01/2008). "Compresión/descompresión rápida LZO: implementación en código máquina 80386 para Delphi" . bouchez.info . LZO . Consultado el 23/08/2022 . ¿Conoces el formato de compresión LZO?
  2. ^ Tarreau, Willy (19 de julio de 2014). "Formato de flujo LZO según lo entiende el descompresor LZO de Linux" . infradead.org . Infra Dead . Consultado el 23 de agosto de 2022. Este documento describe el formato de entrada que entiende el descompresor LZO implementado en el kernel de Linux.
  3. ^ Reimar Döffinger. "libavutil/lzo.c" . FFmpeg .
  4. ^ David Woodhouse (26 de enero de 2015). "Añadir soporte para descompresión LZO" . OpenConnect .
  • Página de fans de LZO/LZOP en Wayback Machine (archivada el 25 de junio de 2012)
  • lzo-java en GitHub : implementación en Java puro del algoritmo de compresión LZO de liblzo2.
Obtenido de " https://en.wikipedia.org/w/index.php?title=Lempel–Ziv–Oberhumer&oldid=1355706974 "