This commit is contained in:
parent
6e71b527b8
commit
72c55a09a8
4 changed files with 1367 additions and 1 deletions
|
@ -1 +1,4 @@
|
||||||
SUBDIRS = src
|
SUBDIRS = src
|
||||||
|
|
||||||
|
EXTRA_DIST = doc INSTALL README doxygen.conf autogen
|
||||||
|
|
||||||
|
|
246
README
246
README
|
@ -0,0 +1,246 @@
|
||||||
|
|
||||||
|
EnlargeYourData
|
||||||
|
|
||||||
|
1. [1]Description
|
||||||
|
|
||||||
|
1. [2]Auteurs
|
||||||
|
|
||||||
|
[3]Pré-requis
|
||||||
|
1. [4]Sur un système Debian GNU/Linux
|
||||||
|
2. [5]Sur un système Apple MacOSX (>=10.3)
|
||||||
|
3. [6]Sur un systè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és sur l'algorithme RLE et
|
||||||
|
ses variation. Il possède les caractéristiques suivantes :
|
||||||
|
* Il est distribué sous la licence [12]GNU General Public License
|
||||||
|
* Il est écrit en C++ et possède une interface textuelle
|
||||||
|
* Il implemente RLE (suite de motifs identiques),
|
||||||
|
* Il implémente la variante de RLE (on l'appellera RLE2 dans la
|
||||||
|
suite de ce document) encodant les bits à zéros entre les bits à
|
||||||
|
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 été entièrement réalisé par Glenn ROLLAND
|
||||||
|
<[13]glenux@fr.st> à l'occasion de travaux pratiques du cours de
|
||||||
|
format de documents et compression du Master 2 Ingénierie Informatique
|
||||||
|
- Systèmes, Réseaux et Internet.
|
||||||
|
|
||||||
|
2. Pré-requis
|
||||||
|
|
||||||
|
EnlargeYourData nécessite les bibliothè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è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ème Apple MacOS X (>= 10.3)
|
||||||
|
|
||||||
|
Il est nécessaire d'avoir installé les autotools (automake,
|
||||||
|
autoconf...) dans leur dernière version. À partir de là, il suffit de
|
||||||
|
taper les commandes suivantes dans un terminal :
|
||||||
|
|
||||||
|
# sudo fink install glib2-dev
|
||||||
|
|
||||||
|
2.3. Sur un système Microsoft Windows
|
||||||
|
|
||||||
|
Cela ne fut pas (encore) testé, mais il est très probable que cela
|
||||||
|
fonctionne sous Cygwin.
|
||||||
|
|
||||||
|
3. Se procurer EnlargeYourData
|
||||||
|
|
||||||
|
Vous pouvez télécharger la dernière archive des sources, ou bien
|
||||||
|
directement la version la plus récente du projet sur le dépôt
|
||||||
|
Subversion du projet.
|
||||||
|
|
||||||
|
3.1. L'archive des sources
|
||||||
|
|
||||||
|
Elle est disponible à l'adresse :
|
||||||
|
[14]http://glenux2.free.fr/pub/projets/EnlargeYourData/archives/
|
||||||
|
|
||||||
|
3.2. Le dépôt Subversion
|
||||||
|
|
||||||
|
Afin d'obtenir les sources les plus à jour, vous pouvez utiliser le
|
||||||
|
logiciel de contrô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ée" pour l'utilisateur "anonymous", si ce dernier vous est
|
||||||
|
demandé.
|
||||||
|
|
||||||
|
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'être créé 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 être appelés avec la syntaxe
|
||||||
|
suivante:
|
||||||
|
|
||||||
|
Usage: eydrleX <parametres_obligatoires> <options>
|
||||||
|
|
||||||
|
Les paramètres obligatoires sont les suivants:
|
||||||
|
* -m, --mode (c|u): "c" pour compresser, "u" pour décompresser,
|
||||||
|
* -i, --input <fichier>: Le fichier original à 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é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 écrite sur X bits (X étant la taille de
|
||||||
|
cellules choisies pour la compression).
|
||||||
|
|
||||||
|
Dans le cas ou dans le texte à compresser, on retrouver le marqueur
|
||||||
|
RLE, alors celui-ci est dupliqué. Cependant, cela n'est pas efficace
|
||||||
|
lorsque l'on rencontre plus de deux fois d'affilée le marqueur, car
|
||||||
|
cela génè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 été testés sur plusieurs fichiers de
|
||||||
|
types différents:
|
||||||
|
* application/data,
|
||||||
|
* application/ogg,
|
||||||
|
* image/jpeg,
|
||||||
|
* image/x-ms-bmp (mode RAW),
|
||||||
|
* image/x-portable-pixmap,
|
||||||
|
* image/pcx (fichier deja compressé 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é 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é 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 à la
|
||||||
|
moitié de ce que produit RLE1 tout seul.
|
||||||
|
|
||||||
|
Les utilisations de RLE
|
||||||
|
|
||||||
|
On retrouve le format RLE utilisé principalement dans ce qui concerne
|
||||||
|
le stockage d'images, notamment les images en couleurs indexées (noir
|
||||||
|
et blanc, et palettes de couleurs).
|
||||||
|
Il est présent (par exemple) :
|
||||||
|
- dans la compression utilisé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ès utilisé à l'époque du DOS sur PC).
|
||||||
|
|
||||||
|
On retrouve également souvent RLE associé à un autre algorithme de
|
||||||
|
compression (voir le cours de C.Choffrut, cours sur Huffman).
|
||||||
|
|
||||||
|
Les problèmes posés par RLE2
|
||||||
|
|
||||||
|
RLE2, sans le codage de Golomb, nécessite la spécification d'une
|
||||||
|
taille de cellule pour stocker la taille des entiers representant les
|
||||||
|
suites de 0. Or arrive (fré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èrer que la compression est impossible avec cette
|
||||||
|
taille de cellule (comme réalisé dans le code du TP), soit on peut
|
||||||
|
evisager des solutions un peu plus complexes, consistant à :
|
||||||
|
* Considérer que la cellule suivant une cellule dont la valeur est
|
||||||
|
(2^X - 1 ) repré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çon suivante :
|
||||||
|
"2 7 7 4 0"
|
||||||
|
Dans ce cas, on "perdra" une cellule (qui sera fixée à 0) dans le
|
||||||
|
cas ou l'on rencontrera sur une suite de longueur multiple de (2^X
|
||||||
|
- 1).
|
||||||
|
* L'autre technique consiste à garder la valeur maximum d'une
|
||||||
|
cellule comme caractère d'échappement [RLE2], pour ensuite coder
|
||||||
|
de la façon suivante sur 3 bits: 001000....0001 (20 zéros entre
|
||||||
|
les deux "1") :
|
||||||
|
"2 [RLE2] 7 7 4 [RLE2] 0"
|
||||||
|
|
||||||
|
<
|
||||||
|
|
||||||
|
Réfé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
|
|
@ -166,7 +166,7 @@ AC_SUBST(TARGET_HAVE_READLINE)
|
||||||
#AC_SUBST(LIBXMLPP_LIBS)
|
#AC_SUBST(LIBXMLPP_LIBS)
|
||||||
|
|
||||||
|
|
||||||
AC_CONFIG_FILES([Makefile src/Makefile src/lib/Makefile src/rle1/Makefile src/rle2/Makefile])
|
AC_CONFIG_FILES([Makefile src/Makefile src/lib/Makefile src/rle1/Makefile src/rle2/Makefile src/tests/Makefile])
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
||||||
dnl configure.in ends here
|
dnl configure.in ends here
|
||||||
|
|
1117
doxygen.conf
Normal file
1117
doxygen.conf
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue