Run Length is a lossless compression algorithm.
The goal of this project is to implement it and some other compression algorithms.
The purpose is to discover compression in general.
Let's have some fun !
make
Encode / Compress
./RLe [-e] [-m algorithm ] [-i input_file] [-o output_file]
Decode / Decompress
./RLe -d [-m algorithm ] [-i input_file] [-o output_file]
The options can be used in any order :
-e
encoding mode : Is enabled by default (it can be ommited when encoding)
-d
decoding mode
-v
verbose
-i
input file : If not specified, stdin is used
-o
output file : Will be created. If not specified, stdout is used
-m
algorithm : The algorithm to use
run-length
: Run-length algorithmrun-length-escape
: Run-length-escape algorithm
./RLe -e -m run-length -i input.txt -o output.txt
Is equivalent to :
cat input.txt | ./RLe -e -m run-length > output.txt
- Makefile
- Organize source code
- Add options in main
- Use stream fonctions (fopen, fread, fwrite...) instead of fds
- Implement default Run Length encoder
- Implement default Run Length decoder
- Implement Run Length escape encoder
- Implement Run Length escape decoder
- Optimization using Burrows–Wheeler Transform (BWT) algorithm on binary data
- Optimization using threads
- Find another (harder) algorithm to implement