Go to file
glenux 45a264efbc Renamed EnlargeYourData to enlargeyourdata. 2009-01-18 20:37:22 +00:00
doc 2005-10-31 18:14:02 +00:00
src 2006-01-03 10:47:46 +00:00
AUTHORS 2005-10-31 17:58:27 +00:00
COPYING 2005-10-29 09:57:59 +00:00
ChangeLog 2005-10-29 09:56:06 +00:00
INSTALL 2005-10-29 09:57:43 +00:00
Makefile.am 2006-01-03 10:59:34 +00:00
NEWS 2005-10-29 10:00:23 +00:00
README 2005-10-31 17:55:11 +00:00
autogen 2005-10-29 10:01:25 +00:00
config.h.in 2005-10-29 10:01:25 +00:00
configure.in 2006-01-03 10:38:07 +00:00
doxygen.conf 2006-01-03 10:18:19 +00:00

README

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