From 96ade47c182bf37a2efca2aa62922e54e5ff1660 Mon Sep 17 00:00:00 2001 From: Arttu Tarkiainen Date: Wed, 6 Apr 2022 13:33:38 +0300 Subject: Move LZMA SDK to 3rdparty subdirectory Also add attribution document. Task-number: QTIFW-2336 Change-Id: I91546bc6c3ace244e4b546b945f40b7d204f7463 Reviewed-by: Katja Marttila Reviewed-by: Qt CI Bot --- src/libs/7zip/win/CPP/7zip/Compress/Bcj2Coder.cpp | 366 --------------------- src/libs/7zip/win/CPP/7zip/Compress/Bcj2Coder.h | 82 ----- .../7zip/win/CPP/7zip/Compress/Bcj2Register.cpp | 19 -- src/libs/7zip/win/CPP/7zip/Compress/BcjCoder.cpp | 15 - src/libs/7zip/win/CPP/7zip/Compress/BcjCoder.h | 19 -- .../7zip/win/CPP/7zip/Compress/BcjRegister.cpp | 19 -- .../7zip/win/CPP/7zip/Compress/BranchCoder.cpp | 19 -- src/libs/7zip/win/CPP/7zip/Compress/BranchCoder.h | 44 --- src/libs/7zip/win/CPP/7zip/Compress/BranchMisc.cpp | 21 -- src/libs/7zip/win/CPP/7zip/Compress/BranchMisc.h | 14 - .../7zip/win/CPP/7zip/Compress/BranchRegister.cpp | 30 -- src/libs/7zip/win/CPP/7zip/Compress/ByteSwap.cpp | 73 ---- src/libs/7zip/win/CPP/7zip/Compress/Compress.pri | 30 -- src/libs/7zip/win/CPP/7zip/Compress/CopyCoder.cpp | 74 ----- src/libs/7zip/win/CPP/7zip/Compress/CopyCoder.h | 35 -- .../7zip/win/CPP/7zip/Compress/CopyRegister.cpp | 14 - .../7zip/win/CPP/7zip/Compress/DeltaFilter.cpp | 125 ------- .../7zip/win/CPP/7zip/Compress/Lzma2Decoder.cpp | 189 ----------- src/libs/7zip/win/CPP/7zip/Compress/Lzma2Decoder.h | 73 ---- .../7zip/win/CPP/7zip/Compress/Lzma2Encoder.cpp | 94 ------ src/libs/7zip/win/CPP/7zip/Compress/Lzma2Encoder.h | 36 -- .../7zip/win/CPP/7zip/Compress/Lzma2Register.cpp | 20 -- .../7zip/win/CPP/7zip/Compress/LzmaDecoder.cpp | 266 --------------- src/libs/7zip/win/CPP/7zip/Compress/LzmaDecoder.h | 88 ----- .../7zip/win/CPP/7zip/Compress/LzmaEncoder.cpp | 161 --------- src/libs/7zip/win/CPP/7zip/Compress/LzmaEncoder.h | 38 --- .../7zip/win/CPP/7zip/Compress/LzmaRegister.cpp | 20 -- src/libs/7zip/win/CPP/7zip/Compress/RangeCoder.h | 201 ----------- .../7zip/win/CPP/7zip/Compress/RangeCoderBit.h | 114 ------- src/libs/7zip/win/CPP/7zip/Compress/StdAfx.h | 8 - 30 files changed, 2307 deletions(-) delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/Bcj2Coder.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/Bcj2Coder.h delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/Bcj2Register.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/BcjCoder.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/BcjCoder.h delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/BcjRegister.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/BranchCoder.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/BranchCoder.h delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/BranchMisc.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/BranchMisc.h delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/BranchRegister.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/ByteSwap.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/Compress.pri delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/CopyCoder.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/CopyCoder.h delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/CopyRegister.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/DeltaFilter.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/Lzma2Decoder.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/Lzma2Decoder.h delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/Lzma2Encoder.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/Lzma2Encoder.h delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/Lzma2Register.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/LzmaDecoder.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/LzmaDecoder.h delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/LzmaEncoder.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/LzmaEncoder.h delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/LzmaRegister.cpp delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/RangeCoder.h delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/RangeCoderBit.h delete mode 100644 src/libs/7zip/win/CPP/7zip/Compress/StdAfx.h (limited to 'src/libs/7zip/win/CPP/7zip/Compress') diff --git a/src/libs/7zip/win/CPP/7zip/Compress/Bcj2Coder.cpp b/src/libs/7zip/win/CPP/7zip/Compress/Bcj2Coder.cpp deleted file mode 100644 index 9da6b9c28..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/Bcj2Coder.cpp +++ /dev/null @@ -1,366 +0,0 @@ -// Bcj2Coder.cpp - -#include "StdAfx.h" - -#include "../../../C/Alloc.h" - -#include "Bcj2Coder.h" - -namespace NCompress { -namespace NBcj2 { - -inline bool IsJcc(Byte b0, Byte b1) { return (b0 == 0x0F && (b1 & 0xF0) == 0x80); } -inline bool IsJ(Byte b0, Byte b1) { return ((b1 & 0xFE) == 0xE8 || IsJcc(b0, b1)); } -inline unsigned GetIndex(Byte b0, Byte b1) { return ((b1 == 0xE8) ? b0 : ((b1 == 0xE9) ? 256 : 257)); } - -#ifndef EXTRACT_ONLY - -static const unsigned kBufSize = 1 << 17; - -#define NUM_BITS 2 -#define SIGN_BIT (1 << NUM_BITS) -#define MASK_HIGH (0x100 - (1 << (NUM_BITS + 1))) - -static const UInt32 kDefaultLimit = (1 << (24 + NUM_BITS)); - -static bool inline Test86MSByte(Byte b) -{ - return (((b) + SIGN_BIT) & MASK_HIGH) == 0; -} - -CEncoder::~CEncoder() -{ - ::MidFree(_buf); -} - -HRESULT CEncoder::Flush() -{ - RINOK(_mainStream.Flush()); - RINOK(_callStream.Flush()); - RINOK(_jumpStream.Flush()); - _rc.FlushData(); - return _rc.FlushStream(); -} - -HRESULT CEncoder::CodeReal(ISequentialInStream **inStreams, const UInt64 **inSizes, UInt32 numInStreams, - ISequentialOutStream **outStreams, const UInt64 ** /* outSizes */, UInt32 numOutStreams, - ICompressProgressInfo *progress) -{ - if (numInStreams != 1 || numOutStreams != 4) - return E_INVALIDARG; - - if (!_mainStream.Create(1 << 18)) return E_OUTOFMEMORY; - if (!_callStream.Create(1 << 18)) return E_OUTOFMEMORY; - if (!_jumpStream.Create(1 << 18)) return E_OUTOFMEMORY; - if (!_rc.Create(1 << 20)) return E_OUTOFMEMORY; - if (_buf == 0) - { - _buf = (Byte *)MidAlloc(kBufSize); - if (_buf == 0) - return E_OUTOFMEMORY; - } - - bool sizeIsDefined = false; - UInt64 inSize = 0; - if (inSizes) - if (inSizes[0]) - { - inSize = *inSizes[0]; - if (inSize <= kDefaultLimit) - sizeIsDefined = true; - } - - ISequentialInStream *inStream = inStreams[0]; - - _mainStream.SetStream(outStreams[0]); _mainStream.Init(); - _callStream.SetStream(outStreams[1]); _callStream.Init(); - _jumpStream.SetStream(outStreams[2]); _jumpStream.Init(); - _rc.SetStream(outStreams[3]); _rc.Init(); - for (unsigned i = 0; i < 256 + 2; i++) - _statusEncoder[i].Init(); - - CMyComPtr getSubStreamSize; - { - inStream->QueryInterface(IID_ICompressGetSubStreamSize, (void **)&getSubStreamSize); - } - - UInt32 nowPos = 0; - UInt64 nowPos64 = 0; - UInt32 bufPos = 0; - - Byte prevByte = 0; - - UInt64 subStreamIndex = 0; - UInt64 subStreamStartPos = 0; - UInt64 subStreamEndPos = 0; - - for (;;) - { - UInt32 processedSize = 0; - for (;;) - { - UInt32 size = kBufSize - (bufPos + processedSize); - UInt32 processedSizeLoc; - if (size == 0) - break; - RINOK(inStream->Read(_buf + bufPos + processedSize, size, &processedSizeLoc)); - if (processedSizeLoc == 0) - break; - processedSize += processedSizeLoc; - } - UInt32 endPos = bufPos + processedSize; - - if (endPos < 5) - { - // change it - for (bufPos = 0; bufPos < endPos; bufPos++) - { - Byte b = _buf[bufPos]; - _mainStream.WriteByte(b); - UInt32 index; - if (b == 0xE8) - index = prevByte; - else if (b == 0xE9) - index = 256; - else if (IsJcc(prevByte, b)) - index = 257; - else - { - prevByte = b; - continue; - } - _statusEncoder[index].Encode(&_rc, 0); - prevByte = b; - } - return Flush(); - } - - bufPos = 0; - - UInt32 limit = endPos - 5; - while (bufPos <= limit) - { - Byte b = _buf[bufPos]; - _mainStream.WriteByte(b); - if (!IsJ(prevByte, b)) - { - bufPos++; - prevByte = b; - continue; - } - Byte nextByte = _buf[bufPos + 4]; - UInt32 src = - (UInt32(nextByte) << 24) | - (UInt32(_buf[bufPos + 3]) << 16) | - (UInt32(_buf[bufPos + 2]) << 8) | - (_buf[bufPos + 1]); - UInt32 dest = (nowPos + bufPos + 5) + src; - // if (Test86MSByte(nextByte)) - bool convert; - if (getSubStreamSize) - { - UInt64 currentPos = (nowPos64 + bufPos); - while (subStreamEndPos < currentPos) - { - UInt64 subStreamSize; - HRESULT result = getSubStreamSize->GetSubStreamSize(subStreamIndex, &subStreamSize); - if (result == S_OK) - { - subStreamStartPos = subStreamEndPos; - subStreamEndPos += subStreamSize; - subStreamIndex++; - } - else if (result == S_FALSE || result == E_NOTIMPL) - { - getSubStreamSize.Release(); - subStreamStartPos = 0; - subStreamEndPos = subStreamStartPos - 1; - } - else - return result; - } - if (getSubStreamSize == NULL) - { - if (sizeIsDefined) - convert = (dest < inSize); - else - convert = Test86MSByte(nextByte); - } - else if (subStreamEndPos - subStreamStartPos > kDefaultLimit) - convert = Test86MSByte(nextByte); - else - { - UInt64 dest64 = (currentPos + 5) + Int64(Int32(src)); - convert = (dest64 >= subStreamStartPos && dest64 < subStreamEndPos); - } - } - else if (sizeIsDefined) - convert = (dest < inSize); - else - convert = Test86MSByte(nextByte); - unsigned index = GetIndex(prevByte, b); - if (convert) - { - _statusEncoder[index].Encode(&_rc, 1); - bufPos += 5; - COutBuffer &s = (b == 0xE8) ? _callStream : _jumpStream; - for (int i = 24; i >= 0; i -= 8) - s.WriteByte((Byte)(dest >> i)); - prevByte = nextByte; - } - else - { - _statusEncoder[index].Encode(&_rc, 0); - bufPos++; - prevByte = b; - } - } - nowPos += bufPos; - nowPos64 += bufPos; - - if (progress) - { - /* - const UInt64 compressedSize = - _mainStream.GetProcessedSize() + - _callStream.GetProcessedSize() + - _jumpStream.GetProcessedSize() + - _rc.GetProcessedSize(); - */ - RINOK(progress->SetRatioInfo(&nowPos64, NULL)); - } - - UInt32 i = 0; - while (bufPos < endPos) - _buf[i++] = _buf[bufPos++]; - bufPos = i; - } -} - -STDMETHODIMP CEncoder::Code(ISequentialInStream **inStreams, const UInt64 **inSizes, UInt32 numInStreams, - ISequentialOutStream **outStreams, const UInt64 **outSizes, UInt32 numOutStreams, - ICompressProgressInfo *progress) -{ - try - { - return CodeReal(inStreams, inSizes, numInStreams, outStreams, outSizes,numOutStreams, progress); - } - catch(const COutBufferException &e) { return e.ErrorCode; } - catch(...) { return S_FALSE; } -} - -#endif - - -STDMETHODIMP CDecoder::SetInBufSize(UInt32 streamIndex, UInt32 size) { _inBufSizes[streamIndex] = size; return S_OK; } -STDMETHODIMP CDecoder::SetOutBufSize(UInt32 , UInt32 size) { _outBufSize = size; return S_OK; } - -CDecoder::CDecoder(): - _outBufSize(1 << 16) -{ - _inBufSizes[0] = 1 << 20; - _inBufSizes[1] = 1 << 20; - _inBufSizes[2] = 1 << 20; - _inBufSizes[3] = 1 << 20; -} - -HRESULT CDecoder::CodeReal(ISequentialInStream **inStreams, const UInt64 ** /* inSizes */, UInt32 numInStreams, - ISequentialOutStream **outStreams, const UInt64 ** /* outSizes */, UInt32 numOutStreams, - ICompressProgressInfo *progress) -{ - if (numInStreams != 4 || numOutStreams != 1) - return E_INVALIDARG; - - if (!_mainStream.Create(_inBufSizes[0])) return E_OUTOFMEMORY; - if (!_callStream.Create(_inBufSizes[1])) return E_OUTOFMEMORY; - if (!_jumpStream.Create(_inBufSizes[2])) return E_OUTOFMEMORY; - if (!_rc.Create(_inBufSizes[3])) return E_OUTOFMEMORY; - if (!_outStream.Create(_outBufSize)) return E_OUTOFMEMORY; - - _mainStream.SetStream(inStreams[0]); - _callStream.SetStream(inStreams[1]); - _jumpStream.SetStream(inStreams[2]); - _rc.SetStream(inStreams[3]); - _outStream.SetStream(outStreams[0]); - - _mainStream.Init(); - _callStream.Init(); - _jumpStream.Init(); - _rc.Init(); - _outStream.Init(); - - for (unsigned i = 0; i < 256 + 2; i++) - _statusDecoder[i].Init(); - - Byte prevByte = 0; - UInt32 processedBytes = 0; - for (;;) - { - if (processedBytes >= (1 << 20) && progress) - { - /* - const UInt64 compressedSize = - _mainStream.GetProcessedSize() + - _callStream.GetProcessedSize() + - _jumpStream.GetProcessedSize() + - _rc.GetProcessedSize(); - */ - const UInt64 nowPos64 = _outStream.GetProcessedSize(); - RINOK(progress->SetRatioInfo(NULL, &nowPos64)); - processedBytes = 0; - } - UInt32 i; - Byte b = 0; - const UInt32 kBurstSize = (1 << 18); - for (i = 0; i < kBurstSize; i++) - { - if (!_mainStream.ReadByte(b)) - return _outStream.Flush(); - _outStream.WriteByte(b); - if (IsJ(prevByte, b)) - break; - prevByte = b; - } - processedBytes += i; - if (i == kBurstSize) - continue; - unsigned index = GetIndex(prevByte, b); - if (_statusDecoder[index].Decode(&_rc) == 1) - { - UInt32 src = 0; - CInBuffer &s = (b == 0xE8) ? _callStream : _jumpStream; - for (unsigned i = 0; i < 4; i++) - { - Byte b0; - if (!s.ReadByte(b0)) - return S_FALSE; - src <<= 8; - src |= ((UInt32)b0); - } - UInt32 dest = src - (UInt32(_outStream.GetProcessedSize()) + 4) ; - _outStream.WriteByte((Byte)(dest)); - _outStream.WriteByte((Byte)(dest >> 8)); - _outStream.WriteByte((Byte)(dest >> 16)); - _outStream.WriteByte((Byte)(dest >> 24)); - prevByte = (Byte)(dest >> 24); - processedBytes += 4; - } - else - prevByte = b; - } -} - -STDMETHODIMP CDecoder::Code(ISequentialInStream **inStreams, const UInt64 **inSizes, UInt32 numInStreams, - ISequentialOutStream **outStreams, const UInt64 **outSizes, UInt32 numOutStreams, - ICompressProgressInfo *progress) -{ - try - { - return CodeReal(inStreams, inSizes, numInStreams, outStreams, outSizes,numOutStreams, progress); - } - catch(const CInBufferException &e) { return e.ErrorCode; } - catch(const COutBufferException &e) { return e.ErrorCode; } - catch(...) { return S_FALSE; } -} - -}} diff --git a/src/libs/7zip/win/CPP/7zip/Compress/Bcj2Coder.h b/src/libs/7zip/win/CPP/7zip/Compress/Bcj2Coder.h deleted file mode 100644 index e7bd37951..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/Bcj2Coder.h +++ /dev/null @@ -1,82 +0,0 @@ -// Bcj2Coder.h - -#ifndef __COMPRESS_BCJ2_CODER_H -#define __COMPRESS_BCJ2_CODER_H - -#include "../../Common/MyCom.h" - -#include "../ICoder.h" - -#include "RangeCoderBit.h" - -namespace NCompress { -namespace NBcj2 { - -const unsigned kNumMoveBits = 5; - -#ifndef EXTRACT_ONLY - -class CEncoder: - public ICompressCoder2, - public CMyUnknownImp -{ - Byte *_buf; - - COutBuffer _mainStream; - COutBuffer _callStream; - COutBuffer _jumpStream; - NRangeCoder::CEncoder _rc; - NRangeCoder::CBitEncoder _statusEncoder[256 + 2]; - - HRESULT Flush(); - -public: - MY_UNKNOWN_IMP - - HRESULT CodeReal(ISequentialInStream **inStreams, const UInt64 **inSizes, UInt32 numInStreams, - ISequentialOutStream **outStreams, const UInt64 **outSizes, UInt32 numOutStreams, - ICompressProgressInfo *progress); - STDMETHOD(Code)(ISequentialInStream **inStreams, const UInt64 **inSizes, UInt32 numInStreams, - ISequentialOutStream **outStreams, const UInt64 **outSizes, UInt32 numOutStreams, - ICompressProgressInfo *progress); - - CEncoder(): _buf(0) {}; - ~CEncoder(); -}; - -#endif - -class CDecoder: - public ICompressCoder2, - public ICompressSetBufSize, - public CMyUnknownImp -{ - CInBuffer _mainStream; - CInBuffer _callStream; - CInBuffer _jumpStream; - NRangeCoder::CDecoder _rc; - NRangeCoder::CBitDecoder _statusDecoder[256 + 2]; - - COutBuffer _outStream; - UInt32 _inBufSizes[4]; - UInt32 _outBufSize; - -public: - MY_UNKNOWN_IMP1(ICompressSetBufSize); - - HRESULT CodeReal(ISequentialInStream **inStreams, const UInt64 **inSizes, UInt32 numInStreams, - ISequentialOutStream **outStreams, const UInt64 **outSizes, UInt32 numOutStreams, - ICompressProgressInfo *progress); - STDMETHOD(Code)(ISequentialInStream **inStreams, const UInt64 **inSizes, UInt32 numInStreams, - ISequentialOutStream **outStreams, const UInt64 **outSizes, UInt32 numOutStreams, - ICompressProgressInfo *progress); - - STDMETHOD(SetInBufSize)(UInt32 streamIndex, UInt32 size); - STDMETHOD(SetOutBufSize)(UInt32 streamIndex, UInt32 size); - - CDecoder(); -}; - -}} - -#endif diff --git a/src/libs/7zip/win/CPP/7zip/Compress/Bcj2Register.cpp b/src/libs/7zip/win/CPP/7zip/Compress/Bcj2Register.cpp deleted file mode 100644 index 8eb1e7360..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/Bcj2Register.cpp +++ /dev/null @@ -1,19 +0,0 @@ -// Bcj2Register.cpp - -#include "StdAfx.h" - -#include "../Common/RegisterCodec.h" - -#include "Bcj2Coder.h" - -static void *CreateCodec() { return (void *)(ICompressCoder2 *)(new NCompress::NBcj2::CDecoder()); } -#ifndef EXTRACT_ONLY -static void *CreateCodecOut() { return (void *)(ICompressCoder2 *)(new NCompress::NBcj2::CEncoder()); } -#else -#define CreateCodecOut 0 -#endif - -static CCodecInfo g_CodecInfo = - { CreateCodec, CreateCodecOut, 0x0303011B, L"BCJ2", 4, false }; - -REGISTER_CODEC(BCJ2) diff --git a/src/libs/7zip/win/CPP/7zip/Compress/BcjCoder.cpp b/src/libs/7zip/win/CPP/7zip/Compress/BcjCoder.cpp deleted file mode 100644 index 0e34ef488..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/BcjCoder.cpp +++ /dev/null @@ -1,15 +0,0 @@ -// BcjCoder.cpp - -#include "StdAfx.h" - -#include "BcjCoder.h" - -UInt32 CBCJ_x86_Encoder::SubFilter(Byte *data, UInt32 size) -{ - return (UInt32)::x86_Convert(data, size, _bufferPos, &_prevMask, 1); -} - -UInt32 CBCJ_x86_Decoder::SubFilter(Byte *data, UInt32 size) -{ - return (UInt32)::x86_Convert(data, size, _bufferPos, &_prevMask, 0); -} diff --git a/src/libs/7zip/win/CPP/7zip/Compress/BcjCoder.h b/src/libs/7zip/win/CPP/7zip/Compress/BcjCoder.h deleted file mode 100644 index 0754bcd23..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/BcjCoder.h +++ /dev/null @@ -1,19 +0,0 @@ -// BcjCoder.h - -#ifndef __COMPRESS_BCJ_CODER_H -#define __COMPRESS_BCJ_CODER_H - -#include "../../../C/Bra.h" - -#include "BranchCoder.h" - -struct CBranch86 -{ - UInt32 _prevMask; - void x86Init() { x86_Convert_Init(_prevMask); } -}; - -MyClassB(BCJ_x86, 0x01, 3, CBranch86 , - virtual void SubInit() { x86Init(); }) - -#endif diff --git a/src/libs/7zip/win/CPP/7zip/Compress/BcjRegister.cpp b/src/libs/7zip/win/CPP/7zip/Compress/BcjRegister.cpp deleted file mode 100644 index 648ad8e03..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/BcjRegister.cpp +++ /dev/null @@ -1,19 +0,0 @@ -// BcjRegister.cpp - -#include "StdAfx.h" - -#include "../Common/RegisterCodec.h" - -#include "BcjCoder.h" - -static void *CreateCodec() { return (void *)(ICompressFilter *)(new CBCJ_x86_Decoder()); } -#ifndef EXTRACT_ONLY -static void *CreateCodecOut() { return (void *)(ICompressFilter *)(new CBCJ_x86_Encoder()); } -#else -#define CreateCodecOut 0 -#endif - -static CCodecInfo g_CodecInfo = - { CreateCodec, CreateCodecOut, 0x03030103, L"BCJ", 1, true }; - -REGISTER_CODEC(BCJ) diff --git a/src/libs/7zip/win/CPP/7zip/Compress/BranchCoder.cpp b/src/libs/7zip/win/CPP/7zip/Compress/BranchCoder.cpp deleted file mode 100644 index 431709526..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/BranchCoder.cpp +++ /dev/null @@ -1,19 +0,0 @@ -// BranchCoder.cpp - -#include "StdAfx.h" - -#include "BranchCoder.h" - -STDMETHODIMP CBranchConverter::Init() -{ - _bufferPos = 0; - SubInit(); - return S_OK; -} - -STDMETHODIMP_(UInt32) CBranchConverter::Filter(Byte *data, UInt32 size) -{ - UInt32 processedSize = SubFilter(data, size); - _bufferPos += processedSize; - return processedSize; -} diff --git a/src/libs/7zip/win/CPP/7zip/Compress/BranchCoder.h b/src/libs/7zip/win/CPP/7zip/Compress/BranchCoder.h deleted file mode 100644 index 0e3a5c4e1..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/BranchCoder.h +++ /dev/null @@ -1,44 +0,0 @@ -// BranchCoder.h - -#ifndef __COMPRESS_BRANCH_CODER_H -#define __COMPRESS_BRANCH_CODER_H - -#include "../../Common/MyCom.h" - -#include "../ICoder.h" - -class CBranchConverter: - public ICompressFilter, - public CMyUnknownImp -{ -protected: - UInt32 _bufferPos; - virtual void SubInit() {} - virtual UInt32 SubFilter(Byte *data, UInt32 size) = 0; -public: - MY_UNKNOWN_IMP; - STDMETHOD(Init)(); - STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size); -}; - -#define MyClassEncoderA(Name) class C ## Name: public CBranchConverter \ - { public: UInt32 SubFilter(Byte *data, UInt32 size); }; - -#define MyClassDecoderA(Name) class C ## Name: public CBranchConverter \ - { public: UInt32 SubFilter(Byte *data, UInt32 size); }; - -#define MyClassEncoderB(Name, ADD_ITEMS, ADD_INIT) class C ## Name: public CBranchConverter, public ADD_ITEMS \ - { public: UInt32 SubFilter(Byte *data, UInt32 size); ADD_INIT}; - -#define MyClassDecoderB(Name, ADD_ITEMS, ADD_INIT) class C ## Name: public CBranchConverter, public ADD_ITEMS \ - { public: UInt32 SubFilter(Byte *data, UInt32 size); ADD_INIT}; - -#define MyClassA(Name, id, subId) \ -MyClassEncoderA(Name ## _Encoder) \ -MyClassDecoderA(Name ## _Decoder) - -#define MyClassB(Name, id, subId, ADD_ITEMS, ADD_INIT) \ -MyClassEncoderB(Name ## _Encoder, ADD_ITEMS, ADD_INIT) \ -MyClassDecoderB(Name ## _Decoder, ADD_ITEMS, ADD_INIT) - -#endif diff --git a/src/libs/7zip/win/CPP/7zip/Compress/BranchMisc.cpp b/src/libs/7zip/win/CPP/7zip/Compress/BranchMisc.cpp deleted file mode 100644 index 239f25138..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/BranchMisc.cpp +++ /dev/null @@ -1,21 +0,0 @@ -// BranchMisc.cpp - -#include "StdAfx.h" - -#include "../../../C/Bra.h" - -#include "BranchMisc.h" - -#define SUB_FILTER_IMP2(name, coderStr, coderNum) \ - UInt32 CBC_ ## name ## coderStr::SubFilter(Byte *data, UInt32 size) \ - { return (UInt32)::name ## Convert(data, size, _bufferPos, coderNum); } - -#define SUB_FILTER_IMP(name) \ - SUB_FILTER_IMP2(name, Encoder, 1) \ - SUB_FILTER_IMP2(name, Decoder, 0) \ - -SUB_FILTER_IMP(ARM_) -SUB_FILTER_IMP(ARMT_) -SUB_FILTER_IMP(PPC_) -SUB_FILTER_IMP(SPARC_) -SUB_FILTER_IMP(IA64_) diff --git a/src/libs/7zip/win/CPP/7zip/Compress/BranchMisc.h b/src/libs/7zip/win/CPP/7zip/Compress/BranchMisc.h deleted file mode 100644 index 81198b21c..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/BranchMisc.h +++ /dev/null @@ -1,14 +0,0 @@ -// BranchMisc.h - -#ifndef __COMPRESS_BRANCH_MISC_H -#define __COMPRESS_BRANCH_MISC_H - -#include "BranchCoder.h" - -MyClassA(BC_ARM, 0x05, 1) -MyClassA(BC_ARMT, 0x07, 1) -MyClassA(BC_PPC, 0x02, 5) -MyClassA(BC_SPARC, 0x08, 5) -MyClassA(BC_IA64, 0x04, 1) - -#endif diff --git a/src/libs/7zip/win/CPP/7zip/Compress/BranchRegister.cpp b/src/libs/7zip/win/CPP/7zip/Compress/BranchRegister.cpp deleted file mode 100644 index 380828c6d..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/BranchRegister.cpp +++ /dev/null @@ -1,30 +0,0 @@ -// BranchRegister.cpp - -#include "StdAfx.h" - -#include "../Common/RegisterCodec.h" - -#include "BranchMisc.h" - -#define CREATE_CODEC(x) \ - static void *CreateCodec ## x() { return (void *)(ICompressFilter *)(new C ## x ## _Decoder); } \ - static void *CreateCodec ## x ## Out() { return (void *)(ICompressFilter *)(new C ## x ## _Encoder); } - -CREATE_CODEC(BC_PPC) -CREATE_CODEC(BC_IA64) -CREATE_CODEC(BC_ARM) -CREATE_CODEC(BC_ARMT) -CREATE_CODEC(BC_SPARC) - -#define METHOD_ITEM(x, id1, id2, name) { CreateCodec ## x, CreateCodec ## x ## Out, 0x03030000 + (id1 * 256) + id2, name, 1, true } - -static CCodecInfo g_CodecsInfo[] = -{ - METHOD_ITEM(BC_PPC, 0x02, 0x05, L"PPC"), - METHOD_ITEM(BC_IA64, 0x04, 1, L"IA64"), - METHOD_ITEM(BC_ARM, 0x05, 1, L"ARM"), - METHOD_ITEM(BC_ARMT, 0x07, 1, L"ARMT"), - METHOD_ITEM(BC_SPARC, 0x08, 0x05, L"SPARC") -}; - -REGISTER_CODECS(Branch) diff --git a/src/libs/7zip/win/CPP/7zip/Compress/ByteSwap.cpp b/src/libs/7zip/win/CPP/7zip/Compress/ByteSwap.cpp deleted file mode 100644 index 645b6ffcd..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/ByteSwap.cpp +++ /dev/null @@ -1,73 +0,0 @@ -// ByteSwap.cpp - -#include "StdAfx.h" - -#include "../../Common/MyCom.h" - -#include "../ICoder.h" - -#include "../Common/RegisterCodec.h" - -class CByteSwap2: - public ICompressFilter, - public CMyUnknownImp -{ -public: - MY_UNKNOWN_IMP - STDMETHOD(Init)(); - STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size); -}; - -class CByteSwap4: - public ICompressFilter, - public CMyUnknownImp -{ -public: - MY_UNKNOWN_IMP - STDMETHOD(Init)(); - STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size); -}; - -STDMETHODIMP CByteSwap2::Init() { return S_OK; } - -STDMETHODIMP_(UInt32) CByteSwap2::Filter(Byte *data, UInt32 size) -{ - const UInt32 kStep = 2; - UInt32 i; - for (i = 0; i + kStep <= size; i += kStep) - { - Byte b = data[i]; - data[i] = data[i + 1]; - data[i + 1] = b; - } - return i; -} - -STDMETHODIMP CByteSwap4::Init() { return S_OK; } - -STDMETHODIMP_(UInt32) CByteSwap4::Filter(Byte *data, UInt32 size) -{ - const UInt32 kStep = 4; - UInt32 i; - for (i = 0; i + kStep <= size; i += kStep) - { - Byte b0 = data[i]; - Byte b1 = data[i + 1]; - data[i] = data[i + 3]; - data[i + 1] = data[i + 2]; - data[i + 2] = b1; - data[i + 3] = b0; - } - return i; -} - -static void *CreateCodec2() { return (void *)(ICompressFilter *)(new CByteSwap2); } -static void *CreateCodec4() { return (void *)(ICompressFilter *)(new CByteSwap4); } - -static CCodecInfo g_CodecsInfo[] = -{ - { CreateCodec2, CreateCodec2, 0x020302, L"Swap2", 1, true }, - { CreateCodec4, CreateCodec4, 0x020304, L"Swap4", 1, true } -}; - -REGISTER_CODECS(ByteSwap) diff --git a/src/libs/7zip/win/CPP/7zip/Compress/Compress.pri b/src/libs/7zip/win/CPP/7zip/Compress/Compress.pri deleted file mode 100644 index db923a868..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/Compress.pri +++ /dev/null @@ -1,30 +0,0 @@ -HEADERS += $$7ZIP_BASE/CPP/7zip/Compress/Bcj2Coder.h \ - $$7ZIP_BASE/CPP/7zip/Compress/BcjCoder.h \ - $$7ZIP_BASE/CPP/7zip/Compress/BranchCoder.h \ - $$7ZIP_BASE/CPP/7zip/Compress/BranchMisc.h \ - $$7ZIP_BASE/CPP/7zip/Compress/CopyCoder.h \ - $$7ZIP_BASE/CPP/7zip/Compress/Lzma2Decoder.h \ - $$7ZIP_BASE/CPP/7zip/Compress/Lzma2Encoder.h \ - $$7ZIP_BASE/CPP/7zip/Compress/LzmaDecoder.h \ - $$7ZIP_BASE/CPP/7zip/Compress/LzmaEncoder.h \ - $$7ZIP_BASE/CPP/7zip/Compress/RangeCoder.h \ - $$7ZIP_BASE/CPP/7zip/Compress/RangeCoderBit.h \ - $$7ZIP_BASE/CPP/7zip/Compress/StdAfx.h - -SOURCES += $$7ZIP_BASE/CPP/7zip/Compress/Bcj2Coder.cpp \ - $$7ZIP_BASE/CPP/7zip/Compress/Bcj2Register.cpp \ - $$7ZIP_BASE/CPP/7zip/Compress/BcjCoder.cpp \ - $$7ZIP_BASE/CPP/7zip/Compress/BcjRegister.cpp \ - $$7ZIP_BASE/CPP/7zip/Compress/BranchCoder.cpp \ - $$7ZIP_BASE/CPP/7zip/Compress/BranchMisc.cpp \ - $$7ZIP_BASE/CPP/7zip/Compress/BranchRegister.cpp \ - $$7ZIP_BASE/CPP/7zip/Compress/ByteSwap.cpp \ - $$7ZIP_BASE/CPP/7zip/Compress/CopyCoder.cpp \ - $$7ZIP_BASE/CPP/7zip/Compress/CopyRegister.cpp \ - $$7ZIP_BASE/CPP/7zip/Compress/DeltaFilter.cpp \ - $$7ZIP_BASE/CPP/7zip/Compress/Lzma2Decoder.cpp \ - $$7ZIP_BASE/CPP/7zip/Compress/Lzma2Encoder.cpp \ - $$7ZIP_BASE/CPP/7zip/Compress/Lzma2Register.cpp \ - $$7ZIP_BASE/CPP/7zip/Compress/LzmaDecoder.cpp \ - $$7ZIP_BASE/CPP/7zip/Compress/LzmaEncoder.cpp \ - $$7ZIP_BASE/CPP/7zip/Compress/LzmaRegister.cpp diff --git a/src/libs/7zip/win/CPP/7zip/Compress/CopyCoder.cpp b/src/libs/7zip/win/CPP/7zip/Compress/CopyCoder.cpp deleted file mode 100644 index f0863202a..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/CopyCoder.cpp +++ /dev/null @@ -1,74 +0,0 @@ -// Compress/CopyCoder.cpp - -#include "StdAfx.h" - -#include "../../../C/Alloc.h" - -#include "../Common/StreamUtils.h" - -#include "CopyCoder.h" - -namespace NCompress { - -static const UInt32 kBufferSize = 1 << 17; - -CCopyCoder::~CCopyCoder() -{ - ::MidFree(_buffer); -} - -STDMETHODIMP CCopyCoder::Code(ISequentialInStream *inStream, - ISequentialOutStream *outStream, - const UInt64 * /* inSize */, const UInt64 *outSize, - ICompressProgressInfo *progress) -{ - if (!_buffer) - { - _buffer = (Byte *)::MidAlloc(kBufferSize); - if (!_buffer) - return E_OUTOFMEMORY; - } - - TotalSize = 0; - for (;;) - { - UInt32 size = kBufferSize; - if (outSize && size > *outSize - TotalSize) - size = (UInt32)(*outSize - TotalSize); - RINOK(inStream->Read(_buffer, size, &size)); - if (size == 0) - break; - if (outStream) - { - RINOK(WriteStream(outStream, _buffer, size)); - } - TotalSize += size; - if (progress) - { - RINOK(progress->SetRatioInfo(&TotalSize, &TotalSize)); - } - } - return S_OK; -} - -STDMETHODIMP CCopyCoder::GetInStreamProcessedSize(UInt64 *value) -{ - *value = TotalSize; - return S_OK; -} - -HRESULT CopyStream(ISequentialInStream *inStream, ISequentialOutStream *outStream, ICompressProgressInfo *progress) -{ - CMyComPtr copyCoder = new CCopyCoder; - return copyCoder->Code(inStream, outStream, NULL, NULL, progress); -} - -HRESULT CopyStream_ExactSize(ISequentialInStream *inStream, ISequentialOutStream *outStream, UInt64 size, ICompressProgressInfo *progress) -{ - NCompress::CCopyCoder *copyCoderSpec = new NCompress::CCopyCoder; - CMyComPtr copyCoder = copyCoderSpec; - RINOK(copyCoder->Code(inStream, outStream, NULL, &size, progress)); - return copyCoderSpec->TotalSize == size ? S_OK : E_FAIL; -} - -} diff --git a/src/libs/7zip/win/CPP/7zip/Compress/CopyCoder.h b/src/libs/7zip/win/CPP/7zip/Compress/CopyCoder.h deleted file mode 100644 index 5e0bb6436..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/CopyCoder.h +++ /dev/null @@ -1,35 +0,0 @@ -// Compress/CopyCoder.h - -#ifndef __COMPRESS_COPY_CODER_H -#define __COMPRESS_COPY_CODER_H - -#include "../../Common/MyCom.h" - -#include "../ICoder.h" - -namespace NCompress { - -class CCopyCoder: - public ICompressCoder, - public ICompressGetInStreamProcessedSize, - public CMyUnknownImp -{ - Byte *_buffer; -public: - UInt64 TotalSize; - CCopyCoder(): TotalSize(0), _buffer(0) {}; - ~CCopyCoder(); - - MY_UNKNOWN_IMP1(ICompressGetInStreamProcessedSize) - - STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream, - const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress); - STDMETHOD(GetInStreamProcessedSize)(UInt64 *value); -}; - -HRESULT CopyStream(ISequentialInStream *inStream, ISequentialOutStream *outStream, ICompressProgressInfo *progress); -HRESULT CopyStream_ExactSize(ISequentialInStream *inStream, ISequentialOutStream *outStream, UInt64 size, ICompressProgressInfo *progress); - -} - -#endif diff --git a/src/libs/7zip/win/CPP/7zip/Compress/CopyRegister.cpp b/src/libs/7zip/win/CPP/7zip/Compress/CopyRegister.cpp deleted file mode 100644 index efb9b9e95..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/CopyRegister.cpp +++ /dev/null @@ -1,14 +0,0 @@ -// CopyRegister.cpp - -#include "StdAfx.h" - -#include "../Common/RegisterCodec.h" - -#include "CopyCoder.h" - -static void *CreateCodec() { return (void *)(ICompressCoder *)(new NCompress::CCopyCoder); } - -static CCodecInfo g_CodecInfo = -{ CreateCodec, CreateCodec, 0x00, L"Copy", 1, false }; - -REGISTER_CODEC(Copy) diff --git a/src/libs/7zip/win/CPP/7zip/Compress/DeltaFilter.cpp b/src/libs/7zip/win/CPP/7zip/Compress/DeltaFilter.cpp deleted file mode 100644 index d8378a60e..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/DeltaFilter.cpp +++ /dev/null @@ -1,125 +0,0 @@ -// DeltaFilter.cpp - -#include "StdAfx.h" - -#include "../../../C/Delta.h" - -#include "../Common/RegisterCodec.h" - -#include "BranchCoder.h" - -struct CDelta -{ - unsigned _delta; - Byte _state[DELTA_STATE_SIZE]; - CDelta(): _delta(1) {} - void DeltaInit() { Delta_Init(_state); } -}; - -class CDeltaEncoder: - public ICompressFilter, - public ICompressSetCoderProperties, - public ICompressWriteCoderProperties, - CDelta, - public CMyUnknownImp -{ -public: - MY_UNKNOWN_IMP2(ICompressSetCoderProperties, ICompressWriteCoderProperties) - STDMETHOD(Init)(); - STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size); - STDMETHOD(SetCoderProperties)(const PROPID *propIDs, const PROPVARIANT *props, UInt32 numProps); - STDMETHOD(WriteCoderProperties)(ISequentialOutStream *outStream); -}; - -class CDeltaDecoder: - public ICompressFilter, - public ICompressSetDecoderProperties2, - CDelta, - public CMyUnknownImp -{ -public: - MY_UNKNOWN_IMP1(ICompressSetDecoderProperties2) - STDMETHOD(Init)(); - STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size); - STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size); -}; - -STDMETHODIMP CDeltaEncoder::Init() -{ - DeltaInit(); - return S_OK; -} - -STDMETHODIMP_(UInt32) CDeltaEncoder::Filter(Byte *data, UInt32 size) -{ - Delta_Encode(_state, _delta, data, size); - return size; -} - -STDMETHODIMP CDeltaEncoder::SetCoderProperties(const PROPID *propIDs, const PROPVARIANT *props, UInt32 numProps) -{ - UInt32 delta = _delta; - for (UInt32 i = 0; i < numProps; i++) - { - const PROPVARIANT &prop = props[i]; - PROPID propID = propIDs[i]; - if (propID >= NCoderPropID::kReduceSize) - continue; - if (prop.vt != VT_UI4) - return E_INVALIDARG; - switch (propID) - { - case NCoderPropID::kDefaultProp: - delta = (UInt32)prop.ulVal; - if (delta < 1 || delta > 256) - return E_INVALIDARG; - break; - case NCoderPropID::kNumThreads: break; - case NCoderPropID::kLevel: break; - default: return E_INVALIDARG; - } - } - _delta = delta; - return S_OK; -} - -STDMETHODIMP CDeltaEncoder::WriteCoderProperties(ISequentialOutStream *outStream) -{ - Byte prop = (Byte)(_delta - 1); - return outStream->Write(&prop, 1, NULL); -} - -STDMETHODIMP CDeltaDecoder::Init() -{ - DeltaInit(); - return S_OK; -} - -STDMETHODIMP_(UInt32) CDeltaDecoder::Filter(Byte *data, UInt32 size) -{ - Delta_Decode(_state, _delta, data, size); - return size; -} - -STDMETHODIMP CDeltaDecoder::SetDecoderProperties2(const Byte *props, UInt32 size) -{ - if (size != 1) - return E_INVALIDARG; - _delta = (unsigned)props[0] + 1; - return S_OK; -} - -#define CREATE_CODEC(x) \ - static void *CreateCodec ## x() { return (void *)(ICompressFilter *)(new C ## x ## Decoder); } \ - static void *CreateCodec ## x ## Out() { return (void *)(ICompressFilter *)(new C ## x ## Encoder); } - -CREATE_CODEC(Delta) - -#define METHOD_ITEM(x, id, name) { CreateCodec ## x, CreateCodec ## x ## Out, id, name, 1, true } - -static CCodecInfo g_CodecsInfo[] = -{ - METHOD_ITEM(Delta, 3, L"Delta") -}; - -REGISTER_CODECS(Delta) diff --git a/src/libs/7zip/win/CPP/7zip/Compress/Lzma2Decoder.cpp b/src/libs/7zip/win/CPP/7zip/Compress/Lzma2Decoder.cpp deleted file mode 100644 index b20ae5f5e..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/Lzma2Decoder.cpp +++ /dev/null @@ -1,189 +0,0 @@ -// Lzma2Decoder.cpp - -#include "StdAfx.h" - -#include "../../../C/Alloc.h" - -#include "../Common/StreamUtils.h" - -#include "Lzma2Decoder.h" - -static HRESULT SResToHRESULT(SRes res) -{ - switch(res) - { - case SZ_OK: return S_OK; - case SZ_ERROR_MEM: return E_OUTOFMEMORY; - case SZ_ERROR_PARAM: return E_INVALIDARG; - // case SZ_ERROR_PROGRESS: return E_ABORT; - case SZ_ERROR_DATA: return S_FALSE; - } - return E_FAIL; -} - -namespace NCompress { -namespace NLzma2 { - -static const UInt32 kInBufSize = 1 << 20; - -CDecoder::CDecoder(): _inBuf(0), _outSizeDefined(false) -{ - Lzma2Dec_Construct(&_state); -} - -static void *SzAlloc(void *p, size_t size) { p = p; return MyAlloc(size); } -static void SzFree(void *p, void *address) { p = p; MyFree(address); } -static ISzAlloc g_Alloc = { SzAlloc, SzFree }; - -CDecoder::~CDecoder() -{ - Lzma2Dec_Free(&_state, &g_Alloc); - MyFree(_inBuf); -} - -STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *prop, UInt32 size) -{ - if (size != 1) return SZ_ERROR_UNSUPPORTED; - RINOK(SResToHRESULT(Lzma2Dec_Allocate(&_state, prop[0], &g_Alloc))); - if (_inBuf == 0) - { - _inBuf = (Byte *)MyAlloc(kInBufSize); - if (_inBuf == 0) - return E_OUTOFMEMORY; - } - - return S_OK; -} - -STDMETHODIMP CDecoder::GetInStreamProcessedSize(UInt64 *value) { *value = _inSizeProcessed; return S_OK; } -STDMETHODIMP CDecoder::SetInStream(ISequentialInStream *inStream) { _inStream = inStream; return S_OK; } -STDMETHODIMP CDecoder::ReleaseInStream() { _inStream.Release(); return S_OK; } - -STDMETHODIMP CDecoder::SetOutStreamSize(const UInt64 *outSize) -{ - _outSizeDefined = (outSize != NULL); - if (_outSizeDefined) - _outSize = *outSize; - - Lzma2Dec_Init(&_state); - - _inPos = _inSize = 0; - _inSizeProcessed = _outSizeProcessed = 0; - return S_OK; -} - -STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, - ISequentialOutStream *outStream, const UInt64 * /* inSize */, - const UInt64 *outSize, ICompressProgressInfo *progress) -{ - if (_inBuf == 0) - return S_FALSE; - SetOutStreamSize(outSize); - - for (;;) - { - if (_inPos == _inSize) - { - _inPos = _inSize = 0; - RINOK(inStream->Read(_inBuf, kInBufSize, &_inSize)); - } - - SizeT dicPos = _state.decoder.dicPos; - SizeT curSize = _state.decoder.dicBufSize - dicPos; - const UInt32 kStepSize = ((UInt32)1 << 22); - if (curSize > kStepSize) - curSize = (SizeT)kStepSize; - - ELzmaFinishMode finishMode = LZMA_FINISH_ANY; - if (_outSizeDefined) - { - const UInt64 rem = _outSize - _outSizeProcessed; - if (rem < curSize) - { - curSize = (SizeT)rem; - /* - // finishMode = LZMA_FINISH_END; - we can't use LZMA_FINISH_END here to allow partial decoding - */ - } - } - - SizeT inSizeProcessed = _inSize - _inPos; - ELzmaStatus status; - SRes res = Lzma2Dec_DecodeToDic(&_state, dicPos + curSize, _inBuf + _inPos, &inSizeProcessed, finishMode, &status); - - _inPos += (UInt32)inSizeProcessed; - _inSizeProcessed += inSizeProcessed; - SizeT outSizeProcessed = _state.decoder.dicPos - dicPos; - _outSizeProcessed += outSizeProcessed; - - bool finished = (inSizeProcessed == 0 && outSizeProcessed == 0); - bool stopDecoding = (_outSizeDefined && _outSizeProcessed >= _outSize); - - if (res != 0 || _state.decoder.dicPos == _state.decoder.dicBufSize || finished || stopDecoding) - { - HRESULT res2 = WriteStream(outStream, _state.decoder.dic, _state.decoder.dicPos); - if (res != 0) - return S_FALSE; - RINOK(res2); - if (stopDecoding) - return S_OK; - if (finished) - return (status == LZMA_STATUS_FINISHED_WITH_MARK ? S_OK : S_FALSE); - } - if (_state.decoder.dicPos == _state.decoder.dicBufSize) - _state.decoder.dicPos = 0; - - if (progress != NULL) - { - RINOK(progress->SetRatioInfo(&_inSizeProcessed, &_outSizeProcessed)); - } - } -} - -#ifndef NO_READ_FROM_CODER - -STDMETHODIMP CDecoder::Read(void *data, UInt32 size, UInt32 *processedSize) -{ - if (processedSize) - *processedSize = 0; - do - { - if (_inPos == _inSize) - { - _inPos = _inSize = 0; - RINOK(_inStream->Read(_inBuf, kInBufSize, &_inSize)); - } - { - SizeT inProcessed = _inSize - _inPos; - - if (_outSizeDefined) - { - const UInt64 rem = _outSize - _outSizeProcessed; - if (rem < size) - size = (UInt32)rem; - } - - SizeT outProcessed = size; - ELzmaStatus status; - SRes res = Lzma2Dec_DecodeToBuf(&_state, (Byte *)data, &outProcessed, - _inBuf + _inPos, &inProcessed, LZMA_FINISH_ANY, &status); - _inPos += (UInt32)inProcessed; - _inSizeProcessed += inProcessed; - _outSizeProcessed += outProcessed; - size -= (UInt32)outProcessed; - data = (Byte *)data + outProcessed; - if (processedSize) - *processedSize += (UInt32)outProcessed; - RINOK(SResToHRESULT(res)); - if (inProcessed == 0 && outProcessed == 0) - return S_OK; - } - } - while (size != 0); - return S_OK; -} - -#endif - -}} diff --git a/src/libs/7zip/win/CPP/7zip/Compress/Lzma2Decoder.h b/src/libs/7zip/win/CPP/7zip/Compress/Lzma2Decoder.h deleted file mode 100644 index fd7ca2f39..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/Lzma2Decoder.h +++ /dev/null @@ -1,73 +0,0 @@ -// Lzma2Decoder.h - -#ifndef __LZMA2_DECODER_H -#define __LZMA2_DECODER_H - -#include "../../../C/Lzma2Dec.h" - -#include "../../Common/MyCom.h" - -#include "../ICoder.h" - -namespace NCompress { -namespace NLzma2 { - -class CDecoder: - public ICompressCoder, - public ICompressSetDecoderProperties2, - public ICompressGetInStreamProcessedSize, - #ifndef NO_READ_FROM_CODER - public ICompressSetInStream, - public ICompressSetOutStreamSize, - public ISequentialInStream, - #endif - public CMyUnknownImp -{ - CMyComPtr _inStream; - Byte *_inBuf; - UInt32 _inPos; - UInt32 _inSize; - CLzma2Dec _state; - bool _outSizeDefined; - UInt64 _outSize; - UInt64 _inSizeProcessed; - UInt64 _outSizeProcessed; -public: - - #ifndef NO_READ_FROM_CODER - MY_UNKNOWN_IMP5( - ICompressSetDecoderProperties2, - ICompressGetInStreamProcessedSize, - ICompressSetInStream, - ICompressSetOutStreamSize, - ISequentialInStream) - #else - MY_UNKNOWN_IMP2( - ICompressSetDecoderProperties2, - ICompressGetInStreamProcessedSize) - #endif - - STDMETHOD(Code)(ISequentialInStream *inStream, - ISequentialOutStream *outStream, const UInt64 *_inSize, const UInt64 *outSize, - ICompressProgressInfo *progress); - - STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size); - - STDMETHOD(GetInStreamProcessedSize)(UInt64 *value); - - STDMETHOD(SetInStream)(ISequentialInStream *inStream); - STDMETHOD(ReleaseInStream)(); - STDMETHOD(SetOutStreamSize)(const UInt64 *outSize); - - #ifndef NO_READ_FROM_CODER - STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize); - #endif - - CDecoder(); - virtual ~CDecoder(); - -}; - -}} - -#endif diff --git a/src/libs/7zip/win/CPP/7zip/Compress/Lzma2Encoder.cpp b/src/libs/7zip/win/CPP/7zip/Compress/Lzma2Encoder.cpp deleted file mode 100644 index f867881c0..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/Lzma2Encoder.cpp +++ /dev/null @@ -1,94 +0,0 @@ -// Lzma2Encoder.cpp - -#include "StdAfx.h" - -#include "../../../C/Alloc.h" - -#include "../Common/CWrappers.h" -#include "../Common/StreamUtils.h" - -#include "Lzma2Encoder.h" - -namespace NCompress { - -namespace NLzma { - -HRESULT SetLzmaProp(PROPID propID, const PROPVARIANT &prop, CLzmaEncProps &ep); - -} - -namespace NLzma2 { - -static void *SzBigAlloc(void *, size_t size) { return BigAlloc(size); } -static void SzBigFree(void *, void *address) { BigFree(address); } -static ISzAlloc g_BigAlloc = { SzBigAlloc, SzBigFree }; - -static void *SzAlloc(void *, size_t size) { return MyAlloc(size); } -static void SzFree(void *, void *address) { MyFree(address); } -static ISzAlloc g_Alloc = { SzAlloc, SzFree }; - -CEncoder::CEncoder() -{ - _encoder = 0; - _encoder = Lzma2Enc_Create(&g_Alloc, &g_BigAlloc); - if (_encoder == 0) - throw 1; -} - -CEncoder::~CEncoder() -{ - if (_encoder != 0) - Lzma2Enc_Destroy(_encoder); -} - -HRESULT SetLzma2Prop(PROPID propID, const PROPVARIANT &prop, CLzma2EncProps &lzma2Props) -{ - switch (propID) - { - case NCoderPropID::kBlockSize: - if (prop.vt != VT_UI4) return E_INVALIDARG; lzma2Props.blockSize = prop.ulVal; break; - case NCoderPropID::kNumThreads: - if (prop.vt != VT_UI4) return E_INVALIDARG; lzma2Props.numTotalThreads = (int)(prop.ulVal); break; - default: - RINOK(NLzma::SetLzmaProp(propID, prop, lzma2Props.lzmaProps)); - } - return S_OK; -} - -STDMETHODIMP CEncoder::SetCoderProperties(const PROPID *propIDs, - const PROPVARIANT *coderProps, UInt32 numProps) -{ - CLzma2EncProps lzma2Props; - Lzma2EncProps_Init(&lzma2Props); - - for (UInt32 i = 0; i < numProps; i++) - { - RINOK(SetLzma2Prop(propIDs[i], coderProps[i], lzma2Props)); - } - return SResToHRESULT(Lzma2Enc_SetProps(_encoder, &lzma2Props)); -} - -STDMETHODIMP CEncoder::WriteCoderProperties(ISequentialOutStream *outStream) -{ - Byte prop = Lzma2Enc_WriteProperties(_encoder); - return WriteStream(outStream, &prop, 1); -} - -STDMETHODIMP CEncoder::Code(ISequentialInStream *inStream, ISequentialOutStream *outStream, - const UInt64 * /* inSize */, const UInt64 * /* outSize */, ICompressProgressInfo *progress) -{ - CSeqInStreamWrap inWrap(inStream); - CSeqOutStreamWrap outWrap(outStream); - CCompressProgressWrap progressWrap(progress); - - SRes res = Lzma2Enc_Encode(_encoder, &outWrap.p, &inWrap.p, progress ? &progressWrap.p : NULL); - if (res == SZ_ERROR_READ && inWrap.Res != S_OK) - return inWrap.Res; - if (res == SZ_ERROR_WRITE && outWrap.Res != S_OK) - return outWrap.Res; - if (res == SZ_ERROR_PROGRESS && progressWrap.Res != S_OK) - return progressWrap.Res; - return SResToHRESULT(res); -} - -}} diff --git a/src/libs/7zip/win/CPP/7zip/Compress/Lzma2Encoder.h b/src/libs/7zip/win/CPP/7zip/Compress/Lzma2Encoder.h deleted file mode 100644 index 6a2318076..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/Lzma2Encoder.h +++ /dev/null @@ -1,36 +0,0 @@ -// Lzma2Encoder.h - -#ifndef __LZMA2_ENCODER_H -#define __LZMA2_ENCODER_H - -#include "../../../C/Lzma2Enc.h" - -#include "../../Common/MyCom.h" - -#include "../ICoder.h" - -namespace NCompress { -namespace NLzma2 { - -class CEncoder: - public ICompressCoder, - public ICompressSetCoderProperties, - public ICompressWriteCoderProperties, - public CMyUnknownImp -{ - CLzma2EncHandle _encoder; -public: - MY_UNKNOWN_IMP2(ICompressSetCoderProperties, ICompressWriteCoderProperties) - - STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream, - const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress); - STDMETHOD(SetCoderProperties)(const PROPID *propIDs, const PROPVARIANT *props, UInt32 numProps); - STDMETHOD(WriteCoderProperties)(ISequentialOutStream *outStream); - - CEncoder(); - virtual ~CEncoder(); -}; - -}} - -#endif diff --git a/src/libs/7zip/win/CPP/7zip/Compress/Lzma2Register.cpp b/src/libs/7zip/win/CPP/7zip/Compress/Lzma2Register.cpp deleted file mode 100644 index cace871ef..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/Lzma2Register.cpp +++ /dev/null @@ -1,20 +0,0 @@ -// Lzma2Register.cpp - -#include "StdAfx.h" - -#include "../Common/RegisterCodec.h" - -#include "Lzma2Decoder.h" - -static void *CreateCodec() { return (void *)(ICompressCoder *)(new NCompress::NLzma2::CDecoder); } -#ifndef EXTRACT_ONLY -#include "Lzma2Encoder.h" -static void *CreateCodecOut() { return (void *)(ICompressCoder *)(new NCompress::NLzma2::CEncoder); } -#else -#define CreateCodecOut 0 -#endif - -static CCodecInfo g_CodecInfo = - { CreateCodec, CreateCodecOut, 0x21, L"LZMA2", 1, false }; - -REGISTER_CODEC(LZMA2) diff --git a/src/libs/7zip/win/CPP/7zip/Compress/LzmaDecoder.cpp b/src/libs/7zip/win/CPP/7zip/Compress/LzmaDecoder.cpp deleted file mode 100644 index d378ba668..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/LzmaDecoder.cpp +++ /dev/null @@ -1,266 +0,0 @@ -// LzmaDecoder.cpp - -#include "StdAfx.h" - -#include "../../../C/Alloc.h" - -#include "../Common/StreamUtils.h" - -#include "LzmaDecoder.h" - -static HRESULT SResToHRESULT(SRes res) -{ - switch(res) - { - case SZ_OK: return S_OK; - case SZ_ERROR_MEM: return E_OUTOFMEMORY; - case SZ_ERROR_PARAM: return E_INVALIDARG; - case SZ_ERROR_UNSUPPORTED: return E_NOTIMPL; - case SZ_ERROR_DATA: return S_FALSE; - } - return E_FAIL; -} - -namespace NCompress { -namespace NLzma { - -CDecoder::CDecoder(): _inBuf(0), _propsWereSet(false), _outSizeDefined(false), - _inBufSize(1 << 20), - _outBufSize(1 << 22), - FinishStream(false), - NeedMoreInput(false) -{ - _inSizeProcessed = 0; - _inPos = _inSize = 0; - LzmaDec_Construct(&_state); -} - -static void *SzAlloc(void *p, size_t size) { p = p; return MyAlloc(size); } -static void SzFree(void *p, void *address) { p = p; MyFree(address); } -static ISzAlloc g_Alloc = { SzAlloc, SzFree }; - -CDecoder::~CDecoder() -{ - LzmaDec_Free(&_state, &g_Alloc); - MyFree(_inBuf); -} - -STDMETHODIMP CDecoder::SetInBufSize(UInt32 , UInt32 size) { _inBufSize = size; return S_OK; } -STDMETHODIMP CDecoder::SetOutBufSize(UInt32 , UInt32 size) { _outBufSize = size; return S_OK; } - -HRESULT CDecoder::CreateInputBuffer() -{ - if (_inBuf == 0 || _inBufSize != _inBufSizeAllocated) - { - MyFree(_inBuf); - _inBuf = (Byte *)MyAlloc(_inBufSize); - if (_inBuf == 0) - return E_OUTOFMEMORY; - _inBufSizeAllocated = _inBufSize; - } - return S_OK; -} - -STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *prop, UInt32 size) -{ - RINOK(SResToHRESULT(LzmaDec_Allocate(&_state, prop, size, &g_Alloc))); - _propsWereSet = true; - return CreateInputBuffer(); -} - -void CDecoder::SetOutStreamSizeResume(const UInt64 *outSize) -{ - _outSizeDefined = (outSize != NULL); - if (_outSizeDefined) - _outSize = *outSize; - _outSizeProcessed = 0; - _wrPos = 0; - LzmaDec_Init(&_state); -} - -STDMETHODIMP CDecoder::SetOutStreamSize(const UInt64 *outSize) -{ - _inSizeProcessed = 0; - _inPos = _inSize = 0; - NeedMoreInput = false; - SetOutStreamSizeResume(outSize); - return S_OK; -} - -HRESULT CDecoder::CodeSpec(ISequentialInStream *inStream, ISequentialOutStream *outStream, ICompressProgressInfo *progress) -{ - if (_inBuf == 0 || !_propsWereSet) - return S_FALSE; - - UInt64 startInProgress = _inSizeProcessed; - - SizeT next = (_state.dicBufSize - _state.dicPos < _outBufSize) ? _state.dicBufSize : (_state.dicPos + _outBufSize); - for (;;) - { - if (_inPos == _inSize) - { - _inPos = _inSize = 0; - RINOK(inStream->Read(_inBuf, _inBufSizeAllocated, &_inSize)); - } - - SizeT dicPos = _state.dicPos; - SizeT curSize = next - dicPos; - - ELzmaFinishMode finishMode = LZMA_FINISH_ANY; - if (_outSizeDefined) - { - const UInt64 rem = _outSize - _outSizeProcessed; - if (rem <= curSize) - { - curSize = (SizeT)rem; - if (FinishStream) - finishMode = LZMA_FINISH_END; - } - } - - SizeT inSizeProcessed = _inSize - _inPos; - ELzmaStatus status; - SRes res = LzmaDec_DecodeToDic(&_state, dicPos + curSize, _inBuf + _inPos, &inSizeProcessed, finishMode, &status); - - _inPos += (UInt32)inSizeProcessed; - _inSizeProcessed += inSizeProcessed; - SizeT outSizeProcessed = _state.dicPos - dicPos; - _outSizeProcessed += outSizeProcessed; - - bool finished = (inSizeProcessed == 0 && outSizeProcessed == 0); - bool stopDecoding = (_outSizeDefined && _outSizeProcessed >= _outSize); - - if (res != 0 || _state.dicPos == next || finished || stopDecoding) - { - HRESULT res2 = WriteStream(outStream, _state.dic + _wrPos, _state.dicPos - _wrPos); - - _wrPos = _state.dicPos; - if (_state.dicPos == _state.dicBufSize) - { - _state.dicPos = 0; - _wrPos = 0; - } - next = (_state.dicBufSize - _state.dicPos < _outBufSize) ? _state.dicBufSize : (_state.dicPos + _outBufSize); - - if (res != 0) - return S_FALSE; - RINOK(res2); - if (stopDecoding) - { - if (status == LZMA_STATUS_NEEDS_MORE_INPUT) - NeedMoreInput = true; - if (FinishStream && - status != LZMA_STATUS_FINISHED_WITH_MARK && - status != LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK) - return S_FALSE; - return S_OK; - } - if (finished) - { - if (status == LZMA_STATUS_NEEDS_MORE_INPUT) - NeedMoreInput = true; - return (status == LZMA_STATUS_FINISHED_WITH_MARK ? S_OK : S_FALSE); - } - } - if (progress) - { - UInt64 inSize = _inSizeProcessed - startInProgress; - RINOK(progress->SetRatioInfo(&inSize, &_outSizeProcessed)); - } - } -} - -STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream *outStream, - const UInt64 * /* inSize */, const UInt64 *outSize, ICompressProgressInfo *progress) -{ - if (_inBuf == 0) - return E_INVALIDARG; - SetOutStreamSize(outSize); - return CodeSpec(inStream, outStream, progress); -} - -#ifndef NO_READ_FROM_CODER - -STDMETHODIMP CDecoder::SetInStream(ISequentialInStream *inStream) { _inStream = inStream; return S_OK; } -STDMETHODIMP CDecoder::ReleaseInStream() { _inStream.Release(); return S_OK; } - -STDMETHODIMP CDecoder::Read(void *data, UInt32 size, UInt32 *processedSize) -{ - if (processedSize) - *processedSize = 0; - do - { - if (_inPos == _inSize) - { - _inPos = _inSize = 0; - RINOK(_inStream->Read(_inBuf, _inBufSizeAllocated, &_inSize)); - } - { - SizeT inProcessed = _inSize - _inPos; - - if (_outSizeDefined) - { - const UInt64 rem = _outSize - _outSizeProcessed; - if (rem < size) - size = (UInt32)rem; - } - - SizeT outProcessed = size; - ELzmaStatus status; - SRes res = LzmaDec_DecodeToBuf(&_state, (Byte *)data, &outProcessed, - _inBuf + _inPos, &inProcessed, LZMA_FINISH_ANY, &status); - _inPos += (UInt32)inProcessed; - _inSizeProcessed += inProcessed; - _outSizeProcessed += outProcessed; - size -= (UInt32)outProcessed; - data = (Byte *)data + outProcessed; - if (processedSize) - *processedSize += (UInt32)outProcessed; - RINOK(SResToHRESULT(res)); - if (inProcessed == 0 && outProcessed == 0) - return S_OK; - } - } - while (size != 0); - return S_OK; -} - -HRESULT CDecoder::CodeResume(ISequentialOutStream *outStream, const UInt64 *outSize, ICompressProgressInfo *progress) -{ - SetOutStreamSizeResume(outSize); - return CodeSpec(_inStream, outStream, progress); -} - -HRESULT CDecoder::ReadFromInputStream(void *data, UInt32 size, UInt32 *processedSize) -{ - RINOK(CreateInputBuffer()); - if (processedSize) - *processedSize = 0; - while (size > 0) - { - if (_inPos == _inSize) - { - _inPos = _inSize = 0; - RINOK(_inStream->Read(_inBuf, _inBufSizeAllocated, &_inSize)); - if (_inSize == 0) - break; - } - { - UInt32 curSize = _inSize - _inPos; - if (curSize > size) - curSize = size; - memcpy(data, _inBuf + _inPos, curSize); - _inPos += curSize; - _inSizeProcessed += curSize; - size -= curSize; - data = (Byte *)data + curSize; - if (processedSize) - *processedSize += curSize; - } - } - return S_OK; -} - -#endif - -}} diff --git a/src/libs/7zip/win/CPP/7zip/Compress/LzmaDecoder.h b/src/libs/7zip/win/CPP/7zip/Compress/LzmaDecoder.h deleted file mode 100644 index 140c48b9c..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/LzmaDecoder.h +++ /dev/null @@ -1,88 +0,0 @@ -// LzmaDecoder.h - -#ifndef __LZMA_DECODER_H -#define __LZMA_DECODER_H - -#include "../../../C/LzmaDec.h" - -#include "../../Common/MyCom.h" -#include "../ICoder.h" - -namespace NCompress { -namespace NLzma { - -class CDecoder: - public ICompressCoder, - public ICompressSetDecoderProperties2, - public ICompressSetBufSize, - #ifndef NO_READ_FROM_CODER - public ICompressSetInStream, - public ICompressSetOutStreamSize, - public ISequentialInStream, - #endif - public CMyUnknownImp -{ - CMyComPtr _inStream; - Byte *_inBuf; - UInt32 _inPos; - UInt32 _inSize; - CLzmaDec _state; - bool _propsWereSet; - bool _outSizeDefined; - UInt64 _outSize; - UInt64 _inSizeProcessed; - UInt64 _outSizeProcessed; - - UInt32 _inBufSizeAllocated; - UInt32 _inBufSize; - UInt32 _outBufSize; - SizeT _wrPos; - - HRESULT CreateInputBuffer(); - HRESULT CodeSpec(ISequentialInStream *inStream, ISequentialOutStream *outStream, ICompressProgressInfo *progress); - void SetOutStreamSizeResume(const UInt64 *outSize); - -public: - MY_QUERYINTERFACE_BEGIN2(ICompressCoder) - MY_QUERYINTERFACE_ENTRY(ICompressSetDecoderProperties2) - MY_QUERYINTERFACE_ENTRY(ICompressSetBufSize) - #ifndef NO_READ_FROM_CODER - MY_QUERYINTERFACE_ENTRY(ICompressSetInStream) - MY_QUERYINTERFACE_ENTRY(ICompressSetOutStreamSize) - MY_QUERYINTERFACE_ENTRY(ISequentialInStream) - #endif - MY_QUERYINTERFACE_END - MY_ADDREF_RELEASE - - STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream, - const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress); - STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size); - STDMETHOD(SetOutStreamSize)(const UInt64 *outSize); - STDMETHOD(SetInBufSize)(UInt32 streamIndex, UInt32 size); - STDMETHOD(SetOutBufSize)(UInt32 streamIndex, UInt32 size); - - #ifndef NO_READ_FROM_CODER - - STDMETHOD(SetInStream)(ISequentialInStream *inStream); - STDMETHOD(ReleaseInStream)(); - STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize); - - HRESULT CodeResume(ISequentialOutStream *outStream, const UInt64 *outSize, ICompressProgressInfo *progress); - HRESULT ReadFromInputStream(void *data, UInt32 size, UInt32 *processedSize); - UInt64 GetInputProcessedSize() const { return _inSizeProcessed; } - - #endif - - bool FinishStream; // set it before decoding, if you need to decode full LZMA stream - - bool NeedMoreInput; // it's set by decoder, if it needs more input data to decode stream - - CDecoder(); - virtual ~CDecoder(); - - UInt64 GetOutputProcessedSize() const { return _outSizeProcessed; } -}; - -}} - -#endif diff --git a/src/libs/7zip/win/CPP/7zip/Compress/LzmaEncoder.cpp b/src/libs/7zip/win/CPP/7zip/Compress/LzmaEncoder.cpp deleted file mode 100644 index 484d04523..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/LzmaEncoder.cpp +++ /dev/null @@ -1,161 +0,0 @@ -// LzmaEncoder.cpp - -#include "StdAfx.h" - -#include "../../../C/Alloc.h" - -#include "../Common/CWrappers.h" -#include "../Common/StreamUtils.h" - -#include "LzmaEncoder.h" - -namespace NCompress { -namespace NLzma { - -static void *SzBigAlloc(void *, size_t size) { return BigAlloc(size); } -static void SzBigFree(void *, void *address) { BigFree(address); } -static ISzAlloc g_BigAlloc = { SzBigAlloc, SzBigFree }; - -static void *SzAlloc(void *, size_t size) { return MyAlloc(size); } -static void SzFree(void *, void *address) { MyFree(address); } -static ISzAlloc g_Alloc = { SzAlloc, SzFree }; - -CEncoder::CEncoder() -{ - _encoder = 0; - _encoder = LzmaEnc_Create(&g_Alloc); - if (_encoder == 0) - throw 1; -} - -CEncoder::~CEncoder() -{ - if (_encoder != 0) - LzmaEnc_Destroy(_encoder, &g_Alloc, &g_BigAlloc); -} - -inline wchar_t GetUpperChar(wchar_t c) -{ - if (c >= 'a' && c <= 'z') - c -= 0x20; - return c; -} - -static int ParseMatchFinder(const wchar_t *s, int *btMode, int *numHashBytes) -{ - wchar_t c = GetUpperChar(*s++); - if (c == L'H') - { - if (GetUpperChar(*s++) != L'C') - return 0; - int numHashBytesLoc = (int)(*s++ - L'0'); - if (numHashBytesLoc < 4 || numHashBytesLoc > 4) - return 0; - if (*s++ != 0) - return 0; - *btMode = 0; - *numHashBytes = numHashBytesLoc; - return 1; - } - if (c != L'B') - return 0; - - if (GetUpperChar(*s++) != L'T') - return 0; - int numHashBytesLoc = (int)(*s++ - L'0'); - if (numHashBytesLoc < 2 || numHashBytesLoc > 4) - return 0; - c = GetUpperChar(*s++); - if (c != L'\0') - return 0; - *btMode = 1; - *numHashBytes = numHashBytesLoc; - return 1; -} - -#define SET_PROP_32(_id_, _dest_) case NCoderPropID::_id_: ep._dest_ = v; break; - -HRESULT SetLzmaProp(PROPID propID, const PROPVARIANT &prop, CLzmaEncProps &ep) -{ - if (propID == NCoderPropID::kMatchFinder) - { - if (prop.vt != VT_BSTR) - return E_INVALIDARG; - return ParseMatchFinder(prop.bstrVal, &ep.btMode, &ep.numHashBytes) ? S_OK : E_INVALIDARG; - } - if (propID > NCoderPropID::kReduceSize) - return S_OK; - if (propID == NCoderPropID::kReduceSize) - { - if (prop.vt == VT_UI8) - ep.reduceSize = prop.uhVal.QuadPart; - return S_OK; - } - if (prop.vt != VT_UI4) - return E_INVALIDARG; - UInt32 v = prop.ulVal; - switch (propID) - { - case NCoderPropID::kDefaultProp: if (v > 31) return E_INVALIDARG; ep.dictSize = (UInt32)1 << (unsigned)v; break; - SET_PROP_32(kLevel, level) - SET_PROP_32(kNumFastBytes, fb) - SET_PROP_32(kMatchFinderCycles, mc) - SET_PROP_32(kAlgorithm, algo) - SET_PROP_32(kDictionarySize, dictSize) - SET_PROP_32(kPosStateBits, pb) - SET_PROP_32(kLitPosBits, lp) - SET_PROP_32(kLitContextBits, lc) - SET_PROP_32(kNumThreads, numThreads) - default: return E_INVALIDARG; - } - return S_OK; -} - -STDMETHODIMP CEncoder::SetCoderProperties(const PROPID *propIDs, - const PROPVARIANT *coderProps, UInt32 numProps) -{ - CLzmaEncProps props; - LzmaEncProps_Init(&props); - - for (UInt32 i = 0; i < numProps; i++) - { - const PROPVARIANT &prop = coderProps[i]; - PROPID propID = propIDs[i]; - switch (propID) - { - case NCoderPropID::kEndMarker: - if (prop.vt != VT_BOOL) return E_INVALIDARG; props.writeEndMark = (prop.boolVal != VARIANT_FALSE); break; - default: - RINOK(SetLzmaProp(propID, prop, props)); - } - } - return SResToHRESULT(LzmaEnc_SetProps(_encoder, &props)); -} - -STDMETHODIMP CEncoder::WriteCoderProperties(ISequentialOutStream *outStream) -{ - Byte props[LZMA_PROPS_SIZE]; - size_t size = LZMA_PROPS_SIZE; - RINOK(LzmaEnc_WriteProperties(_encoder, props, &size)); - return WriteStream(outStream, props, size); -} - -STDMETHODIMP CEncoder::Code(ISequentialInStream *inStream, ISequentialOutStream *outStream, - const UInt64 * /* inSize */, const UInt64 * /* outSize */, ICompressProgressInfo *progress) -{ - CSeqInStreamWrap inWrap(inStream); - CSeqOutStreamWrap outWrap(outStream); - CCompressProgressWrap progressWrap(progress); - - SRes res = LzmaEnc_Encode(_encoder, &outWrap.p, &inWrap.p, progress ? &progressWrap.p : NULL, &g_Alloc, &g_BigAlloc); - _inputProcessed = inWrap.Processed; - if (res == SZ_ERROR_READ && inWrap.Res != S_OK) - return inWrap.Res; - if (res == SZ_ERROR_WRITE && outWrap.Res != S_OK) - return outWrap.Res; - if (res == SZ_ERROR_PROGRESS && progressWrap.Res != S_OK) - return progressWrap.Res; - return SResToHRESULT(res); -} - -}} diff --git a/src/libs/7zip/win/CPP/7zip/Compress/LzmaEncoder.h b/src/libs/7zip/win/CPP/7zip/Compress/LzmaEncoder.h deleted file mode 100644 index 7e15a132d..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/LzmaEncoder.h +++ /dev/null @@ -1,38 +0,0 @@ -// LzmaEncoder.h - -#ifndef __LZMA_ENCODER_H -#define __LZMA_ENCODER_H - -#include "../../../C/LzmaEnc.h" - -#include "../../Common/MyCom.h" - -#include "../ICoder.h" - -namespace NCompress { -namespace NLzma { - -class CEncoder: - public ICompressCoder, - public ICompressSetCoderProperties, - public ICompressWriteCoderProperties, - public CMyUnknownImp -{ - CLzmaEncHandle _encoder; - UInt64 _inputProcessed; -public: - MY_UNKNOWN_IMP2(ICompressSetCoderProperties, ICompressWriteCoderProperties) - - STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream, - const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress); - STDMETHOD(SetCoderProperties)(const PROPID *propIDs, const PROPVARIANT *props, UInt32 numProps); - STDMETHOD(WriteCoderProperties)(ISequentialOutStream *outStream); - - CEncoder(); - virtual ~CEncoder(); - UInt64 GetInputProcessedSize() const { return _inputProcessed; } -}; - -}} - -#endif diff --git a/src/libs/7zip/win/CPP/7zip/Compress/LzmaRegister.cpp b/src/libs/7zip/win/CPP/7zip/Compress/LzmaRegister.cpp deleted file mode 100644 index 96ed0baed..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/LzmaRegister.cpp +++ /dev/null @@ -1,20 +0,0 @@ -// LzmaRegister.cpp - -#include "StdAfx.h" - -#include "../Common/RegisterCodec.h" - -#include "LzmaDecoder.h" - -static void *CreateCodec() { return (void *)(ICompressCoder *)(new NCompress::NLzma::CDecoder); } -#ifndef EXTRACT_ONLY -#include "LzmaEncoder.h" -static void *CreateCodecOut() { return (void *)(ICompressCoder *)(new NCompress::NLzma::CEncoder); } -#else -#define CreateCodecOut 0 -#endif - -static CCodecInfo g_CodecInfo = - { CreateCodec, CreateCodecOut, 0x030101, L"LZMA", 1, false }; - -REGISTER_CODEC(LZMA) diff --git a/src/libs/7zip/win/CPP/7zip/Compress/RangeCoder.h b/src/libs/7zip/win/CPP/7zip/Compress/RangeCoder.h deleted file mode 100644 index 1555bd705..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/RangeCoder.h +++ /dev/null @@ -1,201 +0,0 @@ -// Compress/RangeCoder.h -// 2013-01-10 : Igor Pavlov : Public domain - -#ifndef __COMPRESS_RANGE_CODER_H -#define __COMPRESS_RANGE_CODER_H - -#include "../Common/InBuffer.h" -#include "../Common/OutBuffer.h" - -namespace NCompress { -namespace NRangeCoder { - -const unsigned kNumTopBits = 24; -const UInt32 kTopValue = (1 << kNumTopBits); - -class CEncoder -{ - UInt32 _cacheSize; - Byte _cache; -public: - UInt64 Low; - UInt32 Range; - COutBuffer Stream; - bool Create(UInt32 bufSize) { return Stream.Create(bufSize); } - - void SetStream(ISequentialOutStream *stream) { Stream.SetStream(stream); } - void Init() - { - Stream.Init(); - Low = 0; - Range = 0xFFFFFFFF; - _cacheSize = 1; - _cache = 0; - } - - void FlushData() - { - // Low += 1; - for (int i = 0; i < 5; i++) - ShiftLow(); - } - - HRESULT FlushStream() { return Stream.Flush(); } - - void Encode(UInt32 start, UInt32 size, UInt32 total) - { - Low += start * (Range /= total); - Range *= size; - while (Range < kTopValue) - { - Range <<= 8; - ShiftLow(); - } - } - - void ShiftLow() - { - if ((UInt32)Low < (UInt32)0xFF000000 || (unsigned)(Low >> 32) != 0) - { - Byte temp = _cache; - do - { - Stream.WriteByte((Byte)(temp + (Byte)(Low >> 32))); - temp = 0xFF; - } - while (--_cacheSize != 0); - _cache = (Byte)((UInt32)Low >> 24); - } - _cacheSize++; - Low = (UInt32)Low << 8; - } - - void EncodeDirectBits(UInt32 value, int numBits) - { - for (numBits--; numBits >= 0; numBits--) - { - Range >>= 1; - Low += Range & (0 - ((value >> numBits) & 1)); - if (Range < kTopValue) - { - Range <<= 8; - ShiftLow(); - } - } - } - - void EncodeBit(UInt32 size0, UInt32 numTotalBits, UInt32 symbol) - { - UInt32 newBound = (Range >> numTotalBits) * size0; - if (symbol == 0) - Range = newBound; - else - { - Low += newBound; - Range -= newBound; - } - while (Range < kTopValue) - { - Range <<= 8; - ShiftLow(); - } - } - - UInt64 GetProcessedSize() { return Stream.GetProcessedSize() + _cacheSize + 4; } -}; - -class CDecoder -{ -public: - CInBuffer Stream; - UInt32 Range; - UInt32 Code; - bool Create(UInt32 bufSize) { return Stream.Create(bufSize); } - - void Normalize() - { - while (Range < kTopValue) - { - Code = (Code << 8) | Stream.ReadByte(); - Range <<= 8; - } - } - - void SetStream(ISequentialInStream *stream) { Stream.SetStream(stream); } - void Init() - { - Stream.Init(); - Code = 0; - Range = 0xFFFFFFFF; - for (int i = 0; i < 5; i++) - Code = (Code << 8) | Stream.ReadByte(); - } - - UInt32 GetThreshold(UInt32 total) - { - return (Code) / (Range /= total); - } - - void Decode(UInt32 start, UInt32 size) - { - Code -= start * Range; - Range *= size; - Normalize(); - } - - UInt32 DecodeDirectBits(int numTotalBits) - { - UInt32 range = Range; - UInt32 code = Code; - UInt32 result = 0; - for (int i = numTotalBits; i != 0; i--) - { - range >>= 1; - /* - result <<= 1; - if (code >= range) - { - code -= range; - result |= 1; - } - */ - UInt32 t = (code - range) >> 31; - code -= range & (t - 1); - result = (result << 1) | (1 - t); - - if (range < kTopValue) - { - code = (code << 8) | Stream.ReadByte(); - range <<= 8; - } - } - Range = range; - Code = code; - return result; - } - - UInt32 DecodeBit(UInt32 size0, UInt32 numTotalBits) - { - UInt32 newBound = (Range >> numTotalBits) * size0; - UInt32 symbol; - if (Code < newBound) - { - symbol = 0; - Range = newBound; - } - else - { - symbol = 1; - Code -= newBound; - Range -= newBound; - } - Normalize(); - return symbol; - } - - UInt64 GetProcessedSize() { return Stream.GetProcessedSize(); } -}; - -}} - -#endif diff --git a/src/libs/7zip/win/CPP/7zip/Compress/RangeCoderBit.h b/src/libs/7zip/win/CPP/7zip/Compress/RangeCoderBit.h deleted file mode 100644 index 0eddd5586..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/RangeCoderBit.h +++ /dev/null @@ -1,114 +0,0 @@ -// Compress/RangeCoderBit.h -// 2013-01-10 : Igor Pavlov : Public domain - -#ifndef __COMPRESS_RANGE_CODER_BIT_H -#define __COMPRESS_RANGE_CODER_BIT_H - -#include "RangeCoder.h" - -namespace NCompress { -namespace NRangeCoder { - -const unsigned kNumBitModelTotalBits = 11; -const UInt32 kBitModelTotal = (1 << kNumBitModelTotalBits); - -const unsigned kNumMoveReducingBits = 4; - -const unsigned kNumBitPriceShiftBits = 4; -const UInt32 kBitPrice = 1 << kNumBitPriceShiftBits; - -extern UInt32 ProbPrices[kBitModelTotal >> kNumMoveReducingBits]; - -template -class CBitModel -{ -public: - UInt32 Prob; - void UpdateModel(UInt32 symbol) - { - /* - Prob -= (Prob + ((symbol - 1) & ((1 << numMoveBits) - 1))) >> numMoveBits; - Prob += (1 - symbol) << (kNumBitModelTotalBits - numMoveBits); - */ - if (symbol == 0) - Prob += (kBitModelTotal - Prob) >> numMoveBits; - else - Prob -= (Prob) >> numMoveBits; - } -public: - void Init() { Prob = kBitModelTotal / 2; } -}; - -template -class CBitEncoder: public CBitModel -{ -public: - void Encode(CEncoder *encoder, UInt32 symbol) - { - /* - encoder->EncodeBit(this->Prob, kNumBitModelTotalBits, symbol); - this->UpdateModel(symbol); - */ - UInt32 newBound = (encoder->Range >> kNumBitModelTotalBits) * this->Prob; - if (symbol == 0) - { - encoder->Range = newBound; - this->Prob += (kBitModelTotal - this->Prob) >> numMoveBits; - } - else - { - encoder->Low += newBound; - encoder->Range -= newBound; - this->Prob -= (this->Prob) >> numMoveBits; - } - if (encoder->Range < kTopValue) - { - encoder->Range <<= 8; - encoder->ShiftLow(); - } - } - UInt32 GetPrice(UInt32 symbol) const - { - return ProbPrices[(this->Prob ^ ((-(int)(Int32)symbol)) & (kBitModelTotal - 1)) >> kNumMoveReducingBits]; - } - UInt32 GetPrice0() const { return ProbPrices[this->Prob >> kNumMoveReducingBits]; } - UInt32 GetPrice1() const { return ProbPrices[(this->Prob ^ (kBitModelTotal - 1)) >> kNumMoveReducingBits]; } -}; - - -template -class CBitDecoder: public CBitModel -{ -public: - UInt32 Decode(CDecoder *decoder) - { - UInt32 newBound = (decoder->Range >> kNumBitModelTotalBits) * this->Prob; - if (decoder->Code < newBound) - { - decoder->Range = newBound; - this->Prob += (kBitModelTotal - this->Prob) >> numMoveBits; - if (decoder->Range < kTopValue) - { - decoder->Code = (decoder->Code << 8) | decoder->Stream.ReadByte(); - decoder->Range <<= 8; - } - return 0; - } - else - { - decoder->Range -= newBound; - decoder->Code -= newBound; - this->Prob -= (this->Prob) >> numMoveBits; - if (decoder->Range < kTopValue) - { - decoder->Code = (decoder->Code << 8) | decoder->Stream.ReadByte(); - decoder->Range <<= 8; - } - return 1; - } - } -}; - -}} - -#endif diff --git a/src/libs/7zip/win/CPP/7zip/Compress/StdAfx.h b/src/libs/7zip/win/CPP/7zip/Compress/StdAfx.h deleted file mode 100644 index 1cbd7feae..000000000 --- a/src/libs/7zip/win/CPP/7zip/Compress/StdAfx.h +++ /dev/null @@ -1,8 +0,0 @@ -// StdAfx.h - -#ifndef __STDAFX_H -#define __STDAFX_H - -#include "../../Common/Common.h" - -#endif -- cgit v1.2.3