- LZMA_CONCATENATED flag removed (not needed because of a single stream)
- Code adapted from liblzma decompress.cpp example
- Sleep in own_fwrite removed
- Before: Only compression level 1-9 was shown
- After. Compression and memory level are shown similar to -zl parameter
(e.g. compression level 5, memory level 6 shows as "level combination
56")
- original compressed size is tracked now
- trying combination stop has a new constraint: new compressed size must
be the same as the original compressed size
- fixed some usages of identical_bytes_decomp (instead of
best_identical_bytes_decomp) that could lead to "No matches" although
matches were found
- there were cases where everything was decompressed, but penalty bytes
were used and trying combinations was stopped too early
- penalty byte must now be 0 before trying combinations is stopped
- Merged compare_file_mem and compare_files_penalty
- There was a temporary file between the two functions before which is
not needed anymore, comparisons are done in memory on 512 byte chunks
- Result on silesia.zip: 15% faster (30,7 s => 26,2 s)
- See issue #14
- Only some files used partial matches, on most of them, compression was
worse with them
- Now "recompression failed" is printed instead and the stream doesn't
get processed further
- compare_files_penalty for "real identical bytes" is useless now, as it
gives the same result as the compare_files_penalty done before
- file truncation is unnecessary
- Before, partial matches led to additional decompression and
recompression to determinate the precise size of the partial match
- We can remove these 2 steps by using a slightly less precise size that
is known before
- Results for silesia.zip: 20% faster (37->30 seconds), 0.2% overhead in
bZip2 compressed variant (64,629,217 -> 64,764,849 bytes)
- Breaking out of both loops when final compression was found in all
two-loop cases (zip, gzip, brute)
- Prevents unnecessary additional try_recompress calls
- For supported MP3 streams, all frame header information must be the
same for the whole stream.
- For unsupported MP3 streams, this has been removed and only the stream
type has to be the same. This will lead to some more false positives,
but give longer streams, so the log is not bloated with thousands small
false positives
- Moved contrib declarations from precomp.cpp in header files in contrib
directories
- Moved Precomp declarations to precomp.h
- Renamed old precomp.h to precomp_dll.h