This commit is contained in:
parent
6e71b527b8
commit
72c55a09a8
4 changed files with 1367 additions and 1 deletions
|
@ -1 +1,4 @@
|
|||
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_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
1117
doxygen.conf
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue