2005-10-31 17:55:11 +00:00
|
|
|
|
|
|
|
|
|
EnlargeYourData
|
|
|
|
|
|
|
|
|
|
1. [1]Description
|
|
|
|
|
|
|
|
|
|
1. [2]Auteurs
|
|
|
|
|
|
|
|
|
|
[3]Pr<50>-requis
|
|
|
|
|
1. [4]Sur un syst<73>me Debian GNU/Linux
|
|
|
|
|
2. [5]Sur un syst<73>me Apple MacOSX (>=10.3)
|
|
|
|
|
3. [6]Sur un syst<73>me Microsoft Windows
|
|
|
|
|
|
|
|
|
|
[7]Se procurer EnlargeYourData
|
|
|
|
|
|
|
|
|
|
[8]Utiliser EnlargeYourData
|
|
|
|
|
1. [9]Compilation
|
|
|
|
|
2. [10]Utilisation
|
|
|
|
|
|
|
|
|
|
[11]Documentation
|
|
|
|
|
|
|
|
|
|
1. Description
|
|
|
|
|
|
|
|
|
|
EnlargeYourData est un ensemble de logiciel libres de
|
|
|
|
|
compression/d<>compression de fichiers, bas<61>s sur l'algorithme RLE et
|
|
|
|
|
ses variation. Il poss<73>de les caract<63>ristiques suivantes :
|
|
|
|
|
* Il est distribu<62> sous la licence [12]GNU General Public License
|
|
|
|
|
* Il est <20>crit en C++ et poss<73>de une interface textuelle
|
|
|
|
|
* Il implemente RLE (suite de motifs identiques),
|
|
|
|
|
* Il impl<70>mente la variante de RLE (on l'appellera RLE2 dans la
|
|
|
|
|
suite de ce document) encodant les bits <20> z<>ros entre les bits <20>
|
|
|
|
|
un.
|
|
|
|
|
* Il n'implemente pas (a l'heure actuelle) RLE2 avec le codage de
|
|
|
|
|
Golomb.
|
|
|
|
|
|
|
|
|
|
Dans la suite de ce document, on appellera "cellule" un groupe de X
|
|
|
|
|
bits.
|
|
|
|
|
|
|
|
|
|
1.1. Auteurs
|
|
|
|
|
|
|
|
|
|
EnlargeYourData a <20>t<EFBFBD> enti<74>rement r<>alis<69> par Glenn ROLLAND
|
|
|
|
|
<[13]glenux@fr.st> <20> l'occasion de travaux pratiques du cours de
|
|
|
|
|
format de documents et compression du Master 2 Ing<6E>nierie Informatique
|
|
|
|
|
- Syst<73>mes, R<>seaux et Internet.
|
|
|
|
|
|
|
|
|
|
2. Pr<50>-requis
|
|
|
|
|
|
|
|
|
|
EnlargeYourData n<>cessite les biblioth<74>ques de fonctions suivantes
|
|
|
|
|
(dans leur version de d<>veloppement si compilez le programme
|
|
|
|
|
vous-m<>me):
|
|
|
|
|
* glib-2.0
|
|
|
|
|
|
|
|
|
|
2.1. Sur un syst<73>me Debian GNU/Linux
|
|
|
|
|
|
|
|
|
|
Il vous suffit de taper (en tant qu'administrateur) les commandes
|
|
|
|
|
suivantes pour installer le n<>cessaire:
|
|
|
|
|
|
|
|
|
|
# apt-get install libglib-2.0-dev
|
|
|
|
|
|
|
|
|
|
2.2. Sur un syst<73>me Apple MacOS X (>= 10.3)
|
|
|
|
|
|
|
|
|
|
Il est n<>cessaire d'avoir install<6C> les autotools (automake,
|
|
|
|
|
autoconf...) dans leur derni<6E>re version. <20> partir de l<>, il suffit de
|
|
|
|
|
taper les commandes suivantes dans un terminal :
|
|
|
|
|
|
|
|
|
|
# sudo fink install glib2-dev
|
|
|
|
|
|
|
|
|
|
2.3. Sur un syst<73>me Microsoft Windows
|
|
|
|
|
|
|
|
|
|
Cela ne fut pas (encore) test<73>, mais il est tr<74>s probable que cela
|
|
|
|
|
fonctionne sous Cygwin.
|
|
|
|
|
|
|
|
|
|
3. Se procurer EnlargeYourData
|
|
|
|
|
|
|
|
|
|
Vous pouvez t<>l<EFBFBD>charger la derni<6E>re archive des sources, ou bien
|
|
|
|
|
directement la version la plus r<>cente du projet sur le d<>p<EFBFBD>t
|
|
|
|
|
Subversion du projet.
|
|
|
|
|
|
|
|
|
|
3.1. L'archive des sources
|
|
|
|
|
|
|
|
|
|
Elle est disponible <20> l'adresse :
|
|
|
|
|
[14]http://glenux2.free.fr/pub/projets/EnlargeYourData/archives/
|
|
|
|
|
|
|
|
|
|
3.2. Le d<>p<EFBFBD>t Subversion
|
|
|
|
|
|
|
|
|
|
Afin d'obtenir les sources les plus <20> jour, vous pouvez utiliser le
|
|
|
|
|
logiciel de contr<74>le de sources Subversion
|
|
|
|
|
|
|
|
|
|
$ svn checkout http://repository.glenux.ath.cx/svn/EnlargeYourData/
|
|
|
|
|
|
|
|
|
|
Il n'y a pas de mot de passe, il suffit donc de presser la touche
|
|
|
|
|
"Entr<74>e" pour l'utilisateur "anonymous", si ce dernier vous est
|
|
|
|
|
demand<6E>.
|
|
|
|
|
|
|
|
|
|
4. Utiliser EnlargeYourData
|
|
|
|
|
|
|
|
|
|
4.1. Compilation
|
|
|
|
|
|
|
|
|
|
Commencez par d<>compressez l'archive.
|
|
|
|
|
|
|
|
|
|
$ tar -xzvf eyd-0.2.tar.gz
|
|
|
|
|
|
|
|
|
|
Rendez vous ensuite dans le dossier qui vient d'<27>tre cr<63><72> lors de la
|
|
|
|
|
d<>compression.
|
|
|
|
|
|
|
|
|
|
$ cd EnlargeYourData-0.2
|
|
|
|
|
|
|
|
|
|
Puis lancez l'auto-configuration du logiciel, puis la compilation.
|
|
|
|
|
|
|
|
|
|
$ ./autogen
|
|
|
|
|
$ ./configure
|
|
|
|
|
$ make
|
|
|
|
|
|
|
|
|
|
Les binaires produits sont :
|
|
|
|
|
* src/rle2/eydrle2
|
|
|
|
|
* src/rle1/eydrle
|
|
|
|
|
|
|
|
|
|
4.2. Utilisation
|
|
|
|
|
|
|
|
|
|
Les binaires de EnlargeYourData doivent <20>tre appel<65>s avec la syntaxe
|
|
|
|
|
suivante:
|
|
|
|
|
|
|
|
|
|
Usage: eydrleX <parametres_obligatoires> <options>
|
|
|
|
|
|
|
|
|
|
Les param<61>tres obligatoires sont les suivants:
|
|
|
|
|
* -m, --mode (c|u): "c" pour compresser, "u" pour d<>compresser,
|
|
|
|
|
* -i, --input <fichier>: Le fichier original <20> compresser ou
|
|
|
|
|
d<>compresser,
|
|
|
|
|
|
|
|
|
|
Les parames optionnels sont les suivants:
|
|
|
|
|
* -o, --output <fichier>: Le fichier resultant de la compression ou
|
|
|
|
|
d<>compression,
|
|
|
|
|
* -c, --cellsize <entier> : La tailles des blocs de bits utilis<69>s
|
|
|
|
|
pour la compression.
|
|
|
|
|
|
|
|
|
|
5. Documentation
|
|
|
|
|
|
|
|
|
|
5.1. Code
|
|
|
|
|
|
|
|
|
|
Vous pouvez trouver la documentation de EnlargeYourData dans le
|
|
|
|
|
dossier doc/html de l'application, ou en suivant [15]ce lien.
|
|
|
|
|
|
|
|
|
|
5.2. Le marqueur RLE
|
|
|
|
|
|
|
|
|
|
Il s'agit de la valeur z<>ro <20>crite sur X bits (X <20>tant la taille de
|
|
|
|
|
cellules choisies pour la compression).
|
|
|
|
|
|
|
|
|
|
Dans le cas ou dans le texte <20> compresser, on retrouver le marqueur
|
|
|
|
|
RLE, alors celui-ci est dupliqu<71>. Cependant, cela n'est pas efficace
|
|
|
|
|
lorsque l'on rencontre plus de deux fois d'affil<69>e le marqueur, car
|
|
|
|
|
cela g<>n<EFBFBD>rerait une suite dont la taille serait plus grande que 4, or
|
|
|
|
|
avec RLE toute suite d'au moins 3 cellules identiques se compresse en
|
|
|
|
|
3 cellules
|
|
|
|
|
|
|
|
|
|
5.3. Les fichiers de test
|
|
|
|
|
|
|
|
|
|
Les programmes de compression ont <20>t<EFBFBD> test<73>s sur plusieurs fichiers de
|
|
|
|
|
types diff<66>rents:
|
|
|
|
|
* application/data,
|
|
|
|
|
* application/ogg,
|
|
|
|
|
* image/jpeg,
|
|
|
|
|
* image/x-ms-bmp (mode RAW),
|
|
|
|
|
* image/x-portable-pixmap,
|
|
|
|
|
* image/pcx (fichier deja compress<73> en RLE),
|
|
|
|
|
* text/plain
|
|
|
|
|
|
|
|
|
|
Les taux de compression
|
|
|
|
|
|
|
|
|
|
Pour RLE1, on obtient, dans le meilleur des cas (pour la taille X de
|
|
|
|
|
cellules de bits comprise entre 3 et 32):
|
|
|
|
|
* application/data : X=8 ,Ratio=100.39%
|
|
|
|
|
* application/ogg : X=30, Ratio=100%
|
|
|
|
|
* image/x-ms-bmp (mode RAW)-test 1 : X=3, Ratio=93.14%
|
|
|
|
|
* image/x-ms-bmp (mode RAW)-test 2: X=8, Ratio=14.43%
|
|
|
|
|
* image/x-portable-pixmap : X=6, Ratio=25.69%
|
|
|
|
|
* image/pcx (fichier deja compress<73> en RLE) : X=16, Ratio=95.97%
|
|
|
|
|
* text/plain test1 : X=, Ratio=76.19%
|
|
|
|
|
* text/plain test1 : X=, Ratio=99.70%
|
|
|
|
|
|
|
|
|
|
Par contre en ce qui concerne RLE2, dans la majorit<69> des cas, les
|
|
|
|
|
fichiers produits sont plus gros que les originaux...
|
|
|
|
|
|
|
|
|
|
Cependant, on peut utiliser la tendance au "gaspillage" de RLE2
|
|
|
|
|
(lorsqu'il souhaite stocker une petite valeurs sur une cellule trop
|
|
|
|
|
grande), a des fins de compression, en appliquant une compression par
|
|
|
|
|
RLE1 sur le fichier produit.
|
|
|
|
|
|
|
|
|
|
Dans le cas des fichiers MS-Bitmap on peut souvent descendre <20> la
|
|
|
|
|
moiti<74> de ce que produit RLE1 tout seul.
|
|
|
|
|
|
|
|
|
|
Les utilisations de RLE
|
|
|
|
|
|
|
|
|
|
On retrouve le format RLE utilis<69> principalement dans ce qui concerne
|
|
|
|
|
le stockage d'images, notamment les images en couleurs index<65>es (noir
|
|
|
|
|
et blanc, et palettes de couleurs).
|
|
|
|
|
Il est pr<70>sent (par exemple) :
|
|
|
|
|
- dans la compression utilis<69>e par les fax
|
|
|
|
|
- dans une variante du format BMP (image/x-ms-bmp),
|
|
|
|
|
- dans le format d'images PCX (utilisant des palettes de couleurs, et
|
|
|
|
|
tr<74>s utilis<69> <20> l'<27>poque du DOS sur PC).
|
|
|
|
|
|
|
|
|
|
On retrouve <20>galement souvent RLE associ<63> <20> un autre algorithme de
|
|
|
|
|
compression (voir le cours de C.Choffrut, cours sur Huffman).
|
|
|
|
|
|
|
|
|
|
Les probl<62>mes pos<6F>s par RLE2
|
|
|
|
|
|
|
|
|
|
RLE2, sans le codage de Golomb, n<>cessite la sp<73>cification d'une
|
|
|
|
|
taille de cellule pour stocker la taille des entiers representant les
|
|
|
|
|
suites de 0. Or arrive (fr<66>quement dans le cas des images noir et
|
|
|
|
|
blanc) que ces entiers d<>passent le plus grand nombre stockable (2^X -
|
|
|
|
|
1) sur cellule de X bits.
|
|
|
|
|
On peut soit consid<69>rer que la compression est impossible avec cette
|
|
|
|
|
taille de cellule (comme r<>alis<69> dans le code du TP), soit on peut
|
|
|
|
|
evisager des solutions un peu plus complexes, consistant <20> :
|
|
|
|
|
* Consid<69>rer que la cellule suivant une cellule dont la valeur est
|
|
|
|
|
(2^X - 1 ) repr<70>sente la "suite" du codage de la m<>me suite. Ainsi
|
|
|
|
|
sur 3 bits, on codera la suite 00100000...0001 (20 z<>ros entre les
|
|
|
|
|
deux "1") de la fa<66>on suivante :
|
|
|
|
|
"2 7 7 4 0"
|
|
|
|
|
Dans ce cas, on "perdra" une cellule (qui sera fix<69>e <20> 0) dans le
|
|
|
|
|
cas ou l'on rencontrera sur une suite de longueur multiple de (2^X
|
|
|
|
|
- 1).
|
|
|
|
|
* L'autre technique consiste <20> garder la valeur maximum d'une
|
|
|
|
|
cellule comme caract<63>re d'<27>chappement [RLE2], pour ensuite coder
|
|
|
|
|
de la fa<66>on suivante sur 3 bits: 001000....0001 (20 z<>ros entre
|
|
|
|
|
les deux "1") :
|
|
|
|
|
"2 [RLE2] 7 7 4 [RLE2] 0"
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
R<EFBFBD>f<EFBFBD>rences
|
|
|
|
|
|
|
|
|
|
1. file://localhost/home/warbrain/Documents/Cours/M2/Formats_de_Documents_et_Compression/EnlargeYourData/trunk/doc/index.html#1._Description
|
|
|
|
|
2. file://localhost/home/warbrain/Documents/Cours/M2/Formats_de_Documents_et_Compression/EnlargeYourData/trunk/doc/index.html#1.1._Auteurs
|
|
|
|
|
3. file://localhost/home/warbrain/Documents/Cours/M2/Formats_de_Documents_et_Compression/EnlargeYourData/trunk/doc/index.html#2._Pr%E9-requis
|
|
|
|
|
4. file://localhost/home/warbrain/Documents/Cours/M2/Formats_de_Documents_et_Compression/EnlargeYourData/trunk/doc/index.html#2.1._Sur_un_syst%E8me_Debian_GNULinux
|
|
|
|
|
5. file://localhost/home/warbrain/Documents/Cours/M2/Formats_de_Documents_et_Compression/EnlargeYourData/trunk/doc/index.html#2.2._Sur_un_syst%E8me_Apple_MacOS_X_
|
|
|
|
|
6. file://localhost/home/warbrain/Documents/Cours/M2/Formats_de_Documents_et_Compression/EnlargeYourData/trunk/doc/index.html#2.3._Sur_un_syst%E8me_Microsoft_Windows
|
|
|
|
|
7. file://localhost/home/warbrain/Documents/Cours/M2/Formats_de_Documents_et_Compression/EnlargeYourData/trunk/doc/index.html#3._Se_procurer_MiniFTPc
|
|
|
|
|
8. file://localhost/home/warbrain/Documents/Cours/M2/Formats_de_Documents_et_Compression/EnlargeYourData/trunk/doc/index.html#4._Utiliser_MiniFTPc
|
|
|
|
|
9. file://localhost/home/warbrain/Documents/Cours/M2/Formats_de_Documents_et_Compression/EnlargeYourData/trunk/doc/index.html#4.1._Compilation
|
|
|
|
|
10. file://localhost/home/warbrain/Documents/Cours/M2/Formats_de_Documents_et_Compression/EnlargeYourData/trunk/doc/index.html#4.2._Utilisation
|
|
|
|
|
11. file://localhost/home/warbrain/Documents/Cours/M2/Formats_de_Documents_et_Compression/EnlargeYourData/trunk/doc/index.html#5._Documentation
|
|
|
|
|
12. http://www.gnu.org/copyleft/gpl.html
|
|
|
|
|
13. mailto:glenux@fr.st
|
|
|
|
|
14. http://glenux2.free.fr/pub/projets/MiniFTPc/archives/
|
|
|
|
|
15. file://localhost/home/warbrain/Documents/Cours/M2/Formats_de_Documents_et_Compression/EnlargeYourData/trunk/doc/html/index.html
|