From 5e75642efd6363ba152ccf6a0d3b87840184c324 Mon Sep 17 00:00:00 2001 From: Jyrki Alakuijala Date: Thu, 11 Jun 2015 18:49:37 +0000 Subject: [PATCH] lossless: rle mode not to accept lengths smaller than 4. Gives a compression gain of 0.22 % Change-Id: I0f3b8dad6b4c1bfb16eab095a467f34466b9e3b7 --- src/enc/backward_references.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/enc/backward_references.c b/src/enc/backward_references.c index a6d64d1d..ca9f2675 100644 --- a/src/enc/backward_references.c +++ b/src/enc/backward_references.c @@ -368,7 +368,15 @@ static int BackwardReferencesRle(int xsize, int ysize, if (argb[i] == argb[i - 1]) { ++match_len; } else { - PushBackCopy(refs, match_len); + const int kMinLength = 4; + if (match_len >= kMinLength) { + PushBackCopy(refs, match_len); + } else { + int k; + for(k = match_len; k >= 1; --k) { + AddSingleLiteral(argb[i - k], use_color_cache, &hashers, refs); + } + } match_len = 0; AddSingleLiteral(argb[i], use_color_cache, &hashers, refs); }