You have chosen to sponsor your bid up to a maximum amount of .
We first need you to fully implement all of the functions in attached SevenZipWrap.pas in Delphi through direct calls to 7z.dll.
All functions and parameters must be implemented just as in the current version in order to completely compatible our existing main application which will use your code.
You do not need to worry about binding strings as long as you can match or beat our current compression. A sample 7zip file attached for comparison. target.7z size: 737 KB (755,461 bytes)
However we will require five compression settings per the parameters below:
1- '-ms=off -mhc=off -m0=None -m0=Copy ' // store data in uncompressed form.
2- '-ms=off -mhc=off -m0=LZMA -m0d=15 -m0mf=hc3 -m0fb=32 ' // compress data using the LZMA data compression algorithm and a 32 KB buffer for hash chaining.
3- '-ms=off -mhc=off -m0=LZMA -m0d=21 -m0mf=bt4 -m0fb=32 ' // compress data using the LZMA data compression algorithm and a 4 MB buffer for binary trees.
4- '-ms=on -mhc=on -m0=BCJ -m1=LZMA -m1d=23 -m1mf=bt4 -m1fb=64 ' pre-process data using binary call jump converters to increase compressability, treat all files as a continuous data stream, and use an 8 MB buffer for LZMA compression.
5- '-ms=on -mhc=on -m0=BCJ2 -m1=LZMA -m1d=25 -m1mf=bt4b -m1fb=255 -m2=LZMA -m2d=20 -m2mf=bt4b -m2fb=64 -m3=LZMA -m3d=20 -m3mf=bt4b -m3fb=64 -mb0:1 -mb0s1:2 -mb0s2:3 ' // pre-process data, compress from a continuous stream, and use a 32 MB LZMA buffer.
I have heard that an ultra compression ratio is also now possible with 7zip, so a new compression setting may be introduced for that. I recall reading it required gigabytes of memory during compression and similarly during extraction; so definitely something optional. Last but not least, we currently do not support the lzma2 algorithm, but it is available in the new 7zip. It compresses a little worse but much faster. So some more compression presets, in addition to the five existing + one ultra, will be necessary to factor in the lzma2 choice. Please ask if you have any questions, or other feedback/suggestions regarding these compression presets.
For supporting LZMA2, you could also provide a boolean setting (with default value= FALSE) that would replace all instances of the LZMA algorithms with LZMA2 instead. This would save the hassle of defining new compression presets just for the LZMA2 codec.