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 Les paramètres obligatoires sont les suivants: * -m, --mode (c|u): "c" pour compresser, "u" pour décompresser, * -i, --input : Le fichier original à compresser ou décompresser, Les parames optionnels sont les suivants: * -o, --output : Le fichier resultant de la compression ou décompression, * -c, --cellsize : 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