zstd-x64.dll!NCompress::NZSTD::CDecoder::CodeSpec(ISequentialInStream * inStream=0x000000001e6a2190, ISequentialOutStream * outStream=0x000000001e6b9460, ICompressProgressInfo * progress=0x0000000000000000) Line 130 C++
zstd-x64.dll!NCompress::NZSTD::CDecoder::Code(ISequentialInStream * inStream=0x000000001e6a2190, ISequentialOutStream * outStream=0x000000001e6b9460, const unsigned __int64 * __formal=0x000000001e8a2d00, const unsigned __int64 * outSize=0x000000001e5eb3b0, ICompressProgressInfo * progress=0x0000000000000000) Line 177 C++
7z.dll!NCoderMixer2::CCoderMT::Code(ICompressProgressInfo * progress=0x0000000000000000) Line 903 C++
7z.dll!NCoderMixer2::CMixerMT::Code(ISequentialInStream * const * inStreams=0x000000001e8a2d20, ISequentialOutStream * const * outStreams=0x00000000219bf910, ICompressProgressInfo * progress=0x0000000000000000, bool & dataAfterEnd_Error=false) Line 1083 C++
7z.dll!NArchive::N7z::CDecoder::Decode(const CExternalCodecs * __externalCodecs=0x000000001e599aa0, IInStream * inStream=0x000000001e8c6300, unsigned __int64 startPos=32, const NArchive::N7z::CFolders & folders={...}, unsigned int folderIndex=0, const unsigned __int64 * unpackSize=0x0000000000000000, ISequentialOutStream * outStream=0x000000001e6b9460, ICompressProgressInfo * compressProgress=0x0000000000000000, ISequentialInStream * * inStreamMainRes=0x0000000000000000, bool & dataAfterEnd_Error=false, ICryptoGetTextPassword * getTextPassword=0x000000001e6882b0, bool & isEncrypted=true, bool & passwordIsDefined=true, UString & password={...}, bool mtMode=false, unsigned int numThreads=1, unsigned __int64 memUsage=0) Line 555 C++
7z.dll!NArchive::N7z::CThreadDecoder::Execute() Line 1493 C++
7z.dll!CoderThread(void * p=0x000000001f1cbe90) Line 16 C++
Other 7z threads are:
7z.dll!Handle_WaitObject(void * h=0x0000000000000868) Line 32 C
7z.dll!NWindows::NSynchronization::CBaseEvent::Lock() Line 47 C++
7z.dll!CStreamBinder::Read(void * data=0x000000001e9b53ea, unsigned int size=115206, unsigned int * processedSize=0x000000001f1cb310) Line 95 C++
7z.dll!CBinderInStream::Read(void * data=0x000000001e9b53ea, unsigned int size=115206, unsigned int * processedSize=0x000000001f1cb310) Line 22 C++
7z.dll!COffsetOutStream::Write(const void * data=0x000000001e9b53ea, unsigned int size=115206, unsigned int * processedSize=0x000000001f1cb310) Line 19 C++
7z.dll!CSequentialInStreamSizeCount2::Read(void * data=0x000000001e9b53ea, unsigned int size=115206, unsigned int * processedSize=0x000000001f1cb350) Line 10 C++
zstd-x64.dll!ReadStream(ISequentialInStream * stream=0x000000001e7b4010, void * data=0x000000001e9b53ea, unsigned __int64 * processedSize=0x000000001f1cb3b8) Line 17 C++
zstd-x64.dll!NCompress::NZSTD::CEncoder::Code(ISequentialInStream * inStream=0x000000001e7b4010, ISequentialOutStream * outStream=0x000000001e8e0dc0, const unsigned __int64 * __formal=0x0000000000000000, const unsigned __int64 * __formal=0x0000000000000000, ICompressProgressInfo * progress=0x000000001b6df8d0) Line 329 C++
7z.dll!NCoderMixer2::CCoderMT::Code(ICompressProgressInfo * progress=0x000000001b6df8d0) Line 903 C++
7z.dll!NCoderMixer2::CMixerMT::Code(ISequentialInStream * const * inStreams=0x000000001f1cb750, ISequentialOutStream * const * outStreams=0x000000001e599bc0, ICompressProgressInfo * progress=0x000000001b6df8d0, bool & dataAfterEnd_Error=false) Line 1083 C++
7z.dll!NArchive::N7z::CEncoder::Encode(const CExternalCodecs * __externalCodecs=0x000000001e599aa0, ISequentialInStream * inStream=0x000000001e7b3f10, const unsigned __int64 * inSizeForReduce=0x000000001f1cb960, NArchive::N7z::CFolder & folderItem={...}, CRecordVector<unsigned __int64> & coderUnpackSizes={...}, unsigned __int64 & unpackSize=17468, ISequentialOutStream * outStream=0x000000001e8bcdd0, CRecordVector<unsigned __int64> & packSizes={...}, ICompressProgressInfo * compressProgress=0x000000001b6df8d0) Line 454 C++
7z.dll!NArchive::N7z::Update(const CExternalCodecs * __externalCodecs=0x000000001e599aa0, IInStream * inStream=0x000000001e8c6300, const NArchive::N7z::CDbEx * db=0x000000001e5998a8, const CObjectVector<NArchive::N7z::CUpdateItem> & updateItems={...}, NArchive::N7z::COutArchive & archive={...}, NArchive::N7z::CArchiveDatabaseOut & newDatabase={...}, ISequentialOutStream * seqOutStream=0x000000001e8bcdd0, IArchiveUpdateCallback * updateCallback=0x000000001f1cc980, const NArchive::N7z::CUpdateOptions & options={...}, ICryptoGetTextPassword * getDecoderPassword=0x000000001f1cc958) Line 2178 C++
7z.dll!NArchive::N7z::CHandler::UpdateItems(ISequentialOutStream * outStream=0x000000001e8bcdd0, unsigned int numItems=10, IArchiveUpdateCallback * updateCallback=0x000000001f1cc980) Line 658 C++
And:
7z.dll!Handle_WaitObject(void * h=0x0000000000000880) Line 32 C
7z.dll!NWindows::NSynchronization::CBaseEvent::Lock() Line 47 C++
7z.dll!CStreamBinder::Read(void * data=0x0000000020650000, unsigned int size=1048576, unsigned int * processedSize=0x000000002084f6d0) Line 95 C++
7z.dll!CBinderInStream::Read(void * data=0x0000000020650000, unsigned int size=1048576, unsigned int * processedSize=0x000000002084f6d0) Line 22 C++
7z.dll!ReadStream(ISequentialInStream * stream=0x000000001e8e0de0, void * data=0x0000000020650000, unsigned __int64 * processedSize=0x000000002084f758) Line 17 C++
7z.dll!CFilterCoder::Code(ISequentialInStream * inStream=0x000000001e8e0de0, ISequentialOutStream * outStream=0x000000001e55da30, const unsigned __int64 * __formal=0x0000000000000000, const unsigned __int64 * outSize=0x0000000000000000, ICompressProgressInfo * progress=0x0000000000000000) Line 83 C++
7z.dll!NCoderMixer2::CCoderMT::Code(ICompressProgressInfo * progress=0x0000000000000000) Line 903 C++
7z.dll!NCoderMixer2::CCoderMT::Execute() Line 867 C++
7z.dll!CoderThread(void * p=0x000000001e5eb510) Line 16 C++
README
This is the Github Page of 7-Zip ZS with support of additional Codecs. The library used therefore is located here: Multithreading Library
You can install it in two ways:
- complete setup with additions within the GUI and a modified Explorer context menu
- only the codec plugin that goes to your existing 7-Zip installation (no GUI changes and no additional Hashers)
Status
Codec overview
-
Zstandard v1.3.8 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.
- Levels: 1..22
-
Brotli v.1.0.7 is a generic-purpose lossless compression algorithm that compresses data using a combination of a modern variant of the LZ77 algorithm, Huffman coding and 2nd order context modeling, with a compression ratio comparable to the best currently available general-purpose compression methods. It is similar in speed with deflate but offers more dense compression.
- Levels: 0..11
-
LZ4 v1.8.3 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.
- Levels: 1..12
-
LZ5 v1.5 is a modification of LZ4 which gives a better ratio at cost of slower compression and decompression.
- Levels: 1..15
-
Lizard v1.0 is an efficient compressor with very fast decompression. It achieves compression ratio that is comparable to zip/zlib and zstd/brotli (at low and medium compression levels) at decompression speed of 1000 MB/s and faster.
- Levels 10..19 (fastLZ4) are designed to give about 10% better decompression speed than LZ4
- Levels 20..29 (LIZv1) are designed to give better ratio than LZ4 keeping 75% decompression speed
- Levels 30..39 (fastLZ4 + Huffman) adds Huffman coding to fastLZ4
- Levels 40..49 (LIZv1 + Huffman) give the best ratio, comparable to zlib and low levels of zstd/brotli, but with a faster decompression speed
-
Fast LZMA2 v0.9.2 is a LZMA2 compression algorithm, 20% to 100% faster than normal LZMA2 at levels 5 and above, but with a slightly lower compression ratio. It uses a parallel buffered radix matchfinder and some optimizations from Zstandard. The codec uses much less additional memory per thread than standard LZMA2.
- Levels: 1..9
7-Zip Zstandard Edition (full setup, with GUI and Explorer integration)
Installation (via setup)
- download the setup from here 7-Zip ZS Releases
- install it, like the default 7-Zip
- use it ;)
- you may check, if the 7-Zip can deal with Zstandard or other codecs via this command:
7z.exe i
The output should look like this:
7-Zip 18.06 ZS v1.3.8 R1 (x64) : Copyright (c) 1999-2018 Igor Pavlov, 2016-2018 Tino Reichardt : 2018-12-30
Libs:
0 c:\Program Files\7-Zip-Zstandard\7z.dll
1 C:\Program Files\7-Zip-Zstandard\Codecs\Iso7z.64.dll
Formats:
...
0 CK xz xz txz (.tar) FD 7 z X Z 00
0 Z z taz (.tar) 1F 9D
0 CK zstd zst tzstd (.tar) 0 x F D 2 F B 5 2 5 . . 0 x F D 2 F B 5 2 8 00
0 C F 7z 7z 7 z BC AF ' 1C
0 F Cab cab M S C F 00 00 00 00
...
Codecs:
0 4ED 303011B BCJ2
0 ED 3030103 BCJ
0 ED 3030205 PPC
0 ED 3030401 IA64
0 ED 3030501 ARM
0 ED 3030701 ARMT
0 ED 3030805 SPARC
0 ED 20302 Swap2
0 ED 20304 Swap4
0 ED 40202 BZip2
0 ED 0 Copy
0 ED 40109 Deflate64
0 ED 40108 Deflate
0 ED 3 Delta
0 ED 21 LZMA2
0 ED 30101 LZMA
0 ED 30401 PPMD
0 D 40301 Rar1
0 D 40302 Rar2
0 D 40303 Rar3
0 D 40305 Rar5
0 ED 4F71102 BROTLI
0 ED 4F71104 LZ4
0 ED 4F71106 LIZARD
0 ED 4F71105 LZ5
0 ED 4F71101 ZSTD
0 ED 21 FLZMA2
0 ED 6F10701 7zAES
0 ED 6F00181 AES256CBC
1 3ED 4F712FF RawSplitter
Hashers:
0 4 1 CRC32
0 16 205 MD2
0 16 206 MD4
0 16 207 MD5
0 20 201 SHA1
0 32 A SHA256
0 48 208 SHA384
0 64 209 SHA512
0 4 203 XXH32
0 8 204 XXH64
0 8 4 CRC64
0 32 202 BLAKE2sp
Usage and features of the full installation
- compression and decompression for Brotli, Lizard, LZ4, LZ5 and Zstandard within the 7-Zip container format
- compression and decompression of Lizard (
.liz), LZ4 (.lz4), LZ5 (.lz5) and Zstandard (.zst) files - included lzip decompression support, patch from: http://download.savannah.gnu.org/releases/lzip/7zip/
- right click and "Add to xy.7z" will use the last selected method (codec, level and threads)
- the FileManager ListBox will show more information about these codecs now
7z a archiv.7z -m0=zstd -mx0 Zstandard Fastest Mode, without BCJ preprocessor
7z a archiv.7z -m0=zstd -mx1 Zstandard Fast mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=zstd -mx.. ...
7z a archiv.7z -m0=zstd -mx21 Zstandard 2nd Slowest Mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=zstd -mx22 Zstandard Ultra Mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=lz4 -mx0 LZ4 Fastest Mode, without BCJ preprocessor
7z a archiv.7z -m0=lz4 -mx1 LZ4 Fast mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=lz4 -mx.. ...
7z a archiv.7z -m0=lz4 -mx12 LZ4 Ultra Mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=lz5 -mx0 LZ5 Version 1.5 Fastest Mode, without BCJ preprocessor
7z a archiv.7z -m0=lz5 -mx1 LZ5 Version 1.5 Fast mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=lz5 -mx.. ...
7z a archiv.7z -m0=lz5 -mx16 LZ5 Version 1.5 Ultra Mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=flzma2 -mx1 Fast LZMA2 Fastest mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=flzma2 -mx.. ...
7z a archiv.7z -m0=flzma2 -mx9 Fast LZMA2 Ultra Mode, with BCJ preprocessor on executables
7z x -so test.tar.zstd | 7z l -si -ttar
-> show contents of zstd compressed tar archiv test.tar.zstd
7z x -so test.tar.lz | 7z l -si -ttar
-> show contents of lzip compressed tar archiv test.tar.lz
Zstandard codec Plugin for Mainline 7-Zip
Installation (via plugin)
- download the
Codecs.7zarchiv from here 7-Zip ZS Releases, this archive holds binaries, which are compatible with the Mainline version of 7-Zip - create a new directory named
Codecsand put in there the zstd-x32.dll or the zstd-x64.dll, depending on your 7-Zip installation- normally, the x32 should go to: "C:\Program Files (x86)\7-Zip\Codecs"
- the x64 version should go in here: "C:\Program Files\7-Zip\Codecs"
- you could also replace the
7z.dlldirectly withinC:\Program Files (x86)\7-Zip - then you may check if the dll is correctly installed via this command:
7z.exe i
The output should look like this:
7-Zip 18.06 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2018-04-30
Libs:
0 C:\Program Files\7-Zip\7z.dll
Libs:
0 c:\Program Files\7-Zip\7z.dll
1 c:\Program Files\7-Zip\Codecs\brotli-x64.dll
2 c:\Program Files\7-Zip\Codecs\flzma2-x64.dll
3 c:\Program Files\7-Zip\Codecs\lizard-x64.dll
4 c:\Program Files\7-Zip\Codecs\lz4-x64.dll
5 c:\Program Files\7-Zip\Codecs\lz5-x64.dll
6 c:\Program Files\7-Zip\Codecs\zstd-x64.dll
...
Codecs:
0 4ED 303011B BCJ2
0 ED 3030103 BCJ
0 ED 3030205 PPC
0 ED 3030401 IA64
0 ED 3030501 ARM
0 ED 3030701 ARMT
0 ED 3030805 SPARC
0 ED 20302 Swap2
0 ED 20304 Swap4
0 ED 40202 BZip2
0 ED 0 Copy
0 ED 40109 Deflate64
0 ED 40108 Deflate
0 ED 3 Delta
0 ED 21 LZMA2
0 ED 30101 LZMA
0 ED 30401 PPMD
0 D 40301 Rar1
0 D 40302 Rar2
0 D 40303 Rar3
0 D 40305 Rar5
0 ED 6F10701 7zAES
0 ED 6F00181 AES256CBC
1 ED 4F71102 BROTLI
2 ED 21 FLZMA2
3 ED 4F71106 LIZARD
4 ED 4F71104 LZ4
5 ED 4F71105 LZ5
6 ED 4F71101 ZSTD
Usage (codec plugin)
- compression and decompression for Brotli, Fast LZMA2, Lizard, LZ4, LZ5 and Zstandard within the 7-Zip container format
- you can only create
.7zfiles, the files like.lz4,.lz5and.zstare not covered by the plugins - when compressing binaries (*.exe, *.dll), you have to explicitly disable the bcj2 filter via
-m0=bcj, when using only the plugin dll's - so the usage should look like this:
7z a archiv.7z -m0=bcj -m1=zstd -mx1 Fast mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=bcj -m1=zstd -mx.. ...
7z a archiv.7z -m0=bcj -m1=zstd -mx21 2nd Slowest Mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=bcj -m1=zstd -mx22 Ultra Mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=bcj -m1=brotli -mxN ...
7z a archiv.7z -m0=bcj -m1=lizard -mxN ...
7z a archiv.7z -m0=bcj -m1=lz4 -mxN ...
7z a archiv.7z -m0=bcj -m1=lz5 -mxN ...
7z a archiv.7z -m0=bcj -m1=flzma2 -mxN ...
Codec Plugin for Total Commander
- download TotalCmd.7z
- install it, by replacing the files
tc7z.dllandtc7z64.dllwith the new ones - you can check the Total Commander Forum for more information about this DLL Files
- decompression for Brotli, Lizard, LZ4, LZ5 and Zstandard ot the 7-Zip
.7zformat will work out of the box with Total Commander now :-)
Codec Plugin for Far Manager
- copy the
7z.dllfile fromC:\Program Files\7-Zip-Zstandard\7z.dlltoC:\Program Files\Far Manager\Plugins\ArcLite\7z.dll - then restart the Far manager - and on next start, you will have support for 7-Zip Zstandard archives ;-)
Benchmarks
For the benchmarks I am using Windows 7 64bit on my Laptop which has the following Hardware:
- Intel i7-3632QM, limited to 2,2GHz, 16GB RAM, disabled swap space
- the compression benchmark is read / written to an 4 GiB ImDisk
- the decompression benchmark is also done in RAM via:
7z t archiv.7z - the tool for measuring the times is wtime, together with some scripts
- the testfile is generated via generate-mcorpus
- please note, that the benchmarks are outdated now (new one will come, but it needs some time)
License and redistribution
- the same as the Mainline 7-Zip, which means GNU LGPL
Links
- 7-Zip Homepage
- 7-Zip Zstandard Homepage
- Request for inclusion into the mainline 7-Zip:
- result, will currently not included :(
Donate
You find this project useful, maybe you consider a donation ;-)
Version Information
- 7-Zip ZS Version 18.06
/TR 2018-12-30
Notes
- if you want an code signed installer, you need to donate sth.








