From 319e37be1303cf29b35b6100a3775ee6aea39dac Mon Sep 17 00:00:00 2001 From: Vincent Rabaud Date: Fri, 24 Jun 2016 16:11:25 +0200 Subject: [PATCH] Improve lossless compression. This is essentially a revert of a3611513d2bf465fd282d9dc45b3f72c79c232ad and cfbcc5ece022fc74ae9b987e05c2807df0d82ec5. Here is what happened: there was a corruption bug that eventually got fixed by 0174d18d8b51f6c9228c70066a987c30a8132995. But before finding the root, a3611513d2bf465fd282d9dc45b3f72c79c232ad and cfbcc5ece022fc74ae9b987e05c2807df0d82ec5 hid the bug by not imposing length of 1 when it was actually 2 or 3 (which does help compression as a litteral is more efficient than an offset and a length of size 2 or 3). Change-Id: I6f18fc1f583a51ac9d8aab2508458264047cd493 --- src/enc/backward_references.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/enc/backward_references.c b/src/enc/backward_references.c index e3c2a357..34036640 100644 --- a/src/enc/backward_references.c +++ b/src/enc/backward_references.c @@ -442,7 +442,7 @@ static int BackwardReferencesLz77(int xsize, int ysize, int len = 0; int j; HashChainFindCopy(hash_chain, i, &offset, &len); - if (len > MIN_LENGTH) { + if (len > MIN_LENGTH + 1) { const int len_ini = len; int max_reach = 0; assert(i + len < pix_count); @@ -464,7 +464,7 @@ static int BackwardReferencesLz77(int xsize, int ysize, } } } else { - len = (len == 0) ? 1 : len; + len = 1; } // Go with literal or backward reference. assert(len > 0);