Files
easy7zip/DOC/Methods-Extern.txt
2016-12-30 12:16:05 +01:00

198 lines
6.9 KiB
Plaintext

7-Zip external method IDs, that are not included to 7-Zip
---------------------------------------------------------
History of this document
------------------------
- 7-Zip Version 15.01, initial release
Overview of defined ID ranges
-----------------------------
F7 0x xx - reserved
F7 10 xx - LZHAM by Rich Geldreich
F7 11 01 - ZStandard by Yann Collet, Tino Reichardt
F7 11 04 - LZ4 by Yann Collet, Tino Reichardt
F7 11 05 - LZ5 by Przemyslaw Skibinski, Tino Reichardt
Range F7 10 xx - LZHAM
-----------------------
Description:
Lossless data compression codec with LZMA-like ratios but 1.5x-8x faster
decompression speed, C/C++
License:
LZHAM library is provided as open source software using a MIT license.
7-Zip Container Header:
Byte _ver;
Byte _dict_size;
Byte _level;
Byte _flags;
Byte _reserved[1];
Algorithm author: Rich Geldreich
Algorithm Homepage: https://github.com/richgel999/lzham_codec
Source code: https://github.com/richgel999/lzham_codec
Codec plugin author: Rich Geldreich
Codec Homepage: http://richg42.blogspot.de/2015/02/lzham-10-integrated-into-7zip-command.html
Source Code: http://www.tenacioussoftware.com/7zipsrc_release3_lzham_1_0.7z
Range F7 11 01, ZStandard
-------------------------
Description:
Zstandard is a real-time compression algorithm, providing high compression
ratios. It offers a very wide range of compression / speed trade-off, while
being backed by a very fast decoder (see benchmarks below). It also offers a
special mode for small data, called dictionary compression, and can create
dictionaries from any sample set.
License:
Zstandard library is provided as open source software using a BSD license.
7-Zip Container Header:
Byte _ver_major; // currently 1
Byte _ver_minor; // currently 1
Byte _level; // currently 1..22
Byte _reserved[2];
- this header holds some information about the version, which was
used for creating that 7-Zip container data
- _ver_major should contain the major release of zstd
- _ver_minor should contain the major release of zstd
- _level should contain the level, the data is packed with
- the other two bytes should be set to zero currently and are
reserved for future use
Algorithm author: Yann Collet
Algorithm Homepage: https://facebook.github.io/zstd/
Source code: https://github.com/facebook/zstd
Codec plugin author: Tino Reichardt
Codec Homepage: https://mcmilk.de/projects/7-Zip-zstd/
Source Code: https://github.com/mcmilk/7-Zip-zstd
Modes:
- threading is supported through skippable frame id 0x184D2A50U
- all levels are supported (1..22)
- future versions of zstd will support multithreading out of the box
-> this new format is fully compatible with the one within this codec
- the codec is used as archiv handler also, see ZstdHandler.cpp
- this handler is does not use any additional headers, it supports the plain
zstd v1.0 format (this covers all current v1.x implemetations)
- when compiled with ZSTD_LEGACY_SUPPORT, then support is increased to these
addtional version numbers of zstd: v0.1 up v0.7
- future formats of this algorithm will be fully compatible with release v1.0 of
ZStandard (ZStandard 0.8 == ZStandard 1.0)
- one ID should be okay for this codec
Versions:
The 7-Zip codec will be kept in sync with the current releases of ZStandard.
Range F7 11 04, LZ4
-------------------
Description:
LZ4 is lossless compression algorithm, providing compression speed at 400 MB/s
per core (0.16 Bytes/cycle). It features an extremely fast decoder, with speed
in multiple GB/s per core (0.71 Bytes/cycle). A high compression derivative,
called LZ4_HC, is available, trading customizable CPU time for compression
ratio. LZ4 library is provided as open source software using a BSD license.
License:
LZ4 library is provided as open source software using a BSD license.
7-Zip Container Header:
Byte _ver_major; // currently 1
Byte _ver_minor; // currently 7
Byte _level; // 1..16
Byte _reserved[2];
- this header holds some information about the version, which was
used for creating that 7-Zip container data
- _ver_major should contain the major release of LZ4
- _ver_minor should contain the major release of LZ4
- _level should contain the level, the data is packed with
- the other two bytes should be set to zero currently and are
reserved for future use
Algorithm author: Yann Collet
Algorithm Homepage: https://lz4.github.io/lz4/
Source code: https://github.com/lz4/lz4
Codec plugin author: Tino Reichardt
Codec Homepage: https://mcmilk.de/projects/7-Zip-zstd/
Source Code: https://github.com/mcmilk/7-Zip-zstd
Modes:
- threading is supported through skippable frame id 0x184D2A50U
- all levels of LZ4 v1.7.4 are supported (1..16)
- the codec is used as archiv handler also, see Lz4Handler.cpp
- this handler is does not use any additional headers, it supports the plain
lz4 v1.7.4 format (this covers all current lz4 implemetations)
- future formats of this algorithm should be fully compatible with current
release
- one ID should be okay for this codec
Versions:
The 7-Zip codec will be kept in sync with the current releases of LZ4.
Range F7 11 05, LZ5
-------------------
Description:
LZ5 is a modification of LZ4 which gives a better ratio at cost of slower
compression and decompression.
License:
LZ5 library is provided as open source software using a BSD license.
7-Zip Container Header:
Byte _ver_major; // currently 1
Byte _ver_minor; // currently 5
Byte _level; // 1..16
Byte _reserved[2];
- this header holds some information about the version, which was
used for creating that 7-Zip container data
- _ver_major should contain the major release of LZ5
- _ver_minor should contain the major release of LZ5
- _level should contain the level, the data is packed with
- the other two bytes should be set to zero currently and are
reserved for future use
Algorithm author: Przemyslaw Skibinski
Algorithm Homepage: https://github.com/inikep/lz5
Source code: https://github.com/inikep/lz5
Codec plugin author: Tino Reichardt
Codec Homepage: https://mcmilk.de/projects/7-Zip-zstd/
Source Code: https://github.com/mcmilk/7-Zip-zstd
Modes:
- threading is supported through skippable frame id 0x184D2A50U
- all levels of v1.5 are supported (1..16)
- the codec is used as archiv handler also, see Lz5Handler.cpp
- this handler is does not use any additional headers, it supports the plain
lz5 v1.5 format
- future formats of this algorithm may not be compatible with current release,
this codec is very experimental
- one ID should be okay for this codec
Versions:
The 7-Zip codec will be kept in sync with the current releases of LZ5.
The current codec plugin supports version v1.5. Version 2.0 will follow, when it
seems to be stable.
---
End of document
Tino Reichardt, 2016-12-28