This commit is contained in:
glenux 2005-10-31 17:55:11 +00:00
parent 6e71b527b8
commit 72c55a09a8
4 changed files with 1367 additions and 1 deletions

View file

@ -1 +1,4 @@
SUBDIRS = src
EXTRA_DIST = doc INSTALL README doxygen.conf autogen

246
README
View file

@ -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

View file

@ -166,7 +166,7 @@ AC_SUBST(TARGET_HAVE_READLINE)
#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
dnl configure.in ends here

1117
doxygen.conf Normal file

File diff suppressed because it is too large Load diff