ashtonchase / lz77

LZ77 compressor and decompressor

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

LZ77

Lempel, Ziv Encoding and Decoding

Description

LZ77 is a lossless data compression algorithm published by Abraham Lempel and Jacob Ziv in 1977. It is a dictionary coder and maintains a sliding window during compression.

The sliding window is divided in two parts:

  • Search-Buffer (dictionary - encoded data)
  • Lookahead (uncompressed data).

LZ77 algorithms achieve compression by addressing byte sequences from former contents instead of the original data. All data will be coded in the same form (called token):

  • Address to already coded contents;
  • Sequence length;
  • First deviating symbol.

The window is contained in a fixed size buffer.

The match between SB and LA is made by a binary tree, implemented in an array.

Reading and writing on the encoded file it is made via the bitIO library, implemented in the project. It allows to read and to write on the file bit-per-bit instead byte-per-byte as usual.

Usage

Syntax:

./lz77 <options>

Options:

-c: compression mode
-d: decompression mode
-i <filename>: input file
-o <filename>: output file
-l <value>: lookahead size (default 15)
-s <value>: searchbuffer size (default 4095)
-h: help

The lookahead and searchbuffer sizes are optional. If the two options are not set, default values are used.

About

LZ77 compressor and decompressor


Languages

Language:C 98.9%Language:Makefile 1.1%