From: Robert Spalek Date: Mon, 14 Jun 2004 10:24:56 +0000 (+0000) Subject: updated the maximum prolong-factor X-Git-Tag: holmes-import~1056 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=b1fecd022eb9651c98d8692eb0f8683e54507977;p=libucw.git updated the maximum prolong-factor --- diff --git a/lib/lizard.h b/lib/lizard.h index 25ba4bce..1929cffb 100644 --- a/lib/lizard.h +++ b/lib/lizard.h @@ -10,18 +10,18 @@ #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);