After so much little improvements done. I finally decided to finish this version. Now more or less I am satisfied with its performance, compared to my former works.
About the program:
- LZ77 (1M -- 128M dictionary) + range coder
- Hash3+HC4 match finder + flexible parsing, some tricks added.
- E89transform by Shelwien. A simple 3-channel Delta on RGB or 4-channel Delta on WAV, not so good, but better than nothing. They are turned on automaticly by file extension or manually.
- Three mode: -m1..-m3 from fast to high compression.
- typical speed: 2-5 M/s compression 15-40 M/s decompression (Single Core on 2.+ GHZ CPU)
Usage: csc3 [options] file1 file2
-m1 Fast -m2 Efficient -m3 Strong
-d0 .. -d7 Dictionary Size:1M..128M (2^n)
-fe Exe filter, -fd# delta with #channels, -fo Turn Off the filter.
This parameter is recommended when compressing unknown extensions.
-t DO NOT OUTPUT ( Maybe for test ).
file2 isn't necessary in such situation.
Default: -m2 -d4 (16M) Auto filter by extension.
example: csc3 -m2 -d5 -fe e:\d\t\tar2 r:\out.csc
Osman , Shelwien who are very patient to me and give me many experiences
which can not be obtained on books. 8 months ago I knew nothing about DC.
And Bulat who is the most experienced LZ-developer on the forum also gave me some practical advices.
nanoflooder helped me made some tests.
Though the code was completely done by myself (except e89). Little idea was original invented. I think it's better to post the source. It's programmed under visucal c++ 2008 express edition.
The code may looks very ugly .
I still have so much to improve. Filters&detection BinaryTreeMF OptimalParsing are the main for me. The programming have began, however there is still long distance to become practical.
This version is hoped to be final, but I can't guarantee no bug even many tests done on my own computer. So If you found bugs, tell me as soon as possible please. Hope it will work on squeezechart's wikipedia.
Replys and advices always be welcome!