Improve lossless compression.

This is essentially a revert of a3611513d2
and cfbcc5ece0.
Here is what happened: there was a corruption bug that eventually
got fixed by 0174d18d8b.
But before finding the root, a3611513d2
and cfbcc5ece0 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
This commit is contained in:
Vincent Rabaud 2016-06-24 16:11:25 +02:00
parent 447adbce1e
commit 319e37be13

View File

@ -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);