From 2fcb7fe8967d10316f3c731f06290da3792eac13 Mon Sep 17 00:00:00 2001 From: Christian Schneider Date: Fri, 4 Aug 2017 06:54:56 +0200 Subject: [PATCH] Check for "final compression found" improved - identical compressed size must be the same, too - before, there were cases where everything was decompressed, but identical compressed size was smaller than it could be with other combinations - improves compression ratio for some files --- precomp.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/precomp.cpp b/precomp.cpp index 5276cdb..7080270 100644 --- a/precomp.cpp +++ b/precomp.cpp @@ -6071,7 +6071,7 @@ void try_recompress(FILE* origfile, int comp_level, int mem_level, int windowbit printf ("Identical decompressed bytes: %i of %i\n", identical_bytes_decomp, decomp_bytes_total); } - final_compression_found = (identical_bytes_decomp == decomp_bytes_total) && (penalty_bytes_len < PENALTY_BYTES_TOLERANCE); + final_compression_found = (identical_bytes_decomp == decomp_bytes_total) && (identical_bytes == compressed_stream_size) && (penalty_bytes_len < PENALTY_BYTES_TOLERANCE); } best_identical_bytes_decomp = identical_bytes_decomp; @@ -6102,7 +6102,7 @@ void try_recompress_bzip2(FILE* origfile, int level, int& compressed_stream_size printf ("Identical decompressed bytes: %i of %i\n", identical_bytes_decomp, decomp_bytes_total); } - final_compression_found = (identical_bytes_decomp == decomp_bytes_total) && (penalty_bytes_len < PENALTY_BYTES_TOLERANCE); + final_compression_found = (identical_bytes_decomp == decomp_bytes_total) && (identical_bytes == compressed_stream_size) && (penalty_bytes_len < PENALTY_BYTES_TOLERANCE); } best_identical_bytes_decomp = identical_bytes_decomp;