Here is a small test compressor I wrote after reading about bzip2. This uses the Burrows-Wheeler Transform and low-order context modelling. There is also a LZP pre-processing stage to solve string repetitions that slow BWT (aaaa..., ababab..., abcabcabc...) more effectively than RLE in bzip2. It supports blocks from 1 MB to 128 MB.
Usage:
BWCM c in out
BWCM d out in_reconstructed
Maximum compression:
BWCM c128 in out
If this crashes, it means too much memory was used. Use smaller blocks: c64 or c32 instead.
Last edited by cade; 7th December 2013 at 04:35.
Reason: Fixed attached exe
If that build doesn't work for you, I have used static linking this time (huge file sizes) so no other libraries are needed, and tested on an old computer running Windows XP. Sorry for the inconvenience.
Edit: I updated the attached files in the top post.
Could you please give me a link to download the test set, and tell me if it also crashes the other compressor I uploaded?
Edit: I found the problem, I assumed lzp_size would need the same number of bits as block size (at most), I forgot that the worst-case for lzp is larger than original (escape codes). Sorry for the inconvenience, I have updated the first post.
Thanks for testing them. Just a minor nitpick, you spelt my name incorrectly.
I'll try to get back to developing programs soon. I have some other ideas, but they are more for practical speeds with good compression instead of better compression.