Results 1 to 9 of 9

Thread: Maximal CAB compression

  1. #1
    Member Surfer's Avatar
    Join Date
    Mar 2009
    Location
    oren
    Posts
    203
    Thanks
    18
    Thanked 7 Times in 1 Post

    Maximal CAB compression

    I've interested in maximal CAB compression.

    Most of CAB compressors and archivers uses cabinet.dll and some WinAPI functions, so compression have similar rates.
    If somebody knows something like repack tools for cabs, it would be greatly appreciated.

    Edit: also found this thread http://encode.ru/threads/1252
    Last edited by Surfer; 17th February 2015 at 08:38.

  2. #2
    Programmer Bulat Ziganshin's Avatar
    Join Date
    Mar 2007
    Location
    Uzbekistan
    Posts
    4,497
    Thanks
    733
    Thanked 659 Times in 354 Posts
    the shnaader thread is about decompressing LZX for further better compression like precomp does for deflate

    i've seen independent lzx compressor (on googlecode?), but it probably doesn't compress better than mscab library
    Last edited by Bulat Ziganshin; 17th February 2015 at 15:19.

  3. #3
    Member
    Join Date
    May 2012
    Location
    United States
    Posts
    323
    Thanks
    174
    Thanked 51 Times in 37 Posts
    Surfer,

    There was a time where I spent a lot of time finding the absolute best CAB (LZX) compression.

    All programs do use, as you mentioned, the Microsoft Cabinet.dll to compress--there is nothing else out there that I've found.

    The program that always produces the highest compression ratios is HeleCABCompressor:
    ftp://ftp.sac.sk/pub/sac/pack/cabcomp.exe

    Make sure you check the box that uses "extension grouping".

    The problem with LZX is that it is not open source and Microsoft has a patent that I don't think expired yet. This is why all programs must use cabinet.dll to compress to LZX format. HeleCABCompressor obviously calls some function(s) in Cabinet.dll taht the other programs do not when compressing.

    Good luck.

  4. The Following 2 Users Say Thank You to comp1 For This Useful Post:

    nikkho (17th February 2015),Surfer (17th February 2015)

  5. #4
    Member Fallon's Avatar
    Join Date
    May 2008
    Location
    Europe - The Netherlands
    Posts
    154
    Thanks
    14
    Thanked 10 Times in 5 Posts
    You may find that CabPack compresses a couple of bytes better than HeleCabCompressor. Because it's just a shell over a renamed cabinet.dll.
    Also several versions of Cabinet.dll can be tried. That will probably make no difference.

    There was a time when a German program was developed (I would have to look up the name) which was a serious tool specifically meant for Cab compression.
    It did not compress better than CabPack, but more interesting is why its development was ended.
    My guess is because Cab-compression was almost unusable. It could lead to conflicts when Windows recognized it. Perhaps this may still be the case.

  6. #5
    Member Surfer's Avatar
    Join Date
    Mar 2009
    Location
    oren
    Posts
    203
    Thanks
    18
    Thanked 7 Times in 1 Post
    Quote Originally Posted by Fallon View Post
    There was a time when a German program was developed (I would have to look up the name) which was a serious tool specifically meant for Cab compression.
    I remember only German Squeez which supports Cab creation.

    BTW, "Quantum" method is very rare for CABs, only LZX and MSZip used in the wild.

  7. #6
    Member
    Join Date
    Nov 2014
    Location
    Earth
    Posts
    38
    Thanks
    0
    Thanked 77 Times in 19 Posts
    There is an open source LZX compressor included with wimlib (see: http://sourceforge.net/p/wimlib/code...lzx_compress.c). It can't compete with cabarc directly because it isn't integrated into an archiver for the CAB format, nor does it support sliding windows (since the WIM format uses fixed-size chunks). However, when testing with 2 MB files, then at a high compression setting it comes within 1% of cabarc on most inputs and sometimes beats it.

    If you want a significantly better compression ratio, though, then you may be out of luck because I think that both implementations are close to optimal. The major things I've left on the table in wimlib are (1) being smart about when to choose new Huffman codes, and (2) considering multiple arrivals or multi-step coding operations to use the match offset LRU queue more effectively. But probably the compression ratio can't be improved by more than 1 or 2% on average while sticking with LZX.

  8. The Following User Says Thank You to Zyzzyva For This Useful Post:

    Bulat Ziganshin (18th February 2015)

  9. #7
    Member
    Join Date
    Oct 2013
    Location
    Filling a much-needed gap in the literature
    Posts
    350
    Thanks
    177
    Thanked 49 Times in 35 Posts
    Quote Originally Posted by comp1 View Post
    The problem with LZX is that it is not open source and Microsoft has a patent that I don't think expired yet.
    Any idea what patent(s) would cover anything in LZX?

    LZX is about 20 years old---Wikipedia says the Amiga version came out in 1995, and it sounds like the Microsoft version (with variable window sizes, CALL transformation, and a few other things) came out the next year.

    I'd think any relevant patents would have expired, or will expire in the next year or so.
    Last edited by Paul W.; 18th February 2015 at 15:10.

  10. #8
    Member Fallon's Avatar
    Join Date
    May 2008
    Location
    Europe - The Netherlands
    Posts
    154
    Thanks
    14
    Thanked 10 Times in 5 Posts
    Quote Originally Posted by Surfer View Post
    I remember only German Squeez which supports Cab creation.

    BTW, "Quantum" method is very rare for CABs, only LZX and MSZip used in the wild.
    Yes, I have used Squeez as well at some point. Errrr... I believe it was Cabman, short for Cabinet Manager.
    I should still have it somewhere, but not in my system search result.
    (whatdoyouknow, not much kicking anymore, but it is alive out there: http://www.microlog.org/ ).

    I have seen Windows Update halt after too many LZX cabs were introduced on a system.
    Windows messaged that unknown cabs were the reason. Quantum method?
    Could be water under the bridge now.
    Last edited by Fallon; 18th February 2015 at 17:55.

  11. #9
    Member
    Join Date
    May 2012
    Location
    United States
    Posts
    323
    Thanks
    174
    Thanked 51 Times in 37 Posts
    Quote Originally Posted by Paul W. View Post
    Any idea what patent(s) would cover anything in LZX?

    LZX is about 20 years old---Wikipedia says the Amiga version came out in 1995, and it sounds like the Microsoft version (with variable window sizes, CALL transformation, and a few other things) came out the next year.

    I'd think any relevant patents would have expired, or will expire in the next year or so.
    Paul,

    Yes you are correct. I did a little searching for myself and it confirmed what you said. If there are any patents on it today, I don't know any.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •