útil través son redundancia qué pérdida por perdida para métodos metodo funciona ejemplos ejemplo digitales datos con compresión compresion archivo algoritmos algoritmo c++ c compression

c++ - través - Biblioteca de compresión sin pérdida orientada a paquetes



por qué la redundancia es útil para la compresión sin pérdida (5)

¿Alguien sabe de una biblioteca de compresión libre (no GPL), que se realiza decentemente que admita la compresión orientada a paquetes en C / C ++?

Con el paquete orientado, me refiero al tipo de característica que tiene QuickLZ (GPL), donde múltiples paquetes de un flujo se pueden comprimir y descomprimir individualmente mientras se mantiene un historial entre los paquetes para lograr una compresión sensible.

Yo preferiría la relación de compresión sobre el uso de la CPU siempre y cuando el uso de la CPU no sea ridículo, pero me cuesta mucho encontrar esta característica, por lo que cualquier cosa es interesante.


El algoritmo Crush de dominio público de Ilia Muraviev tiene un rendimiento y una relación de compresión similares a los de QuickLZ, siendo Crush un poco más potente. Los algoritmos también son conceptualmente similares, Crush contiene un poco más de trucos.
El algoritmo BALZ que ya se mencionó anteriormente es también de Ilia Muraviev.
Ver http://compressme.net/


El nuevo protocolo SPDY Google usa zlib para comprimir mensajes individuales y mantiene el estado zlib durante la vida de la conexión para lograr una mejor compresión. No creo que haya una biblioteca independiente que maneje este comportamiento exactamente, pero hay varias implementaciones de código abierto de SPDY que podrían mostrarle cómo se hace.


puede ser que puedas usar el SDK de compresión lzma , está escrito y colocado en el dominio público por Igor Pavlov.

Y ya que puede comprimir archivos de flujo y tiene memoria en la compresión de la memoria, creo que es posible comprimir el flujo de paquetes (puede ser con algunos cambios) pero no estoy seguro.


Snappy de Google puede ser una buena opción, si necesita más velocidad que la compresión y solo está buscando ahorrar una cantidad moderada de espacio.

Alternativamente, Ilia Muraviev puso un pequeño código de compresión llamado BALZ en el dominio público hace algún tiempo. Es bastante decente para muchos tipos de datos.

Ambos soportan el flujo de flujo y las variables de estado independientes para hacer múltiples flujos concurrentes a través de paquetes.


La función principal de zlib deflate() toma un parámetro de flush , que permite varios modos de descarga diferentes. Si pasa Z_SYNC_FLUSH al final de cada paquete, eso debería producir el efecto deseado.

Los detalles se explican en el manual de zLib .

bzip2 también tiene funcionalidad de descarga, lo que podría permitirte hacer este tipo de cosas. Consulte http://www.bzip.org/1.0.5/bzip2-manual-1.0.5.html#bzCompress