]> mj.ucw.cz Git - libucw.git/commitdiff
updated the maximum prolong-factor
authorRobert Spalek <robert@ucw.cz>
Mon, 14 Jun 2004 10:24:56 +0000 (10:24 +0000)
committerRobert Spalek <robert@ucw.cz>
Mon, 14 Jun 2004 10:24:56 +0000 (10:24 +0000)
lib/lizard.h

index 25ba4bcee29fc946a6b41e9c265b4b02770e0d46..1929cffb0b0fe2b928f732b696586b68abf902c9 100644 (file)
 #define        LIZZARD_NEEDS_CHARS     8
   /* The compression routine needs input buffer 8 characters longer, because it
    * does not check the input bounds all the time.  */
-#define        LIZZARD_MAX_MULTIPLY    65LL/64
+#define        LIZZARD_MAX_MULTIPLY    23./22
 #define        LIZZARD_MAX_ADD         4
   /* In the worst case, the compressed file will not be longer than its
-   * original length * 65/64 + 4.
+   * original length * 23/22 + 4.
    *
    * The additive constant is for EOF and the header of the file.
    *
-   * The multiplicative constant 129/128 comes from an incompressible string of
-   * length 256 that requires a 2-byte header.  However, if longer strings get
-   * interrupted by a sequence of length 3 compressed into 2 characters, the
-   * overlap is sligtly bigger.
-   * TODO: check */
+   * The multiplicative constant comes from 19-byte incompressible string
+   * followed by a 3-sequence that can be compressed into 2-byte link.  This
+   * breaks the copy-mode and it needs to be restarted with a new header.  The
+   * total length is 2(header) + 2(link) + 19(string) = 23.
+   */
 
 int lizzard_compress(byte *in, uns in_len, byte *out);
 int lizzard_decompress(byte *in, byte *out);