
PRINCIPE DE LA COMPRESSION RSF (Runlength Special Format):
__________________________________________________________


1) Rechercher dans un RAW de 64768 octets (320x200 (image) + 3x256  (pal))
   les deux codes couleur (0<=code<=255) pour lesquels le nombre d'occurences
   est le plus faible.


2) Soient C1 et C2 ces deux codes (avec C1<>C2 et nbre d'occurs de C1 <= nbre
   d'occurs de C2). C1 et C2 seront mmoriss dans l'entte du fichier RSF
   respectivement  l'octet1 et  l'octet2 (si la compression est rentable),
   afin de servir ultrieurement pour la dcompression.


3) Ensuite, parcourir squentiellement l'ensemble des donnes du fichier
   RAW concern et:

   - Si on trouve une qt d'octets conscutifs identiques de telle sorte que
     3<qt<=255, alors compresser la srie comme suit

     Ŀ
      C2  octet  rpternbre de rptitions                    [3 OCTETS]
     
       
      Pointeur servant  signaler une compression de type BYTE
      qui permet de grer de 4  255 rptitions (car en dessous
      de 4 octets conscutifs identiques, la compression n'est 
      pas rentable)

    - Si on trouve une qt d'octets conscutifs identiques de telle sorte que
      255<qt<=65535, alors compresser la srie comme suit

     Ŀ
      C1  octet  rpter         nbre de rptitions           [4 OCTETS]
     
                           Octet de pds fort   Octet de pds faible
       
      Pointeur servant  signaler une compression de type WORD
      qui permet de grer de 256  65535 rptitions

    - Si on trouve des octets conscutifs non identiques (ou moins de 4),
      alors les coder tels quels.

    - Mais, si on rencontre des octets qui ont pour valeur C1 ou C2, que
      faire pour les diffrencier des structures de compressions BYTE ou
      WORD? Dans le premier cas, coder

     Ŀ
      C1       C1                 0                    1        [4 OCTETS]
     
      ce qui permet donc de diffrencier l'indicateur de compression de
      type WORD d'une occurence isole de C1.

      Dans le deuxime cas, coder alors

     Ŀ
      C2       C2                1                              [3 OCTETS]
     
       
    Voil!

        C'est un peu le point faible de cette mthode, car quand on rencontre
    C1 et C2, on les rallonge en 4 et 3 octets  la compression, d'o
    l'intrt de bien choir C1 et C2 (s'ils n'apparaissent pas, ou trs peu
    dans une image, c'est parfait). D'un autre ct, un cran noir (64000
    octets sans la palette) est alors potentiellement codable sur 6 octets!!!
    (2 servant de pointeurs + 4 de compression de type WORD!). Quoiqu'il en
    soit, si une image compresse venait  dpasser 64768 octets (si par
    exemple elle est excessivement trame, et avec les 256 couleurs utilises
    abondamment), on conservera alors l'image en mode raw du fichier initial.
    Pour terminer, on constatera aisment qu'au vu de la technique de 
    compression, les temps de compression/dcompression sont quasiment 
    ngligeables (notamment par rapport  une compression de type LZW du 
    fameux format GIF!).

                                                 Patrick Ruelle
                                                 43, av. de Grande Bretagne
                                                 98000 Monaco
                                                 Principaut de Monaco
