From 0853ccf01c611151e36b107223e152d4a9d6ff89 Mon Sep 17 00:00:00 2001 From: Edoardo Lolletti Date: Tue, 28 Jun 2022 00:48:12 +0200 Subject: [PATCH 1/2] Use lzmalib to encode/decode replay Currently it will "fail" decoding old replays as the lirbary assumes all the lzma streams are terminated by the end of stream block, whereas the replays were being generated without such block (still valid in the lzma standard) --- gframe/lzma/7zTypes.h | 375 --- gframe/lzma/Alloc.c | 455 ---- gframe/lzma/Alloc.h | 51 - gframe/lzma/Android.mk | 9 - gframe/lzma/Compiler.h | 33 - gframe/lzma/LzFind.c | 1127 --------- gframe/lzma/LzFind.h | 121 - gframe/lzma/LzHash.h | 57 - gframe/lzma/LzmaDec.c | 1185 ---------- gframe/lzma/LzmaDec.h | 234 -- gframe/lzma/LzmaEnc.c | 2978 ------------------------ gframe/lzma/LzmaEnc.h | 76 - gframe/lzma/LzmaLib.c | 40 - gframe/lzma/LzmaLib.h | 131 -- gframe/lzma/Precomp.h | 10 - gframe/lzma/lib/arm64-v8a/libclzma.a | Bin 598136 -> 0 bytes gframe/lzma/lib/armeabi-v7a/libclzma.a | Bin 325280 -> 0 bytes gframe/lzma/lib/x86/libclzma.a | Bin 334244 -> 0 bytes gframe/lzma/lib/x86_64/libclzma.a | Bin 566832 -> 0 bytes gframe/lzma/premake4.lua | 4 - gframe/premake5.lua | 13 +- gframe/replay.cpp | 29 +- 22 files changed, 33 insertions(+), 6895 deletions(-) delete mode 100644 gframe/lzma/7zTypes.h delete mode 100644 gframe/lzma/Alloc.c delete mode 100644 gframe/lzma/Alloc.h delete mode 100644 gframe/lzma/Android.mk delete mode 100644 gframe/lzma/Compiler.h delete mode 100644 gframe/lzma/LzFind.c delete mode 100644 gframe/lzma/LzFind.h delete mode 100644 gframe/lzma/LzHash.h delete mode 100644 gframe/lzma/LzmaDec.c delete mode 100644 gframe/lzma/LzmaDec.h delete mode 100644 gframe/lzma/LzmaEnc.c delete mode 100644 gframe/lzma/LzmaEnc.h delete mode 100644 gframe/lzma/LzmaLib.c delete mode 100644 gframe/lzma/LzmaLib.h delete mode 100644 gframe/lzma/Precomp.h delete mode 100644 gframe/lzma/lib/arm64-v8a/libclzma.a delete mode 100644 gframe/lzma/lib/armeabi-v7a/libclzma.a delete mode 100644 gframe/lzma/lib/x86/libclzma.a delete mode 100644 gframe/lzma/lib/x86_64/libclzma.a delete mode 100644 gframe/lzma/premake4.lua diff --git a/gframe/lzma/7zTypes.h b/gframe/lzma/7zTypes.h deleted file mode 100644 index 65b3af63c..000000000 --- a/gframe/lzma/7zTypes.h +++ /dev/null @@ -1,375 +0,0 @@ -/* 7zTypes.h -- Basic types -2018-08-04 : Igor Pavlov : Public domain */ - -#ifndef __7Z_TYPES_H -#define __7Z_TYPES_H - -#ifdef _WIN32 -/* #include */ -#endif - -#include - -#ifndef EXTERN_C_BEGIN -#ifdef __cplusplus -#define EXTERN_C_BEGIN extern "C" { -#define EXTERN_C_END } -#else -#define EXTERN_C_BEGIN -#define EXTERN_C_END -#endif -#endif - -EXTERN_C_BEGIN - -#define SZ_OK 0 - -#define SZ_ERROR_DATA 1 -#define SZ_ERROR_MEM 2 -#define SZ_ERROR_CRC 3 -#define SZ_ERROR_UNSUPPORTED 4 -#define SZ_ERROR_PARAM 5 -#define SZ_ERROR_INPUT_EOF 6 -#define SZ_ERROR_OUTPUT_EOF 7 -#define SZ_ERROR_READ 8 -#define SZ_ERROR_WRITE 9 -#define SZ_ERROR_PROGRESS 10 -#define SZ_ERROR_FAIL 11 -#define SZ_ERROR_THREAD 12 - -#define SZ_ERROR_ARCHIVE 16 -#define SZ_ERROR_NO_ARCHIVE 17 - -typedef int SRes; - - -#ifdef _WIN32 - -/* typedef DWORD WRes; */ -typedef unsigned WRes; -#define MY_SRes_HRESULT_FROM_WRes(x) HRESULT_FROM_WIN32(x) - -#else - -typedef int WRes; -#define MY__FACILITY_WIN32 7 -#define MY__FACILITY__WRes MY__FACILITY_WIN32 -#define MY_SRes_HRESULT_FROM_WRes(x) ((HRESULT)(x) <= 0 ? ((HRESULT)(x)) : ((HRESULT) (((x) & 0x0000FFFF) | (MY__FACILITY__WRes << 16) | 0x80000000))) - -#endif - - -#ifndef RINOK -#define RINOK(x) { int __result__ = (x); if (__result__ != 0) return __result__; } -#endif - -typedef unsigned char Byte; -typedef short Int16; -typedef unsigned short UInt16; - -#ifdef _LZMA_UINT32_IS_ULONG -typedef long Int32; -typedef unsigned long UInt32; -#else -typedef int Int32; -typedef unsigned int UInt32; -#endif - -#ifdef _SZ_NO_INT_64 - -/* define _SZ_NO_INT_64, if your compiler doesn't support 64-bit integers. - NOTES: Some code will work incorrectly in that case! */ - -typedef long Int64; -typedef unsigned long UInt64; - -#else - -#if defined(_MSC_VER) || defined(__BORLANDC__) -typedef __int64 Int64; -typedef unsigned __int64 UInt64; -#define UINT64_CONST(n) n -#else -typedef long long int Int64; -typedef unsigned long long int UInt64; -#define UINT64_CONST(n) n ## ULL -#endif - -#endif - -#ifdef _LZMA_NO_SYSTEM_SIZE_T -typedef UInt32 SizeT; -#else -typedef size_t SizeT; -#endif - -typedef int BoolInt; -/* typedef BoolInt Bool; */ -#define True 1 -#define False 0 - - -#ifdef _WIN32 -#define MY_STD_CALL __stdcall -#else -#define MY_STD_CALL -#endif - -#ifdef _MSC_VER - -#if _MSC_VER >= 1300 -#define MY_NO_INLINE __declspec(noinline) -#else -#define MY_NO_INLINE -#endif - -#define MY_FORCE_INLINE __forceinline - -#define MY_CDECL __cdecl -#define MY_FAST_CALL __fastcall - -#else - -#define MY_NO_INLINE -#define MY_FORCE_INLINE -#define MY_CDECL -#define MY_FAST_CALL - -/* inline keyword : for C++ / C99 */ - -/* GCC, clang: */ -/* -#if defined (__GNUC__) && (__GNUC__ >= 4) -#define MY_FORCE_INLINE __attribute__((always_inline)) -#define MY_NO_INLINE __attribute__((noinline)) -#endif -*/ - -#endif - - -/* The following interfaces use first parameter as pointer to structure */ - -typedef struct IByteIn IByteIn; -struct IByteIn -{ - Byte (*Read)(const IByteIn *p); /* reads one byte, returns 0 in case of EOF or error */ -}; -#define IByteIn_Read(p) (p)->Read(p) - - -typedef struct IByteOut IByteOut; -struct IByteOut -{ - void (*Write)(const IByteOut *p, Byte b); -}; -#define IByteOut_Write(p, b) (p)->Write(p, b) - - -typedef struct ISeqInStream ISeqInStream; -struct ISeqInStream -{ - SRes (*Read)(const ISeqInStream *p, void *buf, size_t *size); - /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. - (output(*size) < input(*size)) is allowed */ -}; -#define ISeqInStream_Read(p, buf, size) (p)->Read(p, buf, size) - -/* it can return SZ_ERROR_INPUT_EOF */ -SRes SeqInStream_Read(const ISeqInStream *stream, void *buf, size_t size); -SRes SeqInStream_Read2(const ISeqInStream *stream, void *buf, size_t size, SRes errorType); -SRes SeqInStream_ReadByte(const ISeqInStream *stream, Byte *buf); - - -typedef struct ISeqOutStream ISeqOutStream; -struct ISeqOutStream -{ - size_t (*Write)(const ISeqOutStream *p, const void *buf, size_t size); - /* Returns: result - the number of actually written bytes. - (result < size) means error */ -}; -#define ISeqOutStream_Write(p, buf, size) (p)->Write(p, buf, size) - -typedef enum -{ - SZ_SEEK_SET = 0, - SZ_SEEK_CUR = 1, - SZ_SEEK_END = 2 -} ESzSeek; - - -typedef struct ISeekInStream ISeekInStream; -struct ISeekInStream -{ - SRes (*Read)(const ISeekInStream *p, void *buf, size_t *size); /* same as ISeqInStream::Read */ - SRes (*Seek)(const ISeekInStream *p, Int64 *pos, ESzSeek origin); -}; -#define ISeekInStream_Read(p, buf, size) (p)->Read(p, buf, size) -#define ISeekInStream_Seek(p, pos, origin) (p)->Seek(p, pos, origin) - - -typedef struct ILookInStream ILookInStream; -struct ILookInStream -{ - SRes (*Look)(const ILookInStream *p, const void **buf, size_t *size); - /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. - (output(*size) > input(*size)) is not allowed - (output(*size) < input(*size)) is allowed */ - SRes (*Skip)(const ILookInStream *p, size_t offset); - /* offset must be <= output(*size) of Look */ - - SRes (*Read)(const ILookInStream *p, void *buf, size_t *size); - /* reads directly (without buffer). It's same as ISeqInStream::Read */ - SRes (*Seek)(const ILookInStream *p, Int64 *pos, ESzSeek origin); -}; - -#define ILookInStream_Look(p, buf, size) (p)->Look(p, buf, size) -#define ILookInStream_Skip(p, offset) (p)->Skip(p, offset) -#define ILookInStream_Read(p, buf, size) (p)->Read(p, buf, size) -#define ILookInStream_Seek(p, pos, origin) (p)->Seek(p, pos, origin) - - -SRes LookInStream_LookRead(const ILookInStream *stream, void *buf, size_t *size); -SRes LookInStream_SeekTo(const ILookInStream *stream, UInt64 offset); - -/* reads via ILookInStream::Read */ -SRes LookInStream_Read2(const ILookInStream *stream, void *buf, size_t size, SRes errorType); -SRes LookInStream_Read(const ILookInStream *stream, void *buf, size_t size); - - - -typedef struct -{ - ILookInStream vt; - const ISeekInStream *realStream; - - size_t pos; - size_t size; /* it's data size */ - - /* the following variables must be set outside */ - Byte *buf; - size_t bufSize; -} CLookToRead2; - -void LookToRead2_CreateVTable(CLookToRead2 *p, int lookahead); - -#define LookToRead2_Init(p) { (p)->pos = (p)->size = 0; } - - -typedef struct -{ - ISeqInStream vt; - const ILookInStream *realStream; -} CSecToLook; - -void SecToLook_CreateVTable(CSecToLook *p); - - - -typedef struct -{ - ISeqInStream vt; - const ILookInStream *realStream; -} CSecToRead; - -void SecToRead_CreateVTable(CSecToRead *p); - - -typedef struct ICompressProgress ICompressProgress; - -struct ICompressProgress -{ - SRes (*Progress)(const ICompressProgress *p, UInt64 inSize, UInt64 outSize); - /* Returns: result. (result != SZ_OK) means break. - Value (UInt64)(Int64)-1 for size means unknown value. */ -}; -#define ICompressProgress_Progress(p, inSize, outSize) (p)->Progress(p, inSize, outSize) - - - -typedef struct ISzAlloc ISzAlloc; -typedef const ISzAlloc * ISzAllocPtr; - -struct ISzAlloc -{ - void *(*Alloc)(ISzAllocPtr p, size_t size); - void (*Free)(ISzAllocPtr p, void *address); /* address can be 0 */ -}; - -#define ISzAlloc_Alloc(p, size) (p)->Alloc(p, size) -#define ISzAlloc_Free(p, a) (p)->Free(p, a) - -/* deprecated */ -#define IAlloc_Alloc(p, size) ISzAlloc_Alloc(p, size) -#define IAlloc_Free(p, a) ISzAlloc_Free(p, a) - - - - - -#ifndef MY_offsetof - #ifdef offsetof - #define MY_offsetof(type, m) offsetof(type, m) - /* - #define MY_offsetof(type, m) FIELD_OFFSET(type, m) - */ - #else - #define MY_offsetof(type, m) ((size_t)&(((type *)0)->m)) - #endif -#endif - - - -#ifndef MY_container_of - -/* -#define MY_container_of(ptr, type, m) container_of(ptr, type, m) -#define MY_container_of(ptr, type, m) CONTAINING_RECORD(ptr, type, m) -#define MY_container_of(ptr, type, m) ((type *)((char *)(ptr) - offsetof(type, m))) -#define MY_container_of(ptr, type, m) (&((type *)0)->m == (ptr), ((type *)(((char *)(ptr)) - MY_offsetof(type, m)))) -*/ - -/* - GCC shows warning: "perhaps the 'offsetof' macro was used incorrectly" - GCC 3.4.4 : classes with constructor - GCC 4.8.1 : classes with non-public variable members" -*/ - -#define MY_container_of(ptr, type, m) ((type *)((char *)(1 ? (ptr) : &((type *)0)->m) - MY_offsetof(type, m))) - - -#endif - -#define CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m) ((type *)(ptr)) - -/* -#define CONTAINER_FROM_VTBL(ptr, type, m) CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m) -*/ -#define CONTAINER_FROM_VTBL(ptr, type, m) MY_container_of(ptr, type, m) - -#define CONTAINER_FROM_VTBL_CLS(ptr, type, m) CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m) -/* -#define CONTAINER_FROM_VTBL_CLS(ptr, type, m) CONTAINER_FROM_VTBL(ptr, type, m) -*/ - - - -#ifdef _WIN32 - -#define CHAR_PATH_SEPARATOR '\\' -#define WCHAR_PATH_SEPARATOR L'\\' -#define STRING_PATH_SEPARATOR "\\" -#define WSTRING_PATH_SEPARATOR L"\\" - -#else - -#define CHAR_PATH_SEPARATOR '/' -#define WCHAR_PATH_SEPARATOR L'/' -#define STRING_PATH_SEPARATOR "/" -#define WSTRING_PATH_SEPARATOR L"/" - -#endif - -EXTERN_C_END - -#endif diff --git a/gframe/lzma/Alloc.c b/gframe/lzma/Alloc.c deleted file mode 100644 index bcede4b85..000000000 --- a/gframe/lzma/Alloc.c +++ /dev/null @@ -1,455 +0,0 @@ -/* Alloc.c -- Memory allocation functions -2018-04-27 : Igor Pavlov : Public domain */ - -#include "Precomp.h" - -#include - -#ifdef _WIN32 -#include -#endif -#include - -#include "Alloc.h" - -/* #define _SZ_ALLOC_DEBUG */ - -/* use _SZ_ALLOC_DEBUG to debug alloc/free operations */ -#ifdef _SZ_ALLOC_DEBUG - -#include -int g_allocCount = 0; -int g_allocCountMid = 0; -int g_allocCountBig = 0; - - -#define CONVERT_INT_TO_STR(charType, tempSize) \ - unsigned char temp[tempSize]; unsigned i = 0; \ - while (val >= 10) { temp[i++] = (unsigned char)('0' + (unsigned)(val % 10)); val /= 10; } \ - *s++ = (charType)('0' + (unsigned)val); \ - while (i != 0) { i--; *s++ = temp[i]; } \ - *s = 0; - -static void ConvertUInt64ToString(UInt64 val, char *s) -{ - CONVERT_INT_TO_STR(char, 24); -} - -#define GET_HEX_CHAR(t) ((char)(((t < 10) ? ('0' + t) : ('A' + (t - 10))))) - -static void ConvertUInt64ToHex(UInt64 val, char *s) -{ - UInt64 v = val; - unsigned i; - for (i = 1;; i++) - { - v >>= 4; - if (v == 0) - break; - } - s[i] = 0; - do - { - unsigned t = (unsigned)(val & 0xF); - val >>= 4; - s[--i] = GET_HEX_CHAR(t); - } - while (i); -} - -#define DEBUG_OUT_STREAM stderr - -static void Print(const char *s) -{ - fputs(s, DEBUG_OUT_STREAM); -} - -static void PrintAligned(const char *s, size_t align) -{ - size_t len = strlen(s); - for(;;) - { - fputc(' ', DEBUG_OUT_STREAM); - if (len >= align) - break; - ++len; - } - Print(s); -} - -static void PrintLn() -{ - Print("\n"); -} - -static void PrintHex(UInt64 v, size_t align) -{ - char s[32]; - ConvertUInt64ToHex(v, s); - PrintAligned(s, align); -} - -static void PrintDec(UInt64 v, size_t align) -{ - char s[32]; - ConvertUInt64ToString(v, s); - PrintAligned(s, align); -} - -static void PrintAddr(void *p) -{ - PrintHex((UInt64)(size_t)(ptrdiff_t)p, 12); -} - - -#define PRINT_ALLOC(name, cnt, size, ptr) \ - Print(name " "); \ - PrintDec(cnt++, 10); \ - PrintHex(size, 10); \ - PrintAddr(ptr); \ - PrintLn(); - -#define PRINT_FREE(name, cnt, ptr) if (ptr) { \ - Print(name " "); \ - PrintDec(--cnt, 10); \ - PrintAddr(ptr); \ - PrintLn(); } - -#else - -#define PRINT_ALLOC(name, cnt, size, ptr) -#define PRINT_FREE(name, cnt, ptr) -#define Print(s) -#define PrintLn() -#define PrintHex(v, align) -#define PrintDec(v, align) -#define PrintAddr(p) - -#endif - - - -void *MyAlloc(size_t size) -{ - if (size == 0) - return NULL; - #ifdef _SZ_ALLOC_DEBUG - { - void *p = malloc(size); - PRINT_ALLOC("Alloc ", g_allocCount, size, p); - return p; - } - #else - return malloc(size); - #endif -} - -void MyFree(void *address) -{ - PRINT_FREE("Free ", g_allocCount, address); - - free(address); -} - -#ifdef _WIN32 - -void *MidAlloc(size_t size) -{ - if (size == 0) - return NULL; - - PRINT_ALLOC("Alloc-Mid", g_allocCountMid, size, NULL); - - return VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE); -} - -void MidFree(void *address) -{ - PRINT_FREE("Free-Mid", g_allocCountMid, address); - - if (!address) - return; - VirtualFree(address, 0, MEM_RELEASE); -} - -#ifndef MEM_LARGE_PAGES -#undef _7ZIP_LARGE_PAGES -#endif - -#ifdef _7ZIP_LARGE_PAGES -SIZE_T g_LargePageSize = 0; -typedef SIZE_T (WINAPI *GetLargePageMinimumP)(); -#endif - -void SetLargePageSize() -{ - #ifdef _7ZIP_LARGE_PAGES - SIZE_T size; - GetLargePageMinimumP largePageMinimum = (GetLargePageMinimumP) - GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "GetLargePageMinimum"); - if (!largePageMinimum) - return; - size = largePageMinimum(); - if (size == 0 || (size & (size - 1)) != 0) - return; - g_LargePageSize = size; - #endif -} - - -void *BigAlloc(size_t size) -{ - if (size == 0) - return NULL; - - PRINT_ALLOC("Alloc-Big", g_allocCountBig, size, NULL); - - #ifdef _7ZIP_LARGE_PAGES - { - SIZE_T ps = g_LargePageSize; - if (ps != 0 && ps <= (1 << 30) && size > (ps / 2)) - { - size_t size2; - ps--; - size2 = (size + ps) & ~ps; - if (size2 >= size) - { - void *res = VirtualAlloc(NULL, size2, MEM_COMMIT | MEM_LARGE_PAGES, PAGE_READWRITE); - if (res) - return res; - } - } - } - #endif - - return VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE); -} - -void BigFree(void *address) -{ - PRINT_FREE("Free-Big", g_allocCountBig, address); - - if (!address) - return; - VirtualFree(address, 0, MEM_RELEASE); -} - -#endif - - -static void *SzAlloc(ISzAllocPtr p, size_t size) { UNUSED_VAR(p); return MyAlloc(size); } -static void SzFree(ISzAllocPtr p, void *address) { UNUSED_VAR(p); MyFree(address); } -const ISzAlloc g_Alloc = { SzAlloc, SzFree }; - -static void *SzMidAlloc(ISzAllocPtr p, size_t size) { UNUSED_VAR(p); return MidAlloc(size); } -static void SzMidFree(ISzAllocPtr p, void *address) { UNUSED_VAR(p); MidFree(address); } -const ISzAlloc g_MidAlloc = { SzMidAlloc, SzMidFree }; - -static void *SzBigAlloc(ISzAllocPtr p, size_t size) { UNUSED_VAR(p); return BigAlloc(size); } -static void SzBigFree(ISzAllocPtr p, void *address) { UNUSED_VAR(p); BigFree(address); } -const ISzAlloc g_BigAlloc = { SzBigAlloc, SzBigFree }; - - -/* - uintptr_t : C99 (optional) - : unsupported in VS6 -*/ - -#ifdef _WIN32 - typedef UINT_PTR UIntPtr; -#else - /* - typedef uintptr_t UIntPtr; - */ - typedef ptrdiff_t UIntPtr; -#endif - - -#define ADJUST_ALLOC_SIZE 0 -/* -#define ADJUST_ALLOC_SIZE (sizeof(void *) - 1) -*/ -/* - Use (ADJUST_ALLOC_SIZE = (sizeof(void *) - 1)), if - MyAlloc() can return address that is NOT multiple of sizeof(void *). -*/ - - -/* -#define MY_ALIGN_PTR_DOWN(p, align) ((void *)((char *)(p) - ((size_t)(UIntPtr)(p) & ((align) - 1)))) -*/ -#define MY_ALIGN_PTR_DOWN(p, align) ((void *)((((UIntPtr)(p)) & ~((UIntPtr)(align) - 1)))) - -#define MY_ALIGN_PTR_UP_PLUS(p, align) MY_ALIGN_PTR_DOWN(((char *)(p) + (align) + ADJUST_ALLOC_SIZE), align) - - -#if (_POSIX_C_SOURCE >= 200112L) && !defined(_WIN32) - #define USE_posix_memalign -#endif - -/* - This posix_memalign() is for test purposes only. - We also need special Free() function instead of free(), - if this posix_memalign() is used. -*/ - -/* -static int posix_memalign(void **ptr, size_t align, size_t size) -{ - size_t newSize = size + align; - void *p; - void *pAligned; - *ptr = NULL; - if (newSize < size) - return 12; // ENOMEM - p = MyAlloc(newSize); - if (!p) - return 12; // ENOMEM - pAligned = MY_ALIGN_PTR_UP_PLUS(p, align); - ((void **)pAligned)[-1] = p; - *ptr = pAligned; - return 0; -} -*/ - -/* - ALLOC_ALIGN_SIZE >= sizeof(void *) - ALLOC_ALIGN_SIZE >= cache_line_size -*/ - -#define ALLOC_ALIGN_SIZE ((size_t)1 << 7) - -static void *SzAlignedAlloc(ISzAllocPtr pp, size_t size) -{ - #ifndef USE_posix_memalign - - void *p; - void *pAligned; - size_t newSize; - UNUSED_VAR(pp); - - /* also we can allocate additional dummy ALLOC_ALIGN_SIZE bytes after aligned - block to prevent cache line sharing with another allocated blocks */ - - newSize = size + ALLOC_ALIGN_SIZE * 1 + ADJUST_ALLOC_SIZE; - if (newSize < size) - return NULL; - - p = MyAlloc(newSize); - - if (!p) - return NULL; - pAligned = MY_ALIGN_PTR_UP_PLUS(p, ALLOC_ALIGN_SIZE); - - Print(" size="); PrintHex(size, 8); - Print(" a_size="); PrintHex(newSize, 8); - Print(" ptr="); PrintAddr(p); - Print(" a_ptr="); PrintAddr(pAligned); - PrintLn(); - - ((void **)pAligned)[-1] = p; - - return pAligned; - - #else - - void *p; - UNUSED_VAR(pp); - if (posix_memalign(&p, ALLOC_ALIGN_SIZE, size)) - return NULL; - - Print(" posix_memalign="); PrintAddr(p); - PrintLn(); - - return p; - - #endif -} - - -static void SzAlignedFree(ISzAllocPtr pp, void *address) -{ - UNUSED_VAR(pp); - #ifndef USE_posix_memalign - if (address) - MyFree(((void **)address)[-1]); - #else - free(address); - #endif -} - - -const ISzAlloc g_AlignedAlloc = { SzAlignedAlloc, SzAlignedFree }; - - - -#define MY_ALIGN_PTR_DOWN_1(p) MY_ALIGN_PTR_DOWN(p, sizeof(void *)) - -/* we align ptr to support cases where CAlignOffsetAlloc::offset is not multiply of sizeof(void *) */ -#define REAL_BLOCK_PTR_VAR(p) ((void **)MY_ALIGN_PTR_DOWN_1(p))[-1] -/* -#define REAL_BLOCK_PTR_VAR(p) ((void **)(p))[-1] -*/ - -static void *AlignOffsetAlloc_Alloc(ISzAllocPtr pp, size_t size) -{ - CAlignOffsetAlloc *p = CONTAINER_FROM_VTBL(pp, CAlignOffsetAlloc, vt); - void *adr; - void *pAligned; - size_t newSize; - size_t extra; - size_t alignSize = (size_t)1 << p->numAlignBits; - - if (alignSize < sizeof(void *)) - alignSize = sizeof(void *); - - if (p->offset >= alignSize) - return NULL; - - /* also we can allocate additional dummy ALLOC_ALIGN_SIZE bytes after aligned - block to prevent cache line sharing with another allocated blocks */ - extra = p->offset & (sizeof(void *) - 1); - newSize = size + alignSize + extra + ADJUST_ALLOC_SIZE; - if (newSize < size) - return NULL; - - adr = ISzAlloc_Alloc(p->baseAlloc, newSize); - - if (!adr) - return NULL; - - pAligned = (char *)MY_ALIGN_PTR_DOWN((char *)adr + - alignSize - p->offset + extra + ADJUST_ALLOC_SIZE, alignSize) + p->offset; - - PrintLn(); - Print("- Aligned: "); - Print(" size="); PrintHex(size, 8); - Print(" a_size="); PrintHex(newSize, 8); - Print(" ptr="); PrintAddr(adr); - Print(" a_ptr="); PrintAddr(pAligned); - PrintLn(); - - REAL_BLOCK_PTR_VAR(pAligned) = adr; - - return pAligned; -} - - -static void AlignOffsetAlloc_Free(ISzAllocPtr pp, void *address) -{ - if (address) - { - CAlignOffsetAlloc *p = CONTAINER_FROM_VTBL(pp, CAlignOffsetAlloc, vt); - PrintLn(); - Print("- Aligned Free: "); - PrintLn(); - ISzAlloc_Free(p->baseAlloc, REAL_BLOCK_PTR_VAR(address)); - } -} - - -void AlignOffsetAlloc_CreateVTable(CAlignOffsetAlloc *p) -{ - p->vt.Alloc = AlignOffsetAlloc_Alloc; - p->vt.Free = AlignOffsetAlloc_Free; -} diff --git a/gframe/lzma/Alloc.h b/gframe/lzma/Alloc.h deleted file mode 100644 index 648237646..000000000 --- a/gframe/lzma/Alloc.h +++ /dev/null @@ -1,51 +0,0 @@ -/* Alloc.h -- Memory allocation functions -2018-02-19 : Igor Pavlov : Public domain */ - -#ifndef __COMMON_ALLOC_H -#define __COMMON_ALLOC_H - -#include "7zTypes.h" - -EXTERN_C_BEGIN - -void *MyAlloc(size_t size); -void MyFree(void *address); - -#ifdef _WIN32 - -void SetLargePageSize(); - -void *MidAlloc(size_t size); -void MidFree(void *address); -void *BigAlloc(size_t size); -void BigFree(void *address); - -#else - -#define MidAlloc(size) MyAlloc(size) -#define MidFree(address) MyFree(address) -#define BigAlloc(size) MyAlloc(size) -#define BigFree(address) MyFree(address) - -#endif - -extern const ISzAlloc g_Alloc; -extern const ISzAlloc g_BigAlloc; -extern const ISzAlloc g_MidAlloc; -extern const ISzAlloc g_AlignedAlloc; - - -typedef struct -{ - ISzAlloc vt; - ISzAllocPtr baseAlloc; - unsigned numAlignBits; /* ((1 << numAlignBits) >= sizeof(void *)) */ - size_t offset; /* (offset == (k * sizeof(void *)) && offset < (1 << numAlignBits) */ -} CAlignOffsetAlloc; - -void AlignOffsetAlloc_CreateVTable(CAlignOffsetAlloc *p); - - -EXTERN_C_END - -#endif diff --git a/gframe/lzma/Android.mk b/gframe/lzma/Android.mk deleted file mode 100644 index f3e2126fb..000000000 --- a/gframe/lzma/Android.mk +++ /dev/null @@ -1,9 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_MODULE := clzma -LOCAL_SRC_FILES := ./lib/$(TARGET_ARCH_ABI)/libclzma.a - -include $(PREBUILT_STATIC_LIBRARY) - diff --git a/gframe/lzma/Compiler.h b/gframe/lzma/Compiler.h deleted file mode 100644 index 0cc409d8a..000000000 --- a/gframe/lzma/Compiler.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Compiler.h -2017-04-03 : Igor Pavlov : Public domain */ - -#ifndef __7Z_COMPILER_H -#define __7Z_COMPILER_H - -#ifdef _MSC_VER - - #ifdef UNDER_CE - #define RPC_NO_WINDOWS_H - /* #pragma warning(disable : 4115) // '_RPC_ASYNC_STATE' : named type definition in parentheses */ - #pragma warning(disable : 4201) // nonstandard extension used : nameless struct/union - #pragma warning(disable : 4214) // nonstandard extension used : bit field types other than int - #endif - - #if _MSC_VER >= 1300 - #pragma warning(disable : 4996) // This function or variable may be unsafe - #else - #pragma warning(disable : 4511) // copy constructor could not be generated - #pragma warning(disable : 4512) // assignment operator could not be generated - #pragma warning(disable : 4514) // unreferenced inline function has been removed - #pragma warning(disable : 4702) // unreachable code - #pragma warning(disable : 4710) // not inlined - #pragma warning(disable : 4714) // function marked as __forceinline not inlined - #pragma warning(disable : 4786) // identifier was truncated to '255' characters in the debug information - #endif - -#endif - -#define UNUSED_VAR(x) (void)x; -/* #define UNUSED_VAR(x) x=x; */ - -#endif diff --git a/gframe/lzma/LzFind.c b/gframe/lzma/LzFind.c deleted file mode 100644 index df55e86c1..000000000 --- a/gframe/lzma/LzFind.c +++ /dev/null @@ -1,1127 +0,0 @@ -/* LzFind.c -- Match finder for LZ algorithms -2018-07-08 : Igor Pavlov : Public domain */ - -#include "Precomp.h" - -#include - -#include "LzFind.h" -#include "LzHash.h" - -#define kEmptyHashValue 0 -#define kMaxValForNormalize ((UInt32)0xFFFFFFFF) -#define kNormalizeStepMin (1 << 10) /* it must be power of 2 */ -#define kNormalizeMask (~(UInt32)(kNormalizeStepMin - 1)) -#define kMaxHistorySize ((UInt32)7 << 29) - -#define kStartMaxLen 3 - -static void LzInWindow_Free(CMatchFinder *p, ISzAllocPtr alloc) -{ - if (!p->directInput) - { - ISzAlloc_Free(alloc, p->bufferBase); - p->bufferBase = NULL; - } -} - -/* keepSizeBefore + keepSizeAfter + keepSizeReserv must be < 4G) */ - -static int LzInWindow_Create(CMatchFinder *p, UInt32 keepSizeReserv, ISzAllocPtr alloc) -{ - UInt32 blockSize = p->keepSizeBefore + p->keepSizeAfter + keepSizeReserv; - if (p->directInput) - { - p->blockSize = blockSize; - return 1; - } - if (!p->bufferBase || p->blockSize != blockSize) - { - LzInWindow_Free(p, alloc); - p->blockSize = blockSize; - p->bufferBase = (Byte *)ISzAlloc_Alloc(alloc, (size_t)blockSize); - } - return (p->bufferBase != NULL); -} - -Byte *MatchFinder_GetPointerToCurrentPos(CMatchFinder *p) { return p->buffer; } - -UInt32 MatchFinder_GetNumAvailableBytes(CMatchFinder *p) { return p->streamPos - p->pos; } - -void MatchFinder_ReduceOffsets(CMatchFinder *p, UInt32 subValue) -{ - p->posLimit -= subValue; - p->pos -= subValue; - p->streamPos -= subValue; -} - -static void MatchFinder_ReadBlock(CMatchFinder *p) -{ - if (p->streamEndWasReached || p->result != SZ_OK) - return; - - /* We use (p->streamPos - p->pos) value. (p->streamPos < p->pos) is allowed. */ - - if (p->directInput) - { - UInt32 curSize = 0xFFFFFFFF - (p->streamPos - p->pos); - if (curSize > p->directInputRem) - curSize = (UInt32)p->directInputRem; - p->directInputRem -= curSize; - p->streamPos += curSize; - if (p->directInputRem == 0) - p->streamEndWasReached = 1; - return; - } - - for (;;) - { - Byte *dest = p->buffer + (p->streamPos - p->pos); - size_t size = (p->bufferBase + p->blockSize - dest); - if (size == 0) - return; - - p->result = ISeqInStream_Read(p->stream, dest, &size); - if (p->result != SZ_OK) - return; - if (size == 0) - { - p->streamEndWasReached = 1; - return; - } - p->streamPos += (UInt32)size; - if (p->streamPos - p->pos > p->keepSizeAfter) - return; - } -} - -void MatchFinder_MoveBlock(CMatchFinder *p) -{ - memmove(p->bufferBase, - p->buffer - p->keepSizeBefore, - (size_t)(p->streamPos - p->pos) + p->keepSizeBefore); - p->buffer = p->bufferBase + p->keepSizeBefore; -} - -int MatchFinder_NeedMove(CMatchFinder *p) -{ - if (p->directInput) - return 0; - /* if (p->streamEndWasReached) return 0; */ - return ((size_t)(p->bufferBase + p->blockSize - p->buffer) <= p->keepSizeAfter); -} - -void MatchFinder_ReadIfRequired(CMatchFinder *p) -{ - if (p->streamEndWasReached) - return; - if (p->keepSizeAfter >= p->streamPos - p->pos) - MatchFinder_ReadBlock(p); -} - -static void MatchFinder_CheckAndMoveAndRead(CMatchFinder *p) -{ - if (MatchFinder_NeedMove(p)) - MatchFinder_MoveBlock(p); - MatchFinder_ReadBlock(p); -} - -static void MatchFinder_SetDefaultSettings(CMatchFinder *p) -{ - p->cutValue = 32; - p->btMode = 1; - p->numHashBytes = 4; - p->bigHash = 0; -} - -#define kCrcPoly 0xEDB88320 - -void MatchFinder_Construct(CMatchFinder *p) -{ - unsigned i; - p->bufferBase = NULL; - p->directInput = 0; - p->hash = NULL; - p->expectedDataSize = (UInt64)(Int64)-1; - MatchFinder_SetDefaultSettings(p); - - for (i = 0; i < 256; i++) - { - UInt32 r = (UInt32)i; - unsigned j; - for (j = 0; j < 8; j++) - r = (r >> 1) ^ (kCrcPoly & ((UInt32)0 - (r & 1))); - p->crc[i] = r; - } -} - -static void MatchFinder_FreeThisClassMemory(CMatchFinder *p, ISzAllocPtr alloc) -{ - ISzAlloc_Free(alloc, p->hash); - p->hash = NULL; -} - -void MatchFinder_Free(CMatchFinder *p, ISzAllocPtr alloc) -{ - MatchFinder_FreeThisClassMemory(p, alloc); - LzInWindow_Free(p, alloc); -} - -static CLzRef* AllocRefs(size_t num, ISzAllocPtr alloc) -{ - size_t sizeInBytes = (size_t)num * sizeof(CLzRef); - if (sizeInBytes / sizeof(CLzRef) != num) - return NULL; - return (CLzRef *)ISzAlloc_Alloc(alloc, sizeInBytes); -} - -int MatchFinder_Create(CMatchFinder *p, UInt32 historySize, - UInt32 keepAddBufferBefore, UInt32 matchMaxLen, UInt32 keepAddBufferAfter, - ISzAllocPtr alloc) -{ - UInt32 sizeReserv; - - if (historySize > kMaxHistorySize) - { - MatchFinder_Free(p, alloc); - return 0; - } - - sizeReserv = historySize >> 1; - if (historySize >= ((UInt32)3 << 30)) sizeReserv = historySize >> 3; - else if (historySize >= ((UInt32)2 << 30)) sizeReserv = historySize >> 2; - - sizeReserv += (keepAddBufferBefore + matchMaxLen + keepAddBufferAfter) / 2 + (1 << 19); - - p->keepSizeBefore = historySize + keepAddBufferBefore + 1; - p->keepSizeAfter = matchMaxLen + keepAddBufferAfter; - - /* we need one additional byte, since we use MoveBlock after pos++ and before dictionary using */ - - if (LzInWindow_Create(p, sizeReserv, alloc)) - { - UInt32 newCyclicBufferSize = historySize + 1; - UInt32 hs; - p->matchMaxLen = matchMaxLen; - { - p->fixedHashSize = 0; - if (p->numHashBytes == 2) - hs = (1 << 16) - 1; - else - { - hs = historySize; - if (hs > p->expectedDataSize) - hs = (UInt32)p->expectedDataSize; - if (hs != 0) - hs--; - hs |= (hs >> 1); - hs |= (hs >> 2); - hs |= (hs >> 4); - hs |= (hs >> 8); - hs >>= 1; - hs |= 0xFFFF; /* don't change it! It's required for Deflate */ - if (hs > (1 << 24)) - { - if (p->numHashBytes == 3) - hs = (1 << 24) - 1; - else - hs >>= 1; - /* if (bigHash) mode, GetHeads4b() in LzFindMt.c needs (hs >= ((1 << 24) - 1))) */ - } - } - p->hashMask = hs; - hs++; - if (p->numHashBytes > 2) p->fixedHashSize += kHash2Size; - if (p->numHashBytes > 3) p->fixedHashSize += kHash3Size; - if (p->numHashBytes > 4) p->fixedHashSize += kHash4Size; - hs += p->fixedHashSize; - } - - { - size_t newSize; - size_t numSons; - p->historySize = historySize; - p->hashSizeSum = hs; - p->cyclicBufferSize = newCyclicBufferSize; - - numSons = newCyclicBufferSize; - if (p->btMode) - numSons <<= 1; - newSize = hs + numSons; - - if (p->hash && p->numRefs == newSize) - return 1; - - MatchFinder_FreeThisClassMemory(p, alloc); - p->numRefs = newSize; - p->hash = AllocRefs(newSize, alloc); - - if (p->hash) - { - p->son = p->hash + p->hashSizeSum; - return 1; - } - } - } - - MatchFinder_Free(p, alloc); - return 0; -} - -static void MatchFinder_SetLimits(CMatchFinder *p) -{ - UInt32 limit = kMaxValForNormalize - p->pos; - UInt32 limit2 = p->cyclicBufferSize - p->cyclicBufferPos; - - if (limit2 < limit) - limit = limit2; - limit2 = p->streamPos - p->pos; - - if (limit2 <= p->keepSizeAfter) - { - if (limit2 > 0) - limit2 = 1; - } - else - limit2 -= p->keepSizeAfter; - - if (limit2 < limit) - limit = limit2; - - { - UInt32 lenLimit = p->streamPos - p->pos; - if (lenLimit > p->matchMaxLen) - lenLimit = p->matchMaxLen; - p->lenLimit = lenLimit; - } - p->posLimit = p->pos + limit; -} - - -void MatchFinder_Init_LowHash(CMatchFinder *p) -{ - size_t i; - CLzRef *items = p->hash; - size_t numItems = p->fixedHashSize; - for (i = 0; i < numItems; i++) - items[i] = kEmptyHashValue; -} - - -void MatchFinder_Init_HighHash(CMatchFinder *p) -{ - size_t i; - CLzRef *items = p->hash + p->fixedHashSize; - size_t numItems = (size_t)p->hashMask + 1; - for (i = 0; i < numItems; i++) - items[i] = kEmptyHashValue; -} - - -void MatchFinder_Init_3(CMatchFinder *p, int readData) -{ - p->cyclicBufferPos = 0; - p->buffer = p->bufferBase; - p->pos = - p->streamPos = p->cyclicBufferSize; - p->result = SZ_OK; - p->streamEndWasReached = 0; - - if (readData) - MatchFinder_ReadBlock(p); - - MatchFinder_SetLimits(p); -} - - -void MatchFinder_Init(CMatchFinder *p) -{ - MatchFinder_Init_HighHash(p); - MatchFinder_Init_LowHash(p); - MatchFinder_Init_3(p, True); -} - - -static UInt32 MatchFinder_GetSubValue(CMatchFinder *p) -{ - return (p->pos - p->historySize - 1) & kNormalizeMask; -} - -void MatchFinder_Normalize3(UInt32 subValue, CLzRef *items, size_t numItems) -{ - size_t i; - for (i = 0; i < numItems; i++) - { - UInt32 value = items[i]; - if (value <= subValue) - value = kEmptyHashValue; - else - value -= subValue; - items[i] = value; - } -} - -static void MatchFinder_Normalize(CMatchFinder *p) -{ - UInt32 subValue = MatchFinder_GetSubValue(p); - MatchFinder_Normalize3(subValue, p->hash, p->numRefs); - MatchFinder_ReduceOffsets(p, subValue); -} - - -MY_NO_INLINE -static void MatchFinder_CheckLimits(CMatchFinder *p) -{ - if (p->pos == kMaxValForNormalize) - MatchFinder_Normalize(p); - if (!p->streamEndWasReached && p->keepSizeAfter == p->streamPos - p->pos) - MatchFinder_CheckAndMoveAndRead(p); - if (p->cyclicBufferPos == p->cyclicBufferSize) - p->cyclicBufferPos = 0; - MatchFinder_SetLimits(p); -} - - -/* - (lenLimit > maxLen) -*/ -MY_FORCE_INLINE -static UInt32 * Hc_GetMatchesSpec(unsigned lenLimit, UInt32 curMatch, UInt32 pos, const Byte *cur, CLzRef *son, - UInt32 _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 cutValue, - UInt32 *distances, unsigned maxLen) -{ - /* - son[_cyclicBufferPos] = curMatch; - for (;;) - { - UInt32 delta = pos - curMatch; - if (cutValue-- == 0 || delta >= _cyclicBufferSize) - return distances; - { - const Byte *pb = cur - delta; - curMatch = son[_cyclicBufferPos - delta + ((delta > _cyclicBufferPos) ? _cyclicBufferSize : 0)]; - if (pb[maxLen] == cur[maxLen] && *pb == *cur) - { - UInt32 len = 0; - while (++len != lenLimit) - if (pb[len] != cur[len]) - break; - if (maxLen < len) - { - maxLen = len; - *distances++ = len; - *distances++ = delta - 1; - if (len == lenLimit) - return distances; - } - } - } - } - */ - - const Byte *lim = cur + lenLimit; - son[_cyclicBufferPos] = curMatch; - do - { - UInt32 delta = pos - curMatch; - if (delta >= _cyclicBufferSize) - break; - { - ptrdiff_t diff; - curMatch = son[_cyclicBufferPos - delta + ((delta > _cyclicBufferPos) ? _cyclicBufferSize : 0)]; - diff = (ptrdiff_t)0 - delta; - if (cur[maxLen] == cur[maxLen + diff]) - { - const Byte *c = cur; - while (*c == c[diff]) - { - if (++c == lim) - { - distances[0] = (UInt32)(lim - cur); - distances[1] = delta - 1; - return distances + 2; - } - } - { - unsigned len = (unsigned)(c - cur); - if (maxLen < len) - { - maxLen = len; - distances[0] = (UInt32)len; - distances[1] = delta - 1; - distances += 2; - } - } - } - } - } - while (--cutValue); - - return distances; -} - - -MY_FORCE_INLINE -UInt32 * GetMatchesSpec1(UInt32 lenLimit, UInt32 curMatch, UInt32 pos, const Byte *cur, CLzRef *son, - UInt32 _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 cutValue, - UInt32 *distances, UInt32 maxLen) -{ - CLzRef *ptr0 = son + ((size_t)_cyclicBufferPos << 1) + 1; - CLzRef *ptr1 = son + ((size_t)_cyclicBufferPos << 1); - unsigned len0 = 0, len1 = 0; - for (;;) - { - UInt32 delta = pos - curMatch; - if (cutValue-- == 0 || delta >= _cyclicBufferSize) - { - *ptr0 = *ptr1 = kEmptyHashValue; - return distances; - } - { - CLzRef *pair = son + ((size_t)(_cyclicBufferPos - delta + ((delta > _cyclicBufferPos) ? _cyclicBufferSize : 0)) << 1); - const Byte *pb = cur - delta; - unsigned len = (len0 < len1 ? len0 : len1); - UInt32 pair0 = pair[0]; - if (pb[len] == cur[len]) - { - if (++len != lenLimit && pb[len] == cur[len]) - while (++len != lenLimit) - if (pb[len] != cur[len]) - break; - if (maxLen < len) - { - maxLen = (UInt32)len; - *distances++ = (UInt32)len; - *distances++ = delta - 1; - if (len == lenLimit) - { - *ptr1 = pair0; - *ptr0 = pair[1]; - return distances; - } - } - } - if (pb[len] < cur[len]) - { - *ptr1 = curMatch; - ptr1 = pair + 1; - curMatch = *ptr1; - len1 = len; - } - else - { - *ptr0 = curMatch; - ptr0 = pair; - curMatch = *ptr0; - len0 = len; - } - } - } -} - -static void SkipMatchesSpec(UInt32 lenLimit, UInt32 curMatch, UInt32 pos, const Byte *cur, CLzRef *son, - UInt32 _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 cutValue) -{ - CLzRef *ptr0 = son + ((size_t)_cyclicBufferPos << 1) + 1; - CLzRef *ptr1 = son + ((size_t)_cyclicBufferPos << 1); - unsigned len0 = 0, len1 = 0; - for (;;) - { - UInt32 delta = pos - curMatch; - if (cutValue-- == 0 || delta >= _cyclicBufferSize) - { - *ptr0 = *ptr1 = kEmptyHashValue; - return; - } - { - CLzRef *pair = son + ((size_t)(_cyclicBufferPos - delta + ((delta > _cyclicBufferPos) ? _cyclicBufferSize : 0)) << 1); - const Byte *pb = cur - delta; - unsigned len = (len0 < len1 ? len0 : len1); - if (pb[len] == cur[len]) - { - while (++len != lenLimit) - if (pb[len] != cur[len]) - break; - { - if (len == lenLimit) - { - *ptr1 = pair[0]; - *ptr0 = pair[1]; - return; - } - } - } - if (pb[len] < cur[len]) - { - *ptr1 = curMatch; - ptr1 = pair + 1; - curMatch = *ptr1; - len1 = len; - } - else - { - *ptr0 = curMatch; - ptr0 = pair; - curMatch = *ptr0; - len0 = len; - } - } - } -} - -#define MOVE_POS \ - ++p->cyclicBufferPos; \ - p->buffer++; \ - if (++p->pos == p->posLimit) MatchFinder_CheckLimits(p); - -#define MOVE_POS_RET MOVE_POS return (UInt32)offset; - -static void MatchFinder_MovePos(CMatchFinder *p) { MOVE_POS; } - -#define GET_MATCHES_HEADER2(minLen, ret_op) \ - unsigned lenLimit; UInt32 hv; const Byte *cur; UInt32 curMatch; \ - lenLimit = (unsigned)p->lenLimit; { if (lenLimit < minLen) { MatchFinder_MovePos(p); ret_op; }} \ - cur = p->buffer; - -#define GET_MATCHES_HEADER(minLen) GET_MATCHES_HEADER2(minLen, return 0) -#define SKIP_HEADER(minLen) GET_MATCHES_HEADER2(minLen, continue) - -#define MF_PARAMS(p) p->pos, p->buffer, p->son, p->cyclicBufferPos, p->cyclicBufferSize, p->cutValue - -#define GET_MATCHES_FOOTER(offset, maxLen) \ - offset = (unsigned)(GetMatchesSpec1((UInt32)lenLimit, curMatch, MF_PARAMS(p), \ - distances + offset, (UInt32)maxLen) - distances); MOVE_POS_RET; - -#define SKIP_FOOTER \ - SkipMatchesSpec((UInt32)lenLimit, curMatch, MF_PARAMS(p)); MOVE_POS; - -#define UPDATE_maxLen { \ - ptrdiff_t diff = (ptrdiff_t)0 - d2; \ - const Byte *c = cur + maxLen; \ - const Byte *lim = cur + lenLimit; \ - for (; c != lim; c++) if (*(c + diff) != *c) break; \ - maxLen = (unsigned)(c - cur); } - -static UInt32 Bt2_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) -{ - unsigned offset; - GET_MATCHES_HEADER(2) - HASH2_CALC; - curMatch = p->hash[hv]; - p->hash[hv] = p->pos; - offset = 0; - GET_MATCHES_FOOTER(offset, 1) -} - -UInt32 Bt3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) -{ - unsigned offset; - GET_MATCHES_HEADER(3) - HASH_ZIP_CALC; - curMatch = p->hash[hv]; - p->hash[hv] = p->pos; - offset = 0; - GET_MATCHES_FOOTER(offset, 2) -} - -static UInt32 Bt3_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) -{ - UInt32 h2, d2, pos; - unsigned maxLen, offset; - UInt32 *hash; - GET_MATCHES_HEADER(3) - - HASH3_CALC; - - hash = p->hash; - pos = p->pos; - - d2 = pos - hash[h2]; - - curMatch = (hash + kFix3HashSize)[hv]; - - hash[h2] = pos; - (hash + kFix3HashSize)[hv] = pos; - - maxLen = 2; - offset = 0; - - if (d2 < p->cyclicBufferSize && *(cur - d2) == *cur) - { - UPDATE_maxLen - distances[0] = (UInt32)maxLen; - distances[1] = d2 - 1; - offset = 2; - if (maxLen == lenLimit) - { - SkipMatchesSpec((UInt32)lenLimit, curMatch, MF_PARAMS(p)); - MOVE_POS_RET; - } - } - - GET_MATCHES_FOOTER(offset, maxLen) -} - -static UInt32 Bt4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) -{ - UInt32 h2, h3, d2, d3, pos; - unsigned maxLen, offset; - UInt32 *hash; - GET_MATCHES_HEADER(4) - - HASH4_CALC; - - hash = p->hash; - pos = p->pos; - - d2 = pos - hash [h2]; - d3 = pos - (hash + kFix3HashSize)[h3]; - - curMatch = (hash + kFix4HashSize)[hv]; - - hash [h2] = pos; - (hash + kFix3HashSize)[h3] = pos; - (hash + kFix4HashSize)[hv] = pos; - - maxLen = 0; - offset = 0; - - if (d2 < p->cyclicBufferSize && *(cur - d2) == *cur) - { - maxLen = 2; - distances[0] = 2; - distances[1] = d2 - 1; - offset = 2; - } - - if (d2 != d3 && d3 < p->cyclicBufferSize && *(cur - d3) == *cur) - { - maxLen = 3; - distances[(size_t)offset + 1] = d3 - 1; - offset += 2; - d2 = d3; - } - - if (offset != 0) - { - UPDATE_maxLen - distances[(size_t)offset - 2] = (UInt32)maxLen; - if (maxLen == lenLimit) - { - SkipMatchesSpec((UInt32)lenLimit, curMatch, MF_PARAMS(p)); - MOVE_POS_RET; - } - } - - if (maxLen < 3) - maxLen = 3; - - GET_MATCHES_FOOTER(offset, maxLen) -} - -/* -static UInt32 Bt5_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) -{ - UInt32 h2, h3, h4, d2, d3, d4, maxLen, offset, pos; - UInt32 *hash; - GET_MATCHES_HEADER(5) - - HASH5_CALC; - - hash = p->hash; - pos = p->pos; - - d2 = pos - hash [h2]; - d3 = pos - (hash + kFix3HashSize)[h3]; - d4 = pos - (hash + kFix4HashSize)[h4]; - - curMatch = (hash + kFix5HashSize)[hv]; - - hash [h2] = pos; - (hash + kFix3HashSize)[h3] = pos; - (hash + kFix4HashSize)[h4] = pos; - (hash + kFix5HashSize)[hv] = pos; - - maxLen = 0; - offset = 0; - - if (d2 < p->cyclicBufferSize && *(cur - d2) == *cur) - { - distances[0] = maxLen = 2; - distances[1] = d2 - 1; - offset = 2; - if (*(cur - d2 + 2) == cur[2]) - distances[0] = maxLen = 3; - else if (d3 < p->cyclicBufferSize && *(cur - d3) == *cur) - { - distances[2] = maxLen = 3; - distances[3] = d3 - 1; - offset = 4; - d2 = d3; - } - } - else if (d3 < p->cyclicBufferSize && *(cur - d3) == *cur) - { - distances[0] = maxLen = 3; - distances[1] = d3 - 1; - offset = 2; - d2 = d3; - } - - if (d2 != d4 && d4 < p->cyclicBufferSize - && *(cur - d4) == *cur - && *(cur - d4 + 3) == *(cur + 3)) - { - maxLen = 4; - distances[(size_t)offset + 1] = d4 - 1; - offset += 2; - d2 = d4; - } - - if (offset != 0) - { - UPDATE_maxLen - distances[(size_t)offset - 2] = maxLen; - if (maxLen == lenLimit) - { - SkipMatchesSpec(lenLimit, curMatch, MF_PARAMS(p)); - MOVE_POS_RET; - } - } - - if (maxLen < 4) - maxLen = 4; - - GET_MATCHES_FOOTER(offset, maxLen) -} -*/ - -static UInt32 Hc4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) -{ - UInt32 h2, h3, d2, d3, pos; - unsigned maxLen, offset; - UInt32 *hash; - GET_MATCHES_HEADER(4) - - HASH4_CALC; - - hash = p->hash; - pos = p->pos; - - d2 = pos - hash [h2]; - d3 = pos - (hash + kFix3HashSize)[h3]; - curMatch = (hash + kFix4HashSize)[hv]; - - hash [h2] = pos; - (hash + kFix3HashSize)[h3] = pos; - (hash + kFix4HashSize)[hv] = pos; - - maxLen = 0; - offset = 0; - - if (d2 < p->cyclicBufferSize && *(cur - d2) == *cur) - { - maxLen = 2; - distances[0] = 2; - distances[1] = d2 - 1; - offset = 2; - } - - if (d2 != d3 && d3 < p->cyclicBufferSize && *(cur - d3) == *cur) - { - maxLen = 3; - distances[(size_t)offset + 1] = d3 - 1; - offset += 2; - d2 = d3; - } - - if (offset != 0) - { - UPDATE_maxLen - distances[(size_t)offset - 2] = (UInt32)maxLen; - if (maxLen == lenLimit) - { - p->son[p->cyclicBufferPos] = curMatch; - MOVE_POS_RET; - } - } - - if (maxLen < 3) - maxLen = 3; - - offset = (unsigned)(Hc_GetMatchesSpec(lenLimit, curMatch, MF_PARAMS(p), - distances + offset, maxLen) - (distances)); - MOVE_POS_RET -} - -/* -static UInt32 Hc5_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) -{ - UInt32 h2, h3, h4, d2, d3, d4, maxLen, offset, pos - UInt32 *hash; - GET_MATCHES_HEADER(5) - - HASH5_CALC; - - hash = p->hash; - pos = p->pos; - - d2 = pos - hash [h2]; - d3 = pos - (hash + kFix3HashSize)[h3]; - d4 = pos - (hash + kFix4HashSize)[h4]; - - curMatch = (hash + kFix5HashSize)[hv]; - - hash [h2] = pos; - (hash + kFix3HashSize)[h3] = pos; - (hash + kFix4HashSize)[h4] = pos; - (hash + kFix5HashSize)[hv] = pos; - - maxLen = 0; - offset = 0; - - if (d2 < p->cyclicBufferSize && *(cur - d2) == *cur) - { - distances[0] = maxLen = 2; - distances[1] = d2 - 1; - offset = 2; - if (*(cur - d2 + 2) == cur[2]) - distances[0] = maxLen = 3; - else if (d3 < p->cyclicBufferSize && *(cur - d3) == *cur) - { - distances[2] = maxLen = 3; - distances[3] = d3 - 1; - offset = 4; - d2 = d3; - } - } - else if (d3 < p->cyclicBufferSize && *(cur - d3) == *cur) - { - distances[0] = maxLen = 3; - distances[1] = d3 - 1; - offset = 2; - d2 = d3; - } - - if (d2 != d4 && d4 < p->cyclicBufferSize - && *(cur - d4) == *cur - && *(cur - d4 + 3) == *(cur + 3)) - { - maxLen = 4; - distances[(size_t)offset + 1] = d4 - 1; - offset += 2; - d2 = d4; - } - - if (offset != 0) - { - UPDATE_maxLen - distances[(size_t)offset - 2] = maxLen; - if (maxLen == lenLimit) - { - p->son[p->cyclicBufferPos] = curMatch; - MOVE_POS_RET; - } - } - - if (maxLen < 4) - maxLen = 4; - - offset = (UInt32)(Hc_GetMatchesSpec(lenLimit, curMatch, MF_PARAMS(p), - distances + offset, maxLen) - (distances)); - MOVE_POS_RET -} -*/ - -UInt32 Hc3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) -{ - unsigned offset; - GET_MATCHES_HEADER(3) - HASH_ZIP_CALC; - curMatch = p->hash[hv]; - p->hash[hv] = p->pos; - offset = (unsigned)(Hc_GetMatchesSpec(lenLimit, curMatch, MF_PARAMS(p), - distances, 2) - (distances)); - MOVE_POS_RET -} - -static void Bt2_MatchFinder_Skip(CMatchFinder *p, UInt32 num) -{ - do - { - SKIP_HEADER(2) - HASH2_CALC; - curMatch = p->hash[hv]; - p->hash[hv] = p->pos; - SKIP_FOOTER - } - while (--num != 0); -} - -void Bt3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num) -{ - do - { - SKIP_HEADER(3) - HASH_ZIP_CALC; - curMatch = p->hash[hv]; - p->hash[hv] = p->pos; - SKIP_FOOTER - } - while (--num != 0); -} - -static void Bt3_MatchFinder_Skip(CMatchFinder *p, UInt32 num) -{ - do - { - UInt32 h2; - UInt32 *hash; - SKIP_HEADER(3) - HASH3_CALC; - hash = p->hash; - curMatch = (hash + kFix3HashSize)[hv]; - hash[h2] = - (hash + kFix3HashSize)[hv] = p->pos; - SKIP_FOOTER - } - while (--num != 0); -} - -static void Bt4_MatchFinder_Skip(CMatchFinder *p, UInt32 num) -{ - do - { - UInt32 h2, h3; - UInt32 *hash; - SKIP_HEADER(4) - HASH4_CALC; - hash = p->hash; - curMatch = (hash + kFix4HashSize)[hv]; - hash [h2] = - (hash + kFix3HashSize)[h3] = - (hash + kFix4HashSize)[hv] = p->pos; - SKIP_FOOTER - } - while (--num != 0); -} - -/* -static void Bt5_MatchFinder_Skip(CMatchFinder *p, UInt32 num) -{ - do - { - UInt32 h2, h3, h4; - UInt32 *hash; - SKIP_HEADER(5) - HASH5_CALC; - hash = p->hash; - curMatch = (hash + kFix5HashSize)[hv]; - hash [h2] = - (hash + kFix3HashSize)[h3] = - (hash + kFix4HashSize)[h4] = - (hash + kFix5HashSize)[hv] = p->pos; - SKIP_FOOTER - } - while (--num != 0); -} -*/ - -static void Hc4_MatchFinder_Skip(CMatchFinder *p, UInt32 num) -{ - do - { - UInt32 h2, h3; - UInt32 *hash; - SKIP_HEADER(4) - HASH4_CALC; - hash = p->hash; - curMatch = (hash + kFix4HashSize)[hv]; - hash [h2] = - (hash + kFix3HashSize)[h3] = - (hash + kFix4HashSize)[hv] = p->pos; - p->son[p->cyclicBufferPos] = curMatch; - MOVE_POS - } - while (--num != 0); -} - -/* -static void Hc5_MatchFinder_Skip(CMatchFinder *p, UInt32 num) -{ - do - { - UInt32 h2, h3, h4; - UInt32 *hash; - SKIP_HEADER(5) - HASH5_CALC; - hash = p->hash; - curMatch = hash + kFix5HashSize)[hv]; - hash [h2] = - (hash + kFix3HashSize)[h3] = - (hash + kFix4HashSize)[h4] = - (hash + kFix5HashSize)[hv] = p->pos; - p->son[p->cyclicBufferPos] = curMatch; - MOVE_POS - } - while (--num != 0); -} -*/ - -void Hc3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num) -{ - do - { - SKIP_HEADER(3) - HASH_ZIP_CALC; - curMatch = p->hash[hv]; - p->hash[hv] = p->pos; - p->son[p->cyclicBufferPos] = curMatch; - MOVE_POS - } - while (--num != 0); -} - -void MatchFinder_CreateVTable(CMatchFinder *p, IMatchFinder *vTable) -{ - vTable->Init = (Mf_Init_Func)MatchFinder_Init; - vTable->GetNumAvailableBytes = (Mf_GetNumAvailableBytes_Func)MatchFinder_GetNumAvailableBytes; - vTable->GetPointerToCurrentPos = (Mf_GetPointerToCurrentPos_Func)MatchFinder_GetPointerToCurrentPos; - if (!p->btMode) - { - /* if (p->numHashBytes <= 4) */ - { - vTable->GetMatches = (Mf_GetMatches_Func)Hc4_MatchFinder_GetMatches; - vTable->Skip = (Mf_Skip_Func)Hc4_MatchFinder_Skip; - } - /* - else - { - vTable->GetMatches = (Mf_GetMatches_Func)Hc5_MatchFinder_GetMatches; - vTable->Skip = (Mf_Skip_Func)Hc5_MatchFinder_Skip; - } - */ - } - else if (p->numHashBytes == 2) - { - vTable->GetMatches = (Mf_GetMatches_Func)Bt2_MatchFinder_GetMatches; - vTable->Skip = (Mf_Skip_Func)Bt2_MatchFinder_Skip; - } - else if (p->numHashBytes == 3) - { - vTable->GetMatches = (Mf_GetMatches_Func)Bt3_MatchFinder_GetMatches; - vTable->Skip = (Mf_Skip_Func)Bt3_MatchFinder_Skip; - } - else /* if (p->numHashBytes == 4) */ - { - vTable->GetMatches = (Mf_GetMatches_Func)Bt4_MatchFinder_GetMatches; - vTable->Skip = (Mf_Skip_Func)Bt4_MatchFinder_Skip; - } - /* - else - { - vTable->GetMatches = (Mf_GetMatches_Func)Bt5_MatchFinder_GetMatches; - vTable->Skip = (Mf_Skip_Func)Bt5_MatchFinder_Skip; - } - */ -} diff --git a/gframe/lzma/LzFind.h b/gframe/lzma/LzFind.h deleted file mode 100644 index 42c13be15..000000000 --- a/gframe/lzma/LzFind.h +++ /dev/null @@ -1,121 +0,0 @@ -/* LzFind.h -- Match finder for LZ algorithms -2017-06-10 : Igor Pavlov : Public domain */ - -#ifndef __LZ_FIND_H -#define __LZ_FIND_H - -#include "7zTypes.h" - -EXTERN_C_BEGIN - -typedef UInt32 CLzRef; - -typedef struct _CMatchFinder -{ - Byte *buffer; - UInt32 pos; - UInt32 posLimit; - UInt32 streamPos; - UInt32 lenLimit; - - UInt32 cyclicBufferPos; - UInt32 cyclicBufferSize; /* it must be = (historySize + 1) */ - - Byte streamEndWasReached; - Byte btMode; - Byte bigHash; - Byte directInput; - - UInt32 matchMaxLen; - CLzRef *hash; - CLzRef *son; - UInt32 hashMask; - UInt32 cutValue; - - Byte *bufferBase; - ISeqInStream *stream; - - UInt32 blockSize; - UInt32 keepSizeBefore; - UInt32 keepSizeAfter; - - UInt32 numHashBytes; - size_t directInputRem; - UInt32 historySize; - UInt32 fixedHashSize; - UInt32 hashSizeSum; - SRes result; - UInt32 crc[256]; - size_t numRefs; - - UInt64 expectedDataSize; -} CMatchFinder; - -#define Inline_MatchFinder_GetPointerToCurrentPos(p) ((p)->buffer) - -#define Inline_MatchFinder_GetNumAvailableBytes(p) ((p)->streamPos - (p)->pos) - -#define Inline_MatchFinder_IsFinishedOK(p) \ - ((p)->streamEndWasReached \ - && (p)->streamPos == (p)->pos \ - && (!(p)->directInput || (p)->directInputRem == 0)) - -int MatchFinder_NeedMove(CMatchFinder *p); -Byte *MatchFinder_GetPointerToCurrentPos(CMatchFinder *p); -void MatchFinder_MoveBlock(CMatchFinder *p); -void MatchFinder_ReadIfRequired(CMatchFinder *p); - -void MatchFinder_Construct(CMatchFinder *p); - -/* Conditions: - historySize <= 3 GB - keepAddBufferBefore + matchMaxLen + keepAddBufferAfter < 511MB -*/ -int MatchFinder_Create(CMatchFinder *p, UInt32 historySize, - UInt32 keepAddBufferBefore, UInt32 matchMaxLen, UInt32 keepAddBufferAfter, - ISzAllocPtr alloc); -void MatchFinder_Free(CMatchFinder *p, ISzAllocPtr alloc); -void MatchFinder_Normalize3(UInt32 subValue, CLzRef *items, size_t numItems); -void MatchFinder_ReduceOffsets(CMatchFinder *p, UInt32 subValue); - -UInt32 * GetMatchesSpec1(UInt32 lenLimit, UInt32 curMatch, UInt32 pos, const Byte *buffer, CLzRef *son, - UInt32 _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 _cutValue, - UInt32 *distances, UInt32 maxLen); - -/* -Conditions: - Mf_GetNumAvailableBytes_Func must be called before each Mf_GetMatchLen_Func. - Mf_GetPointerToCurrentPos_Func's result must be used only before any other function -*/ - -typedef void (*Mf_Init_Func)(void *object); -typedef UInt32 (*Mf_GetNumAvailableBytes_Func)(void *object); -typedef const Byte * (*Mf_GetPointerToCurrentPos_Func)(void *object); -typedef UInt32 (*Mf_GetMatches_Func)(void *object, UInt32 *distances); -typedef void (*Mf_Skip_Func)(void *object, UInt32); - -typedef struct _IMatchFinder -{ - Mf_Init_Func Init; - Mf_GetNumAvailableBytes_Func GetNumAvailableBytes; - Mf_GetPointerToCurrentPos_Func GetPointerToCurrentPos; - Mf_GetMatches_Func GetMatches; - Mf_Skip_Func Skip; -} IMatchFinder; - -void MatchFinder_CreateVTable(CMatchFinder *p, IMatchFinder *vTable); - -void MatchFinder_Init_LowHash(CMatchFinder *p); -void MatchFinder_Init_HighHash(CMatchFinder *p); -void MatchFinder_Init_3(CMatchFinder *p, int readData); -void MatchFinder_Init(CMatchFinder *p); - -UInt32 Bt3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances); -UInt32 Hc3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances); - -void Bt3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num); -void Hc3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num); - -EXTERN_C_END - -#endif diff --git a/gframe/lzma/LzHash.h b/gframe/lzma/LzHash.h deleted file mode 100644 index e7c942303..000000000 --- a/gframe/lzma/LzHash.h +++ /dev/null @@ -1,57 +0,0 @@ -/* LzHash.h -- HASH functions for LZ algorithms -2015-04-12 : Igor Pavlov : Public domain */ - -#ifndef __LZ_HASH_H -#define __LZ_HASH_H - -#define kHash2Size (1 << 10) -#define kHash3Size (1 << 16) -#define kHash4Size (1 << 20) - -#define kFix3HashSize (kHash2Size) -#define kFix4HashSize (kHash2Size + kHash3Size) -#define kFix5HashSize (kHash2Size + kHash3Size + kHash4Size) - -#define HASH2_CALC hv = cur[0] | ((UInt32)cur[1] << 8); - -#define HASH3_CALC { \ - UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ - h2 = temp & (kHash2Size - 1); \ - hv = (temp ^ ((UInt32)cur[2] << 8)) & p->hashMask; } - -#define HASH4_CALC { \ - UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ - h2 = temp & (kHash2Size - 1); \ - temp ^= ((UInt32)cur[2] << 8); \ - h3 = temp & (kHash3Size - 1); \ - hv = (temp ^ (p->crc[cur[3]] << 5)) & p->hashMask; } - -#define HASH5_CALC { \ - UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ - h2 = temp & (kHash2Size - 1); \ - temp ^= ((UInt32)cur[2] << 8); \ - h3 = temp & (kHash3Size - 1); \ - temp ^= (p->crc[cur[3]] << 5); \ - h4 = temp & (kHash4Size - 1); \ - hv = (temp ^ (p->crc[cur[4]] << 3)) & p->hashMask; } - -/* #define HASH_ZIP_CALC hv = ((cur[0] | ((UInt32)cur[1] << 8)) ^ p->crc[cur[2]]) & 0xFFFF; */ -#define HASH_ZIP_CALC hv = ((cur[2] | ((UInt32)cur[0] << 8)) ^ p->crc[cur[1]]) & 0xFFFF; - - -#define MT_HASH2_CALC \ - h2 = (p->crc[cur[0]] ^ cur[1]) & (kHash2Size - 1); - -#define MT_HASH3_CALC { \ - UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ - h2 = temp & (kHash2Size - 1); \ - h3 = (temp ^ ((UInt32)cur[2] << 8)) & (kHash3Size - 1); } - -#define MT_HASH4_CALC { \ - UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ - h2 = temp & (kHash2Size - 1); \ - temp ^= ((UInt32)cur[2] << 8); \ - h3 = temp & (kHash3Size - 1); \ - h4 = (temp ^ (p->crc[cur[3]] << 5)) & (kHash4Size - 1); } - -#endif diff --git a/gframe/lzma/LzmaDec.c b/gframe/lzma/LzmaDec.c deleted file mode 100644 index ba3e1dd50..000000000 --- a/gframe/lzma/LzmaDec.c +++ /dev/null @@ -1,1185 +0,0 @@ -/* LzmaDec.c -- LZMA Decoder -2018-07-04 : Igor Pavlov : Public domain */ - -#include "Precomp.h" - -#include - -/* #include "CpuArch.h" */ -#include "LzmaDec.h" - -#define kNumTopBits 24 -#define kTopValue ((UInt32)1 << kNumTopBits) - -#define kNumBitModelTotalBits 11 -#define kBitModelTotal (1 << kNumBitModelTotalBits) -#define kNumMoveBits 5 - -#define RC_INIT_SIZE 5 - -#define NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | (*buf++); } - -#define IF_BIT_0(p) ttt = *(p); NORMALIZE; bound = (range >> kNumBitModelTotalBits) * (UInt32)ttt; if (code < bound) -#define UPDATE_0(p) range = bound; *(p) = (CLzmaProb)(ttt + ((kBitModelTotal - ttt) >> kNumMoveBits)); -#define UPDATE_1(p) range -= bound; code -= bound; *(p) = (CLzmaProb)(ttt - (ttt >> kNumMoveBits)); -#define GET_BIT2(p, i, A0, A1) IF_BIT_0(p) \ - { UPDATE_0(p); i = (i + i); A0; } else \ - { UPDATE_1(p); i = (i + i) + 1; A1; } - -#define TREE_GET_BIT(probs, i) { GET_BIT2(probs + i, i, ;, ;); } - -#define REV_BIT(p, i, A0, A1) IF_BIT_0(p + i) \ - { UPDATE_0(p + i); A0; } else \ - { UPDATE_1(p + i); A1; } -#define REV_BIT_VAR( p, i, m) REV_BIT(p, i, i += m; m += m, m += m; i += m; ) -#define REV_BIT_CONST(p, i, m) REV_BIT(p, i, i += m; , i += m * 2; ) -#define REV_BIT_LAST( p, i, m) REV_BIT(p, i, i -= m , ; ) - -#define TREE_DECODE(probs, limit, i) \ - { i = 1; do { TREE_GET_BIT(probs, i); } while (i < limit); i -= limit; } - -/* #define _LZMA_SIZE_OPT */ - -#ifdef _LZMA_SIZE_OPT -#define TREE_6_DECODE(probs, i) TREE_DECODE(probs, (1 << 6), i) -#else -#define TREE_6_DECODE(probs, i) \ - { i = 1; \ - TREE_GET_BIT(probs, i); \ - TREE_GET_BIT(probs, i); \ - TREE_GET_BIT(probs, i); \ - TREE_GET_BIT(probs, i); \ - TREE_GET_BIT(probs, i); \ - TREE_GET_BIT(probs, i); \ - i -= 0x40; } -#endif - -#define NORMAL_LITER_DEC TREE_GET_BIT(prob, symbol) -#define MATCHED_LITER_DEC \ - matchByte += matchByte; \ - bit = offs; \ - offs &= matchByte; \ - probLit = prob + (offs + bit + symbol); \ - GET_BIT2(probLit, symbol, offs ^= bit; , ;) - - - -#define NORMALIZE_CHECK if (range < kTopValue) { if (buf >= bufLimit) return DUMMY_ERROR; range <<= 8; code = (code << 8) | (*buf++); } - -#define IF_BIT_0_CHECK(p) ttt = *(p); NORMALIZE_CHECK; bound = (range >> kNumBitModelTotalBits) * (UInt32)ttt; if (code < bound) -#define UPDATE_0_CHECK range = bound; -#define UPDATE_1_CHECK range -= bound; code -= bound; -#define GET_BIT2_CHECK(p, i, A0, A1) IF_BIT_0_CHECK(p) \ - { UPDATE_0_CHECK; i = (i + i); A0; } else \ - { UPDATE_1_CHECK; i = (i + i) + 1; A1; } -#define GET_BIT_CHECK(p, i) GET_BIT2_CHECK(p, i, ; , ;) -#define TREE_DECODE_CHECK(probs, limit, i) \ - { i = 1; do { GET_BIT_CHECK(probs + i, i) } while (i < limit); i -= limit; } - - -#define REV_BIT_CHECK(p, i, m) IF_BIT_0_CHECK(p + i) \ - { UPDATE_0_CHECK; i += m; m += m; } else \ - { UPDATE_1_CHECK; m += m; i += m; } - - -#define kNumPosBitsMax 4 -#define kNumPosStatesMax (1 << kNumPosBitsMax) - -#define kLenNumLowBits 3 -#define kLenNumLowSymbols (1 << kLenNumLowBits) -#define kLenNumHighBits 8 -#define kLenNumHighSymbols (1 << kLenNumHighBits) - -#define LenLow 0 -#define LenHigh (LenLow + 2 * (kNumPosStatesMax << kLenNumLowBits)) -#define kNumLenProbs (LenHigh + kLenNumHighSymbols) - -#define LenChoice LenLow -#define LenChoice2 (LenLow + (1 << kLenNumLowBits)) - -#define kNumStates 12 -#define kNumStates2 16 -#define kNumLitStates 7 - -#define kStartPosModelIndex 4 -#define kEndPosModelIndex 14 -#define kNumFullDistances (1 << (kEndPosModelIndex >> 1)) - -#define kNumPosSlotBits 6 -#define kNumLenToPosStates 4 - -#define kNumAlignBits 4 -#define kAlignTableSize (1 << kNumAlignBits) - -#define kMatchMinLen 2 -#define kMatchSpecLenStart (kMatchMinLen + kLenNumLowSymbols * 2 + kLenNumHighSymbols) - -/* External ASM code needs same CLzmaProb array layout. So don't change it. */ - -/* (probs_1664) is faster and better for code size at some platforms */ -/* -#ifdef MY_CPU_X86_OR_AMD64 -*/ -#define kStartOffset 1664 -#define GET_PROBS p->probs_1664 -/* -#define GET_PROBS p->probs + kStartOffset -#else -#define kStartOffset 0 -#define GET_PROBS p->probs -#endif -*/ - -#define SpecPos (-kStartOffset) -#define IsRep0Long (SpecPos + kNumFullDistances) -#define RepLenCoder (IsRep0Long + (kNumStates2 << kNumPosBitsMax)) -#define LenCoder (RepLenCoder + kNumLenProbs) -#define IsMatch (LenCoder + kNumLenProbs) -#define Align (IsMatch + (kNumStates2 << kNumPosBitsMax)) -#define IsRep (Align + kAlignTableSize) -#define IsRepG0 (IsRep + kNumStates) -#define IsRepG1 (IsRepG0 + kNumStates) -#define IsRepG2 (IsRepG1 + kNumStates) -#define PosSlot (IsRepG2 + kNumStates) -#define Literal (PosSlot + (kNumLenToPosStates << kNumPosSlotBits)) -#define NUM_BASE_PROBS (Literal + kStartOffset) - -#if Align != 0 && kStartOffset != 0 - #error Stop_Compiling_Bad_LZMA_kAlign -#endif - -#if NUM_BASE_PROBS != 1984 - #error Stop_Compiling_Bad_LZMA_PROBS -#endif - - -#define LZMA_LIT_SIZE 0x300 - -#define LzmaProps_GetNumProbs(p) (NUM_BASE_PROBS + ((UInt32)LZMA_LIT_SIZE << ((p)->lc + (p)->lp))) - - -#define CALC_POS_STATE(processedPos, pbMask) (((processedPos) & (pbMask)) << 4) -#define COMBINED_PS_STATE (posState + state) -#define GET_LEN_STATE (posState) - -#define LZMA_DIC_MIN (1 << 12) - -/* -p->remainLen : shows status of LZMA decoder: - < kMatchSpecLenStart : normal remain - = kMatchSpecLenStart : finished - = kMatchSpecLenStart + 1 : need init range coder - = kMatchSpecLenStart + 2 : need init range coder and state -*/ - -/* ---------- LZMA_DECODE_REAL ---------- */ -/* -LzmaDec_DecodeReal_3() can be implemented in external ASM file. -3 - is the code compatibility version of that function for check at link time. -*/ - -#define LZMA_DECODE_REAL LzmaDec_DecodeReal_3 - -/* -LZMA_DECODE_REAL() -In: - RangeCoder is normalized - if (p->dicPos == limit) - { - LzmaDec_TryDummy() was called before to exclude LITERAL and MATCH-REP cases. - So first symbol can be only MATCH-NON-REP. And if that MATCH-NON-REP symbol - is not END_OF_PAYALOAD_MARKER, then function returns error code. - } - -Processing: - first LZMA symbol will be decoded in any case - All checks for limits are at the end of main loop, - It will decode new LZMA-symbols while (p->buf < bufLimit && dicPos < limit), - RangeCoder is still without last normalization when (p->buf < bufLimit) is being checked. - -Out: - RangeCoder is normalized - Result: - SZ_OK - OK - SZ_ERROR_DATA - Error - p->remainLen: - < kMatchSpecLenStart : normal remain - = kMatchSpecLenStart : finished -*/ - - -#ifdef _LZMA_DEC_OPT - -int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit); - -#else - -static -int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit) -{ - CLzmaProb *probs = GET_PROBS; - unsigned state = (unsigned)p->state; - UInt32 rep0 = p->reps[0], rep1 = p->reps[1], rep2 = p->reps[2], rep3 = p->reps[3]; - unsigned pbMask = ((unsigned)1 << (p->prop.pb)) - 1; - unsigned lc = p->prop.lc; - unsigned lpMask = ((unsigned)0x100 << p->prop.lp) - ((unsigned)0x100 >> lc); - - Byte *dic = p->dic; - SizeT dicBufSize = p->dicBufSize; - SizeT dicPos = p->dicPos; - - UInt32 processedPos = p->processedPos; - UInt32 checkDicSize = p->checkDicSize; - unsigned len = 0; - - const Byte *buf = p->buf; - UInt32 range = p->range; - UInt32 code = p->code; - - do - { - CLzmaProb *prob; - UInt32 bound; - unsigned ttt; - unsigned posState = CALC_POS_STATE(processedPos, pbMask); - - prob = probs + IsMatch + COMBINED_PS_STATE; - IF_BIT_0(prob) - { - unsigned symbol; - UPDATE_0(prob); - prob = probs + Literal; - if (processedPos != 0 || checkDicSize != 0) - prob += (UInt32)3 * ((((processedPos << 8) + dic[(dicPos == 0 ? dicBufSize : dicPos) - 1]) & lpMask) << lc); - processedPos++; - - if (state < kNumLitStates) - { - state -= (state < 4) ? state : 3; - symbol = 1; - #ifdef _LZMA_SIZE_OPT - do { NORMAL_LITER_DEC } while (symbol < 0x100); - #else - NORMAL_LITER_DEC - NORMAL_LITER_DEC - NORMAL_LITER_DEC - NORMAL_LITER_DEC - NORMAL_LITER_DEC - NORMAL_LITER_DEC - NORMAL_LITER_DEC - NORMAL_LITER_DEC - #endif - } - else - { - unsigned matchByte = dic[dicPos - rep0 + (dicPos < rep0 ? dicBufSize : 0)]; - unsigned offs = 0x100; - state -= (state < 10) ? 3 : 6; - symbol = 1; - #ifdef _LZMA_SIZE_OPT - do - { - unsigned bit; - CLzmaProb *probLit; - MATCHED_LITER_DEC - } - while (symbol < 0x100); - #else - { - unsigned bit; - CLzmaProb *probLit; - MATCHED_LITER_DEC - MATCHED_LITER_DEC - MATCHED_LITER_DEC - MATCHED_LITER_DEC - MATCHED_LITER_DEC - MATCHED_LITER_DEC - MATCHED_LITER_DEC - MATCHED_LITER_DEC - } - #endif - } - - dic[dicPos++] = (Byte)symbol; - continue; - } - - { - UPDATE_1(prob); - prob = probs + IsRep + state; - IF_BIT_0(prob) - { - UPDATE_0(prob); - state += kNumStates; - prob = probs + LenCoder; - } - else - { - UPDATE_1(prob); - /* - // that case was checked before with kBadRepCode - if (checkDicSize == 0 && processedPos == 0) - return SZ_ERROR_DATA; - */ - prob = probs + IsRepG0 + state; - IF_BIT_0(prob) - { - UPDATE_0(prob); - prob = probs + IsRep0Long + COMBINED_PS_STATE; - IF_BIT_0(prob) - { - UPDATE_0(prob); - dic[dicPos] = dic[dicPos - rep0 + (dicPos < rep0 ? dicBufSize : 0)]; - dicPos++; - processedPos++; - state = state < kNumLitStates ? 9 : 11; - continue; - } - UPDATE_1(prob); - } - else - { - UInt32 distance; - UPDATE_1(prob); - prob = probs + IsRepG1 + state; - IF_BIT_0(prob) - { - UPDATE_0(prob); - distance = rep1; - } - else - { - UPDATE_1(prob); - prob = probs + IsRepG2 + state; - IF_BIT_0(prob) - { - UPDATE_0(prob); - distance = rep2; - } - else - { - UPDATE_1(prob); - distance = rep3; - rep3 = rep2; - } - rep2 = rep1; - } - rep1 = rep0; - rep0 = distance; - } - state = state < kNumLitStates ? 8 : 11; - prob = probs + RepLenCoder; - } - - #ifdef _LZMA_SIZE_OPT - { - unsigned lim, offset; - CLzmaProb *probLen = prob + LenChoice; - IF_BIT_0(probLen) - { - UPDATE_0(probLen); - probLen = prob + LenLow + GET_LEN_STATE; - offset = 0; - lim = (1 << kLenNumLowBits); - } - else - { - UPDATE_1(probLen); - probLen = prob + LenChoice2; - IF_BIT_0(probLen) - { - UPDATE_0(probLen); - probLen = prob + LenLow + GET_LEN_STATE + (1 << kLenNumLowBits); - offset = kLenNumLowSymbols; - lim = (1 << kLenNumLowBits); - } - else - { - UPDATE_1(probLen); - probLen = prob + LenHigh; - offset = kLenNumLowSymbols * 2; - lim = (1 << kLenNumHighBits); - } - } - TREE_DECODE(probLen, lim, len); - len += offset; - } - #else - { - CLzmaProb *probLen = prob + LenChoice; - IF_BIT_0(probLen) - { - UPDATE_0(probLen); - probLen = prob + LenLow + GET_LEN_STATE; - len = 1; - TREE_GET_BIT(probLen, len); - TREE_GET_BIT(probLen, len); - TREE_GET_BIT(probLen, len); - len -= 8; - } - else - { - UPDATE_1(probLen); - probLen = prob + LenChoice2; - IF_BIT_0(probLen) - { - UPDATE_0(probLen); - probLen = prob + LenLow + GET_LEN_STATE + (1 << kLenNumLowBits); - len = 1; - TREE_GET_BIT(probLen, len); - TREE_GET_BIT(probLen, len); - TREE_GET_BIT(probLen, len); - } - else - { - UPDATE_1(probLen); - probLen = prob + LenHigh; - TREE_DECODE(probLen, (1 << kLenNumHighBits), len); - len += kLenNumLowSymbols * 2; - } - } - } - #endif - - if (state >= kNumStates) - { - UInt32 distance; - prob = probs + PosSlot + - ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << kNumPosSlotBits); - TREE_6_DECODE(prob, distance); - if (distance >= kStartPosModelIndex) - { - unsigned posSlot = (unsigned)distance; - unsigned numDirectBits = (unsigned)(((distance >> 1) - 1)); - distance = (2 | (distance & 1)); - if (posSlot < kEndPosModelIndex) - { - distance <<= numDirectBits; - prob = probs + SpecPos; - { - UInt32 m = 1; - distance++; - do - { - REV_BIT_VAR(prob, distance, m); - } - while (--numDirectBits); - distance -= m; - } - } - else - { - numDirectBits -= kNumAlignBits; - do - { - NORMALIZE - range >>= 1; - - { - UInt32 t; - code -= range; - t = (0 - ((UInt32)code >> 31)); /* (UInt32)((Int32)code >> 31) */ - distance = (distance << 1) + (t + 1); - code += range & t; - } - /* - distance <<= 1; - if (code >= range) - { - code -= range; - distance |= 1; - } - */ - } - while (--numDirectBits); - prob = probs + Align; - distance <<= kNumAlignBits; - { - unsigned i = 1; - REV_BIT_CONST(prob, i, 1); - REV_BIT_CONST(prob, i, 2); - REV_BIT_CONST(prob, i, 4); - REV_BIT_LAST (prob, i, 8); - distance |= i; - } - if (distance == (UInt32)0xFFFFFFFF) - { - len = kMatchSpecLenStart; - state -= kNumStates; - break; - } - } - } - - rep3 = rep2; - rep2 = rep1; - rep1 = rep0; - rep0 = distance + 1; - state = (state < kNumStates + kNumLitStates) ? kNumLitStates : kNumLitStates + 3; - if (distance >= (checkDicSize == 0 ? processedPos: checkDicSize)) - { - p->dicPos = dicPos; - return SZ_ERROR_DATA; - } - } - - len += kMatchMinLen; - - { - SizeT rem; - unsigned curLen; - SizeT pos; - - if ((rem = limit - dicPos) == 0) - { - p->dicPos = dicPos; - return SZ_ERROR_DATA; - } - - curLen = ((rem < len) ? (unsigned)rem : len); - pos = dicPos - rep0 + (dicPos < rep0 ? dicBufSize : 0); - - processedPos += (UInt32)curLen; - - len -= curLen; - if (curLen <= dicBufSize - pos) - { - Byte *dest = dic + dicPos; - ptrdiff_t src = (ptrdiff_t)pos - (ptrdiff_t)dicPos; - const Byte *lim = dest + curLen; - dicPos += (SizeT)curLen; - do - *(dest) = (Byte)*(dest + src); - while (++dest != lim); - } - else - { - do - { - dic[dicPos++] = dic[pos]; - if (++pos == dicBufSize) - pos = 0; - } - while (--curLen != 0); - } - } - } - } - while (dicPos < limit && buf < bufLimit); - - NORMALIZE; - - p->buf = buf; - p->range = range; - p->code = code; - p->remainLen = (UInt32)len; - p->dicPos = dicPos; - p->processedPos = processedPos; - p->reps[0] = rep0; - p->reps[1] = rep1; - p->reps[2] = rep2; - p->reps[3] = rep3; - p->state = (UInt32)state; - - return SZ_OK; -} -#endif - -static void MY_FAST_CALL LzmaDec_WriteRem(CLzmaDec *p, SizeT limit) -{ - if (p->remainLen != 0 && p->remainLen < kMatchSpecLenStart) - { - Byte *dic = p->dic; - SizeT dicPos = p->dicPos; - SizeT dicBufSize = p->dicBufSize; - unsigned len = (unsigned)p->remainLen; - SizeT rep0 = p->reps[0]; /* we use SizeT to avoid the BUG of VC14 for AMD64 */ - SizeT rem = limit - dicPos; - if (rem < len) - len = (unsigned)(rem); - - if (p->checkDicSize == 0 && p->prop.dicSize - p->processedPos <= len) - p->checkDicSize = p->prop.dicSize; - - p->processedPos += (UInt32)len; - p->remainLen -= (UInt32)len; - while (len != 0) - { - len--; - dic[dicPos] = dic[dicPos - rep0 + (dicPos < rep0 ? dicBufSize : 0)]; - dicPos++; - } - p->dicPos = dicPos; - } -} - - -#define kRange0 0xFFFFFFFF -#define kBound0 ((kRange0 >> kNumBitModelTotalBits) << (kNumBitModelTotalBits - 1)) -#define kBadRepCode (kBound0 + (((kRange0 - kBound0) >> kNumBitModelTotalBits) << (kNumBitModelTotalBits - 1))) -#if kBadRepCode != (0xC0000000 - 0x400) - #error Stop_Compiling_Bad_LZMA_Check -#endif - -static int MY_FAST_CALL LzmaDec_DecodeReal2(CLzmaDec *p, SizeT limit, const Byte *bufLimit) -{ - do - { - SizeT limit2 = limit; - if (p->checkDicSize == 0) - { - UInt32 rem = p->prop.dicSize - p->processedPos; - if (limit - p->dicPos > rem) - limit2 = p->dicPos + rem; - - if (p->processedPos == 0) - if (p->code >= kBadRepCode) - return SZ_ERROR_DATA; - } - - RINOK(LZMA_DECODE_REAL(p, limit2, bufLimit)); - - if (p->checkDicSize == 0 && p->processedPos >= p->prop.dicSize) - p->checkDicSize = p->prop.dicSize; - - LzmaDec_WriteRem(p, limit); - } - while (p->dicPos < limit && p->buf < bufLimit && p->remainLen < kMatchSpecLenStart); - - return 0; -} - -typedef enum -{ - DUMMY_ERROR, /* unexpected end of input stream */ - DUMMY_LIT, - DUMMY_MATCH, - DUMMY_REP -} ELzmaDummy; - -static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, SizeT inSize) -{ - UInt32 range = p->range; - UInt32 code = p->code; - const Byte *bufLimit = buf + inSize; - const CLzmaProb *probs = GET_PROBS; - unsigned state = (unsigned)p->state; - ELzmaDummy res; - - { - const CLzmaProb *prob; - UInt32 bound; - unsigned ttt; - unsigned posState = CALC_POS_STATE(p->processedPos, (1 << p->prop.pb) - 1); - - prob = probs + IsMatch + COMBINED_PS_STATE; - IF_BIT_0_CHECK(prob) - { - UPDATE_0_CHECK - - /* if (bufLimit - buf >= 7) return DUMMY_LIT; */ - - prob = probs + Literal; - if (p->checkDicSize != 0 || p->processedPos != 0) - prob += ((UInt32)LZMA_LIT_SIZE * - ((((p->processedPos) & ((1 << (p->prop.lp)) - 1)) << p->prop.lc) + - (p->dic[(p->dicPos == 0 ? p->dicBufSize : p->dicPos) - 1] >> (8 - p->prop.lc)))); - - if (state < kNumLitStates) - { - unsigned symbol = 1; - do { GET_BIT_CHECK(prob + symbol, symbol) } while (symbol < 0x100); - } - else - { - unsigned matchByte = p->dic[p->dicPos - p->reps[0] + - (p->dicPos < p->reps[0] ? p->dicBufSize : 0)]; - unsigned offs = 0x100; - unsigned symbol = 1; - do - { - unsigned bit; - const CLzmaProb *probLit; - matchByte += matchByte; - bit = offs; - offs &= matchByte; - probLit = prob + (offs + bit + symbol); - GET_BIT2_CHECK(probLit, symbol, offs ^= bit; , ; ) - } - while (symbol < 0x100); - } - res = DUMMY_LIT; - } - else - { - unsigned len; - UPDATE_1_CHECK; - - prob = probs + IsRep + state; - IF_BIT_0_CHECK(prob) - { - UPDATE_0_CHECK; - state = 0; - prob = probs + LenCoder; - res = DUMMY_MATCH; - } - else - { - UPDATE_1_CHECK; - res = DUMMY_REP; - prob = probs + IsRepG0 + state; - IF_BIT_0_CHECK(prob) - { - UPDATE_0_CHECK; - prob = probs + IsRep0Long + COMBINED_PS_STATE; - IF_BIT_0_CHECK(prob) - { - UPDATE_0_CHECK; - NORMALIZE_CHECK; - return DUMMY_REP; - } - else - { - UPDATE_1_CHECK; - } - } - else - { - UPDATE_1_CHECK; - prob = probs + IsRepG1 + state; - IF_BIT_0_CHECK(prob) - { - UPDATE_0_CHECK; - } - else - { - UPDATE_1_CHECK; - prob = probs + IsRepG2 + state; - IF_BIT_0_CHECK(prob) - { - UPDATE_0_CHECK; - } - else - { - UPDATE_1_CHECK; - } - } - } - state = kNumStates; - prob = probs + RepLenCoder; - } - { - unsigned limit, offset; - const CLzmaProb *probLen = prob + LenChoice; - IF_BIT_0_CHECK(probLen) - { - UPDATE_0_CHECK; - probLen = prob + LenLow + GET_LEN_STATE; - offset = 0; - limit = 1 << kLenNumLowBits; - } - else - { - UPDATE_1_CHECK; - probLen = prob + LenChoice2; - IF_BIT_0_CHECK(probLen) - { - UPDATE_0_CHECK; - probLen = prob + LenLow + GET_LEN_STATE + (1 << kLenNumLowBits); - offset = kLenNumLowSymbols; - limit = 1 << kLenNumLowBits; - } - else - { - UPDATE_1_CHECK; - probLen = prob + LenHigh; - offset = kLenNumLowSymbols * 2; - limit = 1 << kLenNumHighBits; - } - } - TREE_DECODE_CHECK(probLen, limit, len); - len += offset; - } - - if (state < 4) - { - unsigned posSlot; - prob = probs + PosSlot + - ((len < kNumLenToPosStates - 1 ? len : kNumLenToPosStates - 1) << - kNumPosSlotBits); - TREE_DECODE_CHECK(prob, 1 << kNumPosSlotBits, posSlot); - if (posSlot >= kStartPosModelIndex) - { - unsigned numDirectBits = ((posSlot >> 1) - 1); - - /* if (bufLimit - buf >= 8) return DUMMY_MATCH; */ - - if (posSlot < kEndPosModelIndex) - { - prob = probs + SpecPos + ((2 | (posSlot & 1)) << numDirectBits); - } - else - { - numDirectBits -= kNumAlignBits; - do - { - NORMALIZE_CHECK - range >>= 1; - code -= range & (((code - range) >> 31) - 1); - /* if (code >= range) code -= range; */ - } - while (--numDirectBits); - prob = probs + Align; - numDirectBits = kNumAlignBits; - } - { - unsigned i = 1; - unsigned m = 1; - do - { - REV_BIT_CHECK(prob, i, m); - } - while (--numDirectBits); - } - } - } - } - } - NORMALIZE_CHECK; - return res; -} - - -void LzmaDec_InitDicAndState(CLzmaDec *p, BoolInt initDic, BoolInt initState) -{ - p->remainLen = kMatchSpecLenStart + 1; - p->tempBufSize = 0; - - if (initDic) - { - p->processedPos = 0; - p->checkDicSize = 0; - p->remainLen = kMatchSpecLenStart + 2; - } - if (initState) - p->remainLen = kMatchSpecLenStart + 2; -} - -void LzmaDec_Init(CLzmaDec *p) -{ - p->dicPos = 0; - LzmaDec_InitDicAndState(p, True, True); -} - - -SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *srcLen, - ELzmaFinishMode finishMode, ELzmaStatus *status) -{ - SizeT inSize = *srcLen; - (*srcLen) = 0; - - *status = LZMA_STATUS_NOT_SPECIFIED; - - if (p->remainLen > kMatchSpecLenStart) - { - for (; inSize > 0 && p->tempBufSize < RC_INIT_SIZE; (*srcLen)++, inSize--) - p->tempBuf[p->tempBufSize++] = *src++; - if (p->tempBufSize != 0 && p->tempBuf[0] != 0) - return SZ_ERROR_DATA; - if (p->tempBufSize < RC_INIT_SIZE) - { - *status = LZMA_STATUS_NEEDS_MORE_INPUT; - return SZ_OK; - } - p->code = - ((UInt32)p->tempBuf[1] << 24) - | ((UInt32)p->tempBuf[2] << 16) - | ((UInt32)p->tempBuf[3] << 8) - | ((UInt32)p->tempBuf[4]); - p->range = 0xFFFFFFFF; - p->tempBufSize = 0; - - if (p->remainLen > kMatchSpecLenStart + 1) - { - SizeT numProbs = LzmaProps_GetNumProbs(&p->prop); - SizeT i; - CLzmaProb *probs = p->probs; - for (i = 0; i < numProbs; i++) - probs[i] = kBitModelTotal >> 1; - p->reps[0] = p->reps[1] = p->reps[2] = p->reps[3] = 1; - p->state = 0; - } - - p->remainLen = 0; - } - - LzmaDec_WriteRem(p, dicLimit); - - while (p->remainLen != kMatchSpecLenStart) - { - int checkEndMarkNow = 0; - - if (p->dicPos >= dicLimit) - { - if (p->remainLen == 0 && p->code == 0) - { - *status = LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK; - return SZ_OK; - } - if (finishMode == LZMA_FINISH_ANY) - { - *status = LZMA_STATUS_NOT_FINISHED; - return SZ_OK; - } - if (p->remainLen != 0) - { - *status = LZMA_STATUS_NOT_FINISHED; - return SZ_ERROR_DATA; - } - checkEndMarkNow = 1; - } - - if (p->tempBufSize == 0) - { - SizeT processed; - const Byte *bufLimit; - if (inSize < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) - { - int dummyRes = LzmaDec_TryDummy(p, src, inSize); - if (dummyRes == DUMMY_ERROR) - { - memcpy(p->tempBuf, src, inSize); - p->tempBufSize = (unsigned)inSize; - (*srcLen) += inSize; - *status = LZMA_STATUS_NEEDS_MORE_INPUT; - return SZ_OK; - } - if (checkEndMarkNow && dummyRes != DUMMY_MATCH) - { - *status = LZMA_STATUS_NOT_FINISHED; - return SZ_ERROR_DATA; - } - bufLimit = src; - } - else - bufLimit = src + inSize - LZMA_REQUIRED_INPUT_MAX; - p->buf = src; - if (LzmaDec_DecodeReal2(p, dicLimit, bufLimit) != 0) - return SZ_ERROR_DATA; - processed = (SizeT)(p->buf - src); - (*srcLen) += processed; - src += processed; - inSize -= processed; - } - else - { - unsigned rem = p->tempBufSize, lookAhead = 0; - while (rem < LZMA_REQUIRED_INPUT_MAX && lookAhead < inSize) - p->tempBuf[rem++] = src[lookAhead++]; - p->tempBufSize = rem; - if (rem < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) - { - int dummyRes = LzmaDec_TryDummy(p, p->tempBuf, (SizeT)rem); - if (dummyRes == DUMMY_ERROR) - { - (*srcLen) += (SizeT)lookAhead; - *status = LZMA_STATUS_NEEDS_MORE_INPUT; - return SZ_OK; - } - if (checkEndMarkNow && dummyRes != DUMMY_MATCH) - { - *status = LZMA_STATUS_NOT_FINISHED; - return SZ_ERROR_DATA; - } - } - p->buf = p->tempBuf; - if (LzmaDec_DecodeReal2(p, dicLimit, p->buf) != 0) - return SZ_ERROR_DATA; - - { - unsigned kkk = (unsigned)(p->buf - p->tempBuf); - if (rem < kkk) - return SZ_ERROR_FAIL; /* some internal error */ - rem -= kkk; - if (lookAhead < rem) - return SZ_ERROR_FAIL; /* some internal error */ - lookAhead -= rem; - } - (*srcLen) += (SizeT)lookAhead; - src += lookAhead; - inSize -= (SizeT)lookAhead; - p->tempBufSize = 0; - } - } - - if (p->code != 0) - return SZ_ERROR_DATA; - *status = LZMA_STATUS_FINISHED_WITH_MARK; - return SZ_OK; -} - - -SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status) -{ - SizeT outSize = *destLen; - SizeT inSize = *srcLen; - *srcLen = *destLen = 0; - for (;;) - { - SizeT inSizeCur = inSize, outSizeCur, dicPos; - ELzmaFinishMode curFinishMode; - SRes res; - if (p->dicPos == p->dicBufSize) - p->dicPos = 0; - dicPos = p->dicPos; - if (outSize > p->dicBufSize - dicPos) - { - outSizeCur = p->dicBufSize; - curFinishMode = LZMA_FINISH_ANY; - } - else - { - outSizeCur = dicPos + outSize; - curFinishMode = finishMode; - } - - res = LzmaDec_DecodeToDic(p, outSizeCur, src, &inSizeCur, curFinishMode, status); - src += inSizeCur; - inSize -= inSizeCur; - *srcLen += inSizeCur; - outSizeCur = p->dicPos - dicPos; - memcpy(dest, p->dic + dicPos, outSizeCur); - dest += outSizeCur; - outSize -= outSizeCur; - *destLen += outSizeCur; - if (res != 0) - return res; - if (outSizeCur == 0 || outSize == 0) - return SZ_OK; - } -} - -void LzmaDec_FreeProbs(CLzmaDec *p, ISzAllocPtr alloc) -{ - ISzAlloc_Free(alloc, p->probs); - p->probs = NULL; -} - -static void LzmaDec_FreeDict(CLzmaDec *p, ISzAllocPtr alloc) -{ - ISzAlloc_Free(alloc, p->dic); - p->dic = NULL; -} - -void LzmaDec_Free(CLzmaDec *p, ISzAllocPtr alloc) -{ - LzmaDec_FreeProbs(p, alloc); - LzmaDec_FreeDict(p, alloc); -} - -SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size) -{ - UInt32 dicSize; - Byte d; - - if (size < LZMA_PROPS_SIZE) - return SZ_ERROR_UNSUPPORTED; - else - dicSize = data[1] | ((UInt32)data[2] << 8) | ((UInt32)data[3] << 16) | ((UInt32)data[4] << 24); - - if (dicSize < LZMA_DIC_MIN) - dicSize = LZMA_DIC_MIN; - p->dicSize = dicSize; - - d = data[0]; - if (d >= (9 * 5 * 5)) - return SZ_ERROR_UNSUPPORTED; - - p->lc = (Byte)(d % 9); - d /= 9; - p->pb = (Byte)(d / 5); - p->lp = (Byte)(d % 5); - - return SZ_OK; -} - -static SRes LzmaDec_AllocateProbs2(CLzmaDec *p, const CLzmaProps *propNew, ISzAllocPtr alloc) -{ - UInt32 numProbs = LzmaProps_GetNumProbs(propNew); - if (!p->probs || numProbs != p->numProbs) - { - LzmaDec_FreeProbs(p, alloc); - p->probs = (CLzmaProb *)ISzAlloc_Alloc(alloc, numProbs * sizeof(CLzmaProb)); - if (!p->probs) - return SZ_ERROR_MEM; - p->probs_1664 = p->probs + 1664; - p->numProbs = numProbs; - } - return SZ_OK; -} - -SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAllocPtr alloc) -{ - CLzmaProps propNew; - RINOK(LzmaProps_Decode(&propNew, props, propsSize)); - RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); - p->prop = propNew; - return SZ_OK; -} - -SRes LzmaDec_Allocate(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAllocPtr alloc) -{ - CLzmaProps propNew; - SizeT dicBufSize; - RINOK(LzmaProps_Decode(&propNew, props, propsSize)); - RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); - - { - UInt32 dictSize = propNew.dicSize; - SizeT mask = ((UInt32)1 << 12) - 1; - if (dictSize >= ((UInt32)1 << 30)) mask = ((UInt32)1 << 22) - 1; - else if (dictSize >= ((UInt32)1 << 22)) mask = ((UInt32)1 << 20) - 1;; - dicBufSize = ((SizeT)dictSize + mask) & ~mask; - if (dicBufSize < dictSize) - dicBufSize = dictSize; - } - - if (!p->dic || dicBufSize != p->dicBufSize) - { - LzmaDec_FreeDict(p, alloc); - p->dic = (Byte *)ISzAlloc_Alloc(alloc, dicBufSize); - if (!p->dic) - { - LzmaDec_FreeProbs(p, alloc); - return SZ_ERROR_MEM; - } - } - p->dicBufSize = dicBufSize; - p->prop = propNew; - return SZ_OK; -} - -SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, - const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, - ELzmaStatus *status, ISzAllocPtr alloc) -{ - CLzmaDec p; - SRes res; - SizeT outSize = *destLen, inSize = *srcLen; - *destLen = *srcLen = 0; - *status = LZMA_STATUS_NOT_SPECIFIED; - if (inSize < RC_INIT_SIZE) - return SZ_ERROR_INPUT_EOF; - LzmaDec_Construct(&p); - RINOK(LzmaDec_AllocateProbs(&p, propData, propSize, alloc)); - p.dic = dest; - p.dicBufSize = outSize; - LzmaDec_Init(&p); - *srcLen = inSize; - res = LzmaDec_DecodeToDic(&p, outSize, src, srcLen, finishMode, status); - *destLen = p.dicPos; - if (res == SZ_OK && *status == LZMA_STATUS_NEEDS_MORE_INPUT) - res = SZ_ERROR_INPUT_EOF; - LzmaDec_FreeProbs(&p, alloc); - return res; -} diff --git a/gframe/lzma/LzmaDec.h b/gframe/lzma/LzmaDec.h deleted file mode 100644 index 1f0927ab1..000000000 --- a/gframe/lzma/LzmaDec.h +++ /dev/null @@ -1,234 +0,0 @@ -/* LzmaDec.h -- LZMA Decoder -2018-04-21 : Igor Pavlov : Public domain */ - -#ifndef __LZMA_DEC_H -#define __LZMA_DEC_H - -#include "7zTypes.h" - -EXTERN_C_BEGIN - -/* #define _LZMA_PROB32 */ -/* _LZMA_PROB32 can increase the speed on some CPUs, - but memory usage for CLzmaDec::probs will be doubled in that case */ - -typedef -#ifdef _LZMA_PROB32 - UInt32 -#else - UInt16 -#endif - CLzmaProb; - - -/* ---------- LZMA Properties ---------- */ - -#define LZMA_PROPS_SIZE 5 - -typedef struct _CLzmaProps -{ - Byte lc; - Byte lp; - Byte pb; - Byte _pad_; - UInt32 dicSize; -} CLzmaProps; - -/* LzmaProps_Decode - decodes properties -Returns: - SZ_OK - SZ_ERROR_UNSUPPORTED - Unsupported properties -*/ - -SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size); - - -/* ---------- LZMA Decoder state ---------- */ - -/* LZMA_REQUIRED_INPUT_MAX = number of required input bytes for worst case. - Num bits = log2((2^11 / 31) ^ 22) + 26 < 134 + 26 = 160; */ - -#define LZMA_REQUIRED_INPUT_MAX 20 - -typedef struct -{ - /* Don't change this structure. ASM code can use it. */ - CLzmaProps prop; - CLzmaProb *probs; - CLzmaProb *probs_1664; - Byte *dic; - SizeT dicBufSize; - SizeT dicPos; - const Byte *buf; - UInt32 range; - UInt32 code; - UInt32 processedPos; - UInt32 checkDicSize; - UInt32 reps[4]; - UInt32 state; - UInt32 remainLen; - - UInt32 numProbs; - unsigned tempBufSize; - Byte tempBuf[LZMA_REQUIRED_INPUT_MAX]; -} CLzmaDec; - -#define LzmaDec_Construct(p) { (p)->dic = NULL; (p)->probs = NULL; } - -void LzmaDec_Init(CLzmaDec *p); - -/* There are two types of LZMA streams: - - Stream with end mark. That end mark adds about 6 bytes to compressed size. - - Stream without end mark. You must know exact uncompressed size to decompress such stream. */ - -typedef enum -{ - LZMA_FINISH_ANY, /* finish at any point */ - LZMA_FINISH_END /* block must be finished at the end */ -} ELzmaFinishMode; - -/* ELzmaFinishMode has meaning only if the decoding reaches output limit !!! - - You must use LZMA_FINISH_END, when you know that current output buffer - covers last bytes of block. In other cases you must use LZMA_FINISH_ANY. - - If LZMA decoder sees end marker before reaching output limit, it returns SZ_OK, - and output value of destLen will be less than output buffer size limit. - You can check status result also. - - You can use multiple checks to test data integrity after full decompression: - 1) Check Result and "status" variable. - 2) Check that output(destLen) = uncompressedSize, if you know real uncompressedSize. - 3) Check that output(srcLen) = compressedSize, if you know real compressedSize. - You must use correct finish mode in that case. */ - -typedef enum -{ - LZMA_STATUS_NOT_SPECIFIED, /* use main error code instead */ - LZMA_STATUS_FINISHED_WITH_MARK, /* stream was finished with end mark. */ - LZMA_STATUS_NOT_FINISHED, /* stream was not finished */ - LZMA_STATUS_NEEDS_MORE_INPUT, /* you must provide more input bytes */ - LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK /* there is probability that stream was finished without end mark */ -} ELzmaStatus; - -/* ELzmaStatus is used only as output value for function call */ - - -/* ---------- Interfaces ---------- */ - -/* There are 3 levels of interfaces: - 1) Dictionary Interface - 2) Buffer Interface - 3) One Call Interface - You can select any of these interfaces, but don't mix functions from different - groups for same object. */ - - -/* There are two variants to allocate state for Dictionary Interface: - 1) LzmaDec_Allocate / LzmaDec_Free - 2) LzmaDec_AllocateProbs / LzmaDec_FreeProbs - You can use variant 2, if you set dictionary buffer manually. - For Buffer Interface you must always use variant 1. - -LzmaDec_Allocate* can return: - SZ_OK - SZ_ERROR_MEM - Memory allocation error - SZ_ERROR_UNSUPPORTED - Unsupported properties -*/ - -SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAllocPtr alloc); -void LzmaDec_FreeProbs(CLzmaDec *p, ISzAllocPtr alloc); - -SRes LzmaDec_Allocate(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAllocPtr alloc); -void LzmaDec_Free(CLzmaDec *p, ISzAllocPtr alloc); - -/* ---------- Dictionary Interface ---------- */ - -/* You can use it, if you want to eliminate the overhead for data copying from - dictionary to some other external buffer. - You must work with CLzmaDec variables directly in this interface. - - STEPS: - LzmaDec_Construct() - LzmaDec_Allocate() - for (each new stream) - { - LzmaDec_Init() - while (it needs more decompression) - { - LzmaDec_DecodeToDic() - use data from CLzmaDec::dic and update CLzmaDec::dicPos - } - } - LzmaDec_Free() -*/ - -/* LzmaDec_DecodeToDic - - The decoding to internal dictionary buffer (CLzmaDec::dic). - You must manually update CLzmaDec::dicPos, if it reaches CLzmaDec::dicBufSize !!! - -finishMode: - It has meaning only if the decoding reaches output limit (dicLimit). - LZMA_FINISH_ANY - Decode just dicLimit bytes. - LZMA_FINISH_END - Stream must be finished after dicLimit. - -Returns: - SZ_OK - status: - LZMA_STATUS_FINISHED_WITH_MARK - LZMA_STATUS_NOT_FINISHED - LZMA_STATUS_NEEDS_MORE_INPUT - LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK - SZ_ERROR_DATA - Data error -*/ - -SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, - const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status); - - -/* ---------- Buffer Interface ---------- */ - -/* It's zlib-like interface. - See LzmaDec_DecodeToDic description for information about STEPS and return results, - but you must use LzmaDec_DecodeToBuf instead of LzmaDec_DecodeToDic and you don't need - to work with CLzmaDec variables manually. - -finishMode: - It has meaning only if the decoding reaches output limit (*destLen). - LZMA_FINISH_ANY - Decode just destLen bytes. - LZMA_FINISH_END - Stream must be finished after (*destLen). -*/ - -SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, - const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status); - - -/* ---------- One Call Interface ---------- */ - -/* LzmaDecode - -finishMode: - It has meaning only if the decoding reaches output limit (*destLen). - LZMA_FINISH_ANY - Decode just destLen bytes. - LZMA_FINISH_END - Stream must be finished after (*destLen). - -Returns: - SZ_OK - status: - LZMA_STATUS_FINISHED_WITH_MARK - LZMA_STATUS_NOT_FINISHED - LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK - SZ_ERROR_DATA - Data error - SZ_ERROR_MEM - Memory allocation error - SZ_ERROR_UNSUPPORTED - Unsupported properties - SZ_ERROR_INPUT_EOF - It needs more bytes in input buffer (src). -*/ - -SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, - const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, - ELzmaStatus *status, ISzAllocPtr alloc); - -EXTERN_C_END - -#endif diff --git a/gframe/lzma/LzmaEnc.c b/gframe/lzma/LzmaEnc.c deleted file mode 100644 index 658e792e0..000000000 --- a/gframe/lzma/LzmaEnc.c +++ /dev/null @@ -1,2978 +0,0 @@ -/* LzmaEnc.c -- LZMA Encoder -2019-01-10: Igor Pavlov : Public domain */ - -#include "Precomp.h" - -#include - -/* #define SHOW_STAT */ -/* #define SHOW_STAT2 */ - -#if defined(SHOW_STAT) || defined(SHOW_STAT2) -#include -#endif - -#define _7ZIP_ST - -#include "LzmaEnc.h" - -#include "LzFind.h" -#ifndef _7ZIP_ST -#include "LzFindMt.h" -#endif - -#ifdef SHOW_STAT -static unsigned g_STAT_OFFSET = 0; -#endif - -#define kLzmaMaxHistorySize ((UInt32)3 << 29) -/* #define kLzmaMaxHistorySize ((UInt32)7 << 29) */ - -#define kNumTopBits 24 -#define kTopValue ((UInt32)1 << kNumTopBits) - -#define kNumBitModelTotalBits 11 -#define kBitModelTotal (1 << kNumBitModelTotalBits) -#define kNumMoveBits 5 -#define kProbInitValue (kBitModelTotal >> 1) - -#define kNumMoveReducingBits 4 -#define kNumBitPriceShiftBits 4 -#define kBitPrice (1 << kNumBitPriceShiftBits) - -#define REP_LEN_COUNT 64 - -void LzmaEncProps_Init(CLzmaEncProps *p) -{ - p->level = 5; - p->dictSize = p->mc = 0; - p->reduceSize = (UInt64)(Int64)-1; - p->lc = p->lp = p->pb = p->algo = p->fb = p->btMode = p->numHashBytes = p->numThreads = -1; - p->writeEndMark = 0; -} - -void LzmaEncProps_Normalize(CLzmaEncProps *p) -{ - int level = p->level; - if (level < 0) level = 5; - p->level = level; - - if (p->dictSize == 0) p->dictSize = (level <= 5 ? (1 << (level * 2 + 14)) : (level <= 7 ? (1 << 25) : (1 << 26))); - if (p->dictSize > p->reduceSize) - { - unsigned i; - UInt32 reduceSize = (UInt32)p->reduceSize; - for (i = 11; i <= 30; i++) - { - if (reduceSize <= ((UInt32)2 << i)) { p->dictSize = ((UInt32)2 << i); break; } - if (reduceSize <= ((UInt32)3 << i)) { p->dictSize = ((UInt32)3 << i); break; } - } - } - - if (p->lc < 0) p->lc = 3; - if (p->lp < 0) p->lp = 0; - if (p->pb < 0) p->pb = 2; - - if (p->algo < 0) p->algo = (level < 5 ? 0 : 1); - if (p->fb < 0) p->fb = (level < 7 ? 32 : 64); - if (p->btMode < 0) p->btMode = (p->algo == 0 ? 0 : 1); - if (p->numHashBytes < 0) p->numHashBytes = 4; - if (p->mc == 0) p->mc = (16 + (p->fb >> 1)) >> (p->btMode ? 0 : 1); - - if (p->numThreads < 0) - p->numThreads = - #ifndef _7ZIP_ST - ((p->btMode && p->algo) ? 2 : 1); - #else - 1; - #endif -} - -UInt32 LzmaEncProps_GetDictSize(const CLzmaEncProps *props2) -{ - CLzmaEncProps props = *props2; - LzmaEncProps_Normalize(&props); - return props.dictSize; -} - -#if (_MSC_VER >= 1400) -/* BSR code is fast for some new CPUs */ -/* #define LZMA_LOG_BSR */ -#endif - -#ifdef LZMA_LOG_BSR - -#define kDicLogSizeMaxCompress 32 - -#define BSR2_RET(pos, res) { unsigned long zz; _BitScanReverse(&zz, (pos)); res = (zz + zz) + ((pos >> (zz - 1)) & 1); } - -static unsigned GetPosSlot1(UInt32 pos) -{ - unsigned res; - BSR2_RET(pos, res); - return res; -} -#define GetPosSlot2(pos, res) { BSR2_RET(pos, res); } -#define GetPosSlot(pos, res) { if (pos < 2) res = pos; else BSR2_RET(pos, res); } - -#else - -#define kNumLogBits (9 + sizeof(size_t) / 2) -/* #define kNumLogBits (11 + sizeof(size_t) / 8 * 3) */ - -#define kDicLogSizeMaxCompress ((kNumLogBits - 1) * 2 + 7) - -static void LzmaEnc_FastPosInit(Byte *g_FastPos) -{ - unsigned slot; - g_FastPos[0] = 0; - g_FastPos[1] = 1; - g_FastPos += 2; - - for (slot = 2; slot < kNumLogBits * 2; slot++) - { - size_t k = ((size_t)1 << ((slot >> 1) - 1)); - size_t j; - for (j = 0; j < k; j++) - g_FastPos[j] = (Byte)slot; - g_FastPos += k; - } -} - -/* we can use ((limit - pos) >> 31) only if (pos < ((UInt32)1 << 31)) */ -/* -#define BSR2_RET(pos, res) { unsigned zz = 6 + ((kNumLogBits - 1) & \ - (0 - (((((UInt32)1 << (kNumLogBits + 6)) - 1) - pos) >> 31))); \ - res = p->g_FastPos[pos >> zz] + (zz * 2); } -*/ - -/* -#define BSR2_RET(pos, res) { unsigned zz = 6 + ((kNumLogBits - 1) & \ - (0 - (((((UInt32)1 << (kNumLogBits)) - 1) - (pos >> 6)) >> 31))); \ - res = p->g_FastPos[pos >> zz] + (zz * 2); } -*/ - -#define BSR2_RET(pos, res) { unsigned zz = (pos < (1 << (kNumLogBits + 6))) ? 6 : 6 + kNumLogBits - 1; \ - res = p->g_FastPos[pos >> zz] + (zz * 2); } - -/* -#define BSR2_RET(pos, res) { res = (pos < (1 << (kNumLogBits + 6))) ? \ - p->g_FastPos[pos >> 6] + 12 : \ - p->g_FastPos[pos >> (6 + kNumLogBits - 1)] + (6 + (kNumLogBits - 1)) * 2; } -*/ - -#define GetPosSlot1(pos) p->g_FastPos[pos] -#define GetPosSlot2(pos, res) { BSR2_RET(pos, res); } -#define GetPosSlot(pos, res) { if (pos < kNumFullDistances) res = p->g_FastPos[pos & (kNumFullDistances - 1)]; else BSR2_RET(pos, res); } - -#endif - - -#define LZMA_NUM_REPS 4 - -typedef UInt16 CState; -typedef UInt16 CExtra; - -typedef struct -{ - UInt32 price; - CState state; - CExtra extra; - // 0 : normal - // 1 : LIT : MATCH - // > 1 : MATCH (extra-1) : LIT : REP0 (len) - UInt32 len; - UInt32 dist; - UInt32 reps[LZMA_NUM_REPS]; -} COptimal; - - -// 18.06 -#define kNumOpts (1 << 11) -#define kPackReserve (kNumOpts * 8) -// #define kNumOpts (1 << 12) -// #define kPackReserve (1 + kNumOpts * 2) - -#define kNumLenToPosStates 4 -#define kNumPosSlotBits 6 -#define kDicLogSizeMin 0 -#define kDicLogSizeMax 32 -#define kDistTableSizeMax (kDicLogSizeMax * 2) - -#define kNumAlignBits 4 -#define kAlignTableSize (1 << kNumAlignBits) -#define kAlignMask (kAlignTableSize - 1) - -#define kStartPosModelIndex 4 -#define kEndPosModelIndex 14 -#define kNumFullDistances (1 << (kEndPosModelIndex >> 1)) - -typedef -#ifdef _LZMA_PROB32 - UInt32 -#else - UInt16 -#endif - CLzmaProb; - -#define LZMA_PB_MAX 4 -#define LZMA_LC_MAX 8 -#define LZMA_LP_MAX 4 - -#define LZMA_NUM_PB_STATES_MAX (1 << LZMA_PB_MAX) - -#define kLenNumLowBits 3 -#define kLenNumLowSymbols (1 << kLenNumLowBits) -#define kLenNumHighBits 8 -#define kLenNumHighSymbols (1 << kLenNumHighBits) -#define kLenNumSymbolsTotal (kLenNumLowSymbols * 2 + kLenNumHighSymbols) - -#define LZMA_MATCH_LEN_MIN 2 -#define LZMA_MATCH_LEN_MAX (LZMA_MATCH_LEN_MIN + kLenNumSymbolsTotal - 1) - -#define kNumStates 12 - - -typedef struct -{ - CLzmaProb low[LZMA_NUM_PB_STATES_MAX << (kLenNumLowBits + 1)]; - CLzmaProb high[kLenNumHighSymbols]; -} CLenEnc; - - -typedef struct -{ - unsigned tableSize; - UInt32 prices[LZMA_NUM_PB_STATES_MAX][kLenNumSymbolsTotal]; - // UInt32 prices1[LZMA_NUM_PB_STATES_MAX][kLenNumLowSymbols * 2]; - // UInt32 prices2[kLenNumSymbolsTotal]; -} CLenPriceEnc; - -#define GET_PRICE_LEN(p, posState, len) \ - ((p)->prices[posState][(size_t)(len) - LZMA_MATCH_LEN_MIN]) - -/* -#define GET_PRICE_LEN(p, posState, len) \ - ((p)->prices2[(size_t)(len) - 2] + ((p)->prices1[posState][((len) - 2) & (kLenNumLowSymbols * 2 - 1)] & (((len) - 2 - kLenNumLowSymbols * 2) >> 9))) -*/ - -typedef struct -{ - UInt32 range; - unsigned cache; - UInt64 low; - UInt64 cacheSize; - Byte *buf; - Byte *bufLim; - Byte *bufBase; - ISeqOutStream *outStream; - UInt64 processed; - SRes res; -} CRangeEnc; - - -typedef struct -{ - CLzmaProb *litProbs; - - unsigned state; - UInt32 reps[LZMA_NUM_REPS]; - - CLzmaProb posAlignEncoder[1 << kNumAlignBits]; - CLzmaProb isRep[kNumStates]; - CLzmaProb isRepG0[kNumStates]; - CLzmaProb isRepG1[kNumStates]; - CLzmaProb isRepG2[kNumStates]; - CLzmaProb isMatch[kNumStates][LZMA_NUM_PB_STATES_MAX]; - CLzmaProb isRep0Long[kNumStates][LZMA_NUM_PB_STATES_MAX]; - - CLzmaProb posSlotEncoder[kNumLenToPosStates][1 << kNumPosSlotBits]; - CLzmaProb posEncoders[kNumFullDistances]; - - CLenEnc lenProbs; - CLenEnc repLenProbs; - -} CSaveState; - - -typedef UInt32 CProbPrice; - - -typedef struct -{ - void *matchFinderObj; - IMatchFinder matchFinder; - - unsigned optCur; - unsigned optEnd; - - unsigned longestMatchLen; - unsigned numPairs; - UInt32 numAvail; - - unsigned state; - unsigned numFastBytes; - unsigned additionalOffset; - UInt32 reps[LZMA_NUM_REPS]; - unsigned lpMask, pbMask; - CLzmaProb *litProbs; - CRangeEnc rc; - - UInt32 backRes; - - unsigned lc, lp, pb; - unsigned lclp; - - BoolInt fastMode; - BoolInt writeEndMark; - BoolInt finished; - BoolInt multiThread; - BoolInt needInit; - // BoolInt _maxMode; - - UInt64 nowPos64; - - unsigned matchPriceCount; - // unsigned alignPriceCount; - int repLenEncCounter; - - unsigned distTableSize; - - UInt32 dictSize; - SRes result; - - #ifndef _7ZIP_ST - BoolInt mtMode; - // begin of CMatchFinderMt is used in LZ thread - CMatchFinderMt matchFinderMt; - // end of CMatchFinderMt is used in BT and HASH threads - #endif - - CMatchFinder matchFinderBase; - - #ifndef _7ZIP_ST - Byte pad[128]; - #endif - - // LZ thread - CProbPrice ProbPrices[kBitModelTotal >> kNumMoveReducingBits]; - - UInt32 matches[LZMA_MATCH_LEN_MAX * 2 + 2 + 1]; - - UInt32 alignPrices[kAlignTableSize]; - UInt32 posSlotPrices[kNumLenToPosStates][kDistTableSizeMax]; - UInt32 distancesPrices[kNumLenToPosStates][kNumFullDistances]; - - CLzmaProb posAlignEncoder[1 << kNumAlignBits]; - CLzmaProb isRep[kNumStates]; - CLzmaProb isRepG0[kNumStates]; - CLzmaProb isRepG1[kNumStates]; - CLzmaProb isRepG2[kNumStates]; - CLzmaProb isMatch[kNumStates][LZMA_NUM_PB_STATES_MAX]; - CLzmaProb isRep0Long[kNumStates][LZMA_NUM_PB_STATES_MAX]; - CLzmaProb posSlotEncoder[kNumLenToPosStates][1 << kNumPosSlotBits]; - CLzmaProb posEncoders[kNumFullDistances]; - - CLenEnc lenProbs; - CLenEnc repLenProbs; - - #ifndef LZMA_LOG_BSR - Byte g_FastPos[1 << kNumLogBits]; - #endif - - CLenPriceEnc lenEnc; - CLenPriceEnc repLenEnc; - - COptimal opt[kNumOpts]; - - CSaveState saveState; - - #ifndef _7ZIP_ST - Byte pad2[128]; - #endif -} CLzmaEnc; - - - -#define COPY_ARR(dest, src, arr) memcpy(dest->arr, src->arr, sizeof(src->arr)); - -void LzmaEnc_SaveState(CLzmaEncHandle pp) -{ - CLzmaEnc *p = (CLzmaEnc *)pp; - CSaveState *dest = &p->saveState; - - dest->state = p->state; - - dest->lenProbs = p->lenProbs; - dest->repLenProbs = p->repLenProbs; - - COPY_ARR(dest, p, reps); - - COPY_ARR(dest, p, posAlignEncoder); - COPY_ARR(dest, p, isRep); - COPY_ARR(dest, p, isRepG0); - COPY_ARR(dest, p, isRepG1); - COPY_ARR(dest, p, isRepG2); - COPY_ARR(dest, p, isMatch); - COPY_ARR(dest, p, isRep0Long); - COPY_ARR(dest, p, posSlotEncoder); - COPY_ARR(dest, p, posEncoders); - - memcpy(dest->litProbs, p->litProbs, ((UInt32)0x300 << p->lclp) * sizeof(CLzmaProb)); -} - - -void LzmaEnc_RestoreState(CLzmaEncHandle pp) -{ - CLzmaEnc *dest = (CLzmaEnc *)pp; - const CSaveState *p = &dest->saveState; - - dest->state = p->state; - - dest->lenProbs = p->lenProbs; - dest->repLenProbs = p->repLenProbs; - - COPY_ARR(dest, p, reps); - - COPY_ARR(dest, p, posAlignEncoder); - COPY_ARR(dest, p, isRep); - COPY_ARR(dest, p, isRepG0); - COPY_ARR(dest, p, isRepG1); - COPY_ARR(dest, p, isRepG2); - COPY_ARR(dest, p, isMatch); - COPY_ARR(dest, p, isRep0Long); - COPY_ARR(dest, p, posSlotEncoder); - COPY_ARR(dest, p, posEncoders); - - memcpy(dest->litProbs, p->litProbs, ((UInt32)0x300 << dest->lclp) * sizeof(CLzmaProb)); -} - - - -SRes LzmaEnc_SetProps(CLzmaEncHandle pp, const CLzmaEncProps *props2) -{ - CLzmaEnc *p = (CLzmaEnc *)pp; - CLzmaEncProps props = *props2; - LzmaEncProps_Normalize(&props); - - if (props.lc > LZMA_LC_MAX - || props.lp > LZMA_LP_MAX - || props.pb > LZMA_PB_MAX - || props.dictSize > ((UInt64)1 << kDicLogSizeMaxCompress) - || props.dictSize > kLzmaMaxHistorySize) - return SZ_ERROR_PARAM; - - p->dictSize = props.dictSize; - { - unsigned fb = props.fb; - if (fb < 5) - fb = 5; - if (fb > LZMA_MATCH_LEN_MAX) - fb = LZMA_MATCH_LEN_MAX; - p->numFastBytes = fb; - } - p->lc = props.lc; - p->lp = props.lp; - p->pb = props.pb; - p->fastMode = (props.algo == 0); - // p->_maxMode = True; - p->matchFinderBase.btMode = (Byte)(props.btMode ? 1 : 0); - { - unsigned numHashBytes = 4; - if (props.btMode) - { - if (props.numHashBytes < 2) - numHashBytes = 2; - else if (props.numHashBytes < 4) - numHashBytes = props.numHashBytes; - } - p->matchFinderBase.numHashBytes = numHashBytes; - } - - p->matchFinderBase.cutValue = props.mc; - - p->writeEndMark = props.writeEndMark; - - #ifndef _7ZIP_ST - /* - if (newMultiThread != _multiThread) - { - ReleaseMatchFinder(); - _multiThread = newMultiThread; - } - */ - p->multiThread = (props.numThreads > 1); - #endif - - return SZ_OK; -} - - -void LzmaEnc_SetDataSize(CLzmaEncHandle pp, UInt64 expectedDataSiize) -{ - CLzmaEnc *p = (CLzmaEnc *)pp; - p->matchFinderBase.expectedDataSize = expectedDataSiize; -} - - -#define kState_Start 0 -#define kState_LitAfterMatch 4 -#define kState_LitAfterRep 5 -#define kState_MatchAfterLit 7 -#define kState_RepAfterLit 8 - -static const Byte kLiteralNextStates[kNumStates] = {0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5}; -static const Byte kMatchNextStates[kNumStates] = {7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10}; -static const Byte kRepNextStates[kNumStates] = {8, 8, 8, 8, 8, 8, 8, 11, 11, 11, 11, 11}; -static const Byte kShortRepNextStates[kNumStates]= {9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11}; - -#define IsLitState(s) ((s) < 7) -#define GetLenToPosState2(len) (((len) < kNumLenToPosStates - 1) ? (len) : kNumLenToPosStates - 1) -#define GetLenToPosState(len) (((len) < kNumLenToPosStates + 1) ? (len) - 2 : kNumLenToPosStates - 1) - -#define kInfinityPrice (1 << 30) - -static void RangeEnc_Construct(CRangeEnc *p) -{ - p->outStream = NULL; - p->bufBase = NULL; -} - -#define RangeEnc_GetProcessed(p) ((p)->processed + ((p)->buf - (p)->bufBase) + (p)->cacheSize) -#define RangeEnc_GetProcessed_sizet(p) ((size_t)(p)->processed + ((p)->buf - (p)->bufBase) + (size_t)(p)->cacheSize) - -#define RC_BUF_SIZE (1 << 16) - -static int RangeEnc_Alloc(CRangeEnc *p, ISzAllocPtr alloc) -{ - if (!p->bufBase) - { - p->bufBase = (Byte *)ISzAlloc_Alloc(alloc, RC_BUF_SIZE); - if (!p->bufBase) - return 0; - p->bufLim = p->bufBase + RC_BUF_SIZE; - } - return 1; -} - -static void RangeEnc_Free(CRangeEnc *p, ISzAllocPtr alloc) -{ - ISzAlloc_Free(alloc, p->bufBase); - p->bufBase = 0; -} - -static void RangeEnc_Init(CRangeEnc *p) -{ - /* Stream.Init(); */ - p->range = 0xFFFFFFFF; - p->cache = 0; - p->low = 0; - p->cacheSize = 0; - - p->buf = p->bufBase; - - p->processed = 0; - p->res = SZ_OK; -} - -MY_NO_INLINE static void RangeEnc_FlushStream(CRangeEnc *p) -{ - size_t num; - if (p->res != SZ_OK) - return; - num = p->buf - p->bufBase; - if (num != ISeqOutStream_Write(p->outStream, p->bufBase, num)) - p->res = SZ_ERROR_WRITE; - p->processed += num; - p->buf = p->bufBase; -} - -MY_NO_INLINE static void MY_FAST_CALL RangeEnc_ShiftLow(CRangeEnc *p) -{ - UInt32 low = (UInt32)p->low; - unsigned high = (unsigned)(p->low >> 32); - p->low = (UInt32)(low << 8); - if (low < (UInt32)0xFF000000 || high != 0) - { - { - Byte *buf = p->buf; - *buf++ = (Byte)(p->cache + high); - p->cache = (unsigned)(low >> 24); - p->buf = buf; - if (buf == p->bufLim) - RangeEnc_FlushStream(p); - if (p->cacheSize == 0) - return; - } - high += 0xFF; - for (;;) - { - Byte *buf = p->buf; - *buf++ = (Byte)(high); - p->buf = buf; - if (buf == p->bufLim) - RangeEnc_FlushStream(p); - if (--p->cacheSize == 0) - return; - } - } - p->cacheSize++; -} - -static void RangeEnc_FlushData(CRangeEnc *p) -{ - int i; - for (i = 0; i < 5; i++) - RangeEnc_ShiftLow(p); -} - -#define RC_NORM(p) if (range < kTopValue) { range <<= 8; RangeEnc_ShiftLow(p); } - -#define RC_BIT_PRE(p, prob) \ - ttt = *(prob); \ - newBound = (range >> kNumBitModelTotalBits) * ttt; - -// #define _LZMA_ENC_USE_BRANCH - -#ifdef _LZMA_ENC_USE_BRANCH - -#define RC_BIT(p, prob, bit) { \ - RC_BIT_PRE(p, prob) \ - if (bit == 0) { range = newBound; ttt += (kBitModelTotal - ttt) >> kNumMoveBits; } \ - else { (p)->low += newBound; range -= newBound; ttt -= ttt >> kNumMoveBits; } \ - *(prob) = (CLzmaProb)ttt; \ - RC_NORM(p) \ - } - -#else - -#define RC_BIT(p, prob, bit) { \ - UInt32 mask; \ - RC_BIT_PRE(p, prob) \ - mask = 0 - (UInt32)bit; \ - range &= mask; \ - mask &= newBound; \ - range -= mask; \ - (p)->low += mask; \ - mask = (UInt32)bit - 1; \ - range += newBound & mask; \ - mask &= (kBitModelTotal - ((1 << kNumMoveBits) - 1)); \ - mask += ((1 << kNumMoveBits) - 1); \ - ttt += (Int32)(mask - ttt) >> kNumMoveBits; \ - *(prob) = (CLzmaProb)ttt; \ - RC_NORM(p) \ - } - -#endif - - - - -#define RC_BIT_0_BASE(p, prob) \ - range = newBound; *(prob) = (CLzmaProb)(ttt + ((kBitModelTotal - ttt) >> kNumMoveBits)); - -#define RC_BIT_1_BASE(p, prob) \ - range -= newBound; (p)->low += newBound; *(prob) = (CLzmaProb)(ttt - (ttt >> kNumMoveBits)); \ - -#define RC_BIT_0(p, prob) \ - RC_BIT_0_BASE(p, prob) \ - RC_NORM(p) - -#define RC_BIT_1(p, prob) \ - RC_BIT_1_BASE(p, prob) \ - RC_NORM(p) - -static void RangeEnc_EncodeBit_0(CRangeEnc *p, CLzmaProb *prob) -{ - UInt32 range, ttt, newBound; - range = p->range; - RC_BIT_PRE(p, prob) - RC_BIT_0(p, prob) - p->range = range; -} - -static void LitEnc_Encode(CRangeEnc *p, CLzmaProb *probs, UInt32 sym) -{ - UInt32 range = p->range; - sym |= 0x100; - do - { - UInt32 ttt, newBound; - // RangeEnc_EncodeBit(p, probs + (sym >> 8), (sym >> 7) & 1); - CLzmaProb *prob = probs + (sym >> 8); - UInt32 bit = (sym >> 7) & 1; - sym <<= 1; - RC_BIT(p, prob, bit); - } - while (sym < 0x10000); - p->range = range; -} - -static void LitEnc_EncodeMatched(CRangeEnc *p, CLzmaProb *probs, UInt32 sym, UInt32 matchByte) -{ - UInt32 range = p->range; - UInt32 offs = 0x100; - sym |= 0x100; - do - { - UInt32 ttt, newBound; - CLzmaProb *prob; - UInt32 bit; - matchByte <<= 1; - // RangeEnc_EncodeBit(p, probs + (offs + (matchByte & offs) + (sym >> 8)), (sym >> 7) & 1); - prob = probs + (offs + (matchByte & offs) + (sym >> 8)); - bit = (sym >> 7) & 1; - sym <<= 1; - offs &= ~(matchByte ^ sym); - RC_BIT(p, prob, bit); - } - while (sym < 0x10000); - p->range = range; -} - - - -static void LzmaEnc_InitPriceTables(CProbPrice *ProbPrices) -{ - UInt32 i; - for (i = 0; i < (kBitModelTotal >> kNumMoveReducingBits); i++) - { - const unsigned kCyclesBits = kNumBitPriceShiftBits; - UInt32 w = (i << kNumMoveReducingBits) + (1 << (kNumMoveReducingBits - 1)); - unsigned bitCount = 0; - unsigned j; - for (j = 0; j < kCyclesBits; j++) - { - w = w * w; - bitCount <<= 1; - while (w >= ((UInt32)1 << 16)) - { - w >>= 1; - bitCount++; - } - } - ProbPrices[i] = (CProbPrice)((kNumBitModelTotalBits << kCyclesBits) - 15 - bitCount); - // printf("\n%3d: %5d", i, ProbPrices[i]); - } -} - - -#define GET_PRICE(prob, bit) \ - p->ProbPrices[((prob) ^ (unsigned)(((-(int)(bit))) & (kBitModelTotal - 1))) >> kNumMoveReducingBits]; - -#define GET_PRICEa(prob, bit) \ - ProbPrices[((prob) ^ (unsigned)((-((int)(bit))) & (kBitModelTotal - 1))) >> kNumMoveReducingBits]; - -#define GET_PRICE_0(prob) p->ProbPrices[(prob) >> kNumMoveReducingBits] -#define GET_PRICE_1(prob) p->ProbPrices[((prob) ^ (kBitModelTotal - 1)) >> kNumMoveReducingBits] - -#define GET_PRICEa_0(prob) ProbPrices[(prob) >> kNumMoveReducingBits] -#define GET_PRICEa_1(prob) ProbPrices[((prob) ^ (kBitModelTotal - 1)) >> kNumMoveReducingBits] - - -static UInt32 LitEnc_GetPrice(const CLzmaProb *probs, UInt32 sym, const CProbPrice *ProbPrices) -{ - UInt32 price = 0; - sym |= 0x100; - do - { - unsigned bit = sym & 1; - sym >>= 1; - price += GET_PRICEa(probs[sym], bit); - } - while (sym >= 2); - return price; -} - - -static UInt32 LitEnc_Matched_GetPrice(const CLzmaProb *probs, UInt32 sym, UInt32 matchByte, const CProbPrice *ProbPrices) -{ - UInt32 price = 0; - UInt32 offs = 0x100; - sym |= 0x100; - do - { - matchByte <<= 1; - price += GET_PRICEa(probs[offs + (matchByte & offs) + (sym >> 8)], (sym >> 7) & 1); - sym <<= 1; - offs &= ~(matchByte ^ sym); - } - while (sym < 0x10000); - return price; -} - - -static void RcTree_ReverseEncode(CRangeEnc *rc, CLzmaProb *probs, unsigned numBits, unsigned sym) -{ - UInt32 range = rc->range; - unsigned m = 1; - do - { - UInt32 ttt, newBound; - unsigned bit = sym & 1; - // RangeEnc_EncodeBit(rc, probs + m, bit); - sym >>= 1; - RC_BIT(rc, probs + m, bit); - m = (m << 1) | bit; - } - while (--numBits); - rc->range = range; -} - - - -static void LenEnc_Init(CLenEnc *p) -{ - unsigned i; - for (i = 0; i < (LZMA_NUM_PB_STATES_MAX << (kLenNumLowBits + 1)); i++) - p->low[i] = kProbInitValue; - for (i = 0; i < kLenNumHighSymbols; i++) - p->high[i] = kProbInitValue; -} - -static void LenEnc_Encode(CLenEnc *p, CRangeEnc *rc, unsigned sym, unsigned posState) -{ - UInt32 range, ttt, newBound; - CLzmaProb *probs = p->low; - range = rc->range; - RC_BIT_PRE(rc, probs); - if (sym >= kLenNumLowSymbols) - { - RC_BIT_1(rc, probs); - probs += kLenNumLowSymbols; - RC_BIT_PRE(rc, probs); - if (sym >= kLenNumLowSymbols * 2) - { - RC_BIT_1(rc, probs); - rc->range = range; - // RcTree_Encode(rc, p->high, kLenNumHighBits, sym - kLenNumLowSymbols * 2); - LitEnc_Encode(rc, p->high, sym - kLenNumLowSymbols * 2); - return; - } - sym -= kLenNumLowSymbols; - } - - // RcTree_Encode(rc, probs + (posState << kLenNumLowBits), kLenNumLowBits, sym); - { - unsigned m; - unsigned bit; - RC_BIT_0(rc, probs); - probs += (posState << (1 + kLenNumLowBits)); - bit = (sym >> 2) ; RC_BIT(rc, probs + 1, bit); m = (1 << 1) + bit; - bit = (sym >> 1) & 1; RC_BIT(rc, probs + m, bit); m = (m << 1) + bit; - bit = sym & 1; RC_BIT(rc, probs + m, bit); - rc->range = range; - } -} - -static void SetPrices_3(const CLzmaProb *probs, UInt32 startPrice, UInt32 *prices, const CProbPrice *ProbPrices) -{ - unsigned i; - for (i = 0; i < 8; i += 2) - { - UInt32 price = startPrice; - UInt32 prob; - price += GET_PRICEa(probs[1 ], (i >> 2)); - price += GET_PRICEa(probs[2 + (i >> 2)], (i >> 1) & 1); - prob = probs[4 + (i >> 1)]; - prices[i ] = price + GET_PRICEa_0(prob); - prices[i + 1] = price + GET_PRICEa_1(prob); - } -} - - -MY_NO_INLINE static void MY_FAST_CALL LenPriceEnc_UpdateTables( - CLenPriceEnc *p, - unsigned numPosStates, - const CLenEnc *enc, - const CProbPrice *ProbPrices) -{ - UInt32 b; - - { - unsigned prob = enc->low[0]; - UInt32 a, c; - unsigned posState; - b = GET_PRICEa_1(prob); - a = GET_PRICEa_0(prob); - c = b + GET_PRICEa_0(enc->low[kLenNumLowSymbols]); - for (posState = 0; posState < numPosStates; posState++) - { - UInt32 *prices = p->prices[posState]; - const CLzmaProb *probs = enc->low + (posState << (1 + kLenNumLowBits)); - SetPrices_3(probs, a, prices, ProbPrices); - SetPrices_3(probs + kLenNumLowSymbols, c, prices + kLenNumLowSymbols, ProbPrices); - } - } - - /* - { - unsigned i; - UInt32 b; - a = GET_PRICEa_0(enc->low[0]); - for (i = 0; i < kLenNumLowSymbols; i++) - p->prices2[i] = a; - a = GET_PRICEa_1(enc->low[0]); - b = a + GET_PRICEa_0(enc->low[kLenNumLowSymbols]); - for (i = kLenNumLowSymbols; i < kLenNumLowSymbols * 2; i++) - p->prices2[i] = b; - a += GET_PRICEa_1(enc->low[kLenNumLowSymbols]); - } - */ - - // p->counter = numSymbols; - // p->counter = 64; - - { - unsigned i = p->tableSize; - - if (i > kLenNumLowSymbols * 2) - { - const CLzmaProb *probs = enc->high; - UInt32 *prices = p->prices[0] + kLenNumLowSymbols * 2; - i -= kLenNumLowSymbols * 2 - 1; - i >>= 1; - b += GET_PRICEa_1(enc->low[kLenNumLowSymbols]); - do - { - /* - p->prices2[i] = a + - // RcTree_GetPrice(enc->high, kLenNumHighBits, i - kLenNumLowSymbols * 2, ProbPrices); - LitEnc_GetPrice(probs, i - kLenNumLowSymbols * 2, ProbPrices); - */ - // UInt32 price = a + RcTree_GetPrice(probs, kLenNumHighBits - 1, sym, ProbPrices); - unsigned sym = --i + (1 << (kLenNumHighBits - 1)); - UInt32 price = b; - do - { - unsigned bit = sym & 1; - sym >>= 1; - price += GET_PRICEa(probs[sym], bit); - } - while (sym >= 2); - - { - unsigned prob = probs[(size_t)i + (1 << (kLenNumHighBits - 1))]; - prices[(size_t)i * 2 ] = price + GET_PRICEa_0(prob); - prices[(size_t)i * 2 + 1] = price + GET_PRICEa_1(prob); - } - } - while (i); - - { - unsigned posState; - size_t num = (p->tableSize - kLenNumLowSymbols * 2) * sizeof(p->prices[0][0]); - for (posState = 1; posState < numPosStates; posState++) - memcpy(p->prices[posState] + kLenNumLowSymbols * 2, p->prices[0] + kLenNumLowSymbols * 2, num); - } - } - } -} - -/* - #ifdef SHOW_STAT - g_STAT_OFFSET += num; - printf("\n MovePos %u", num); - #endif -*/ - -#define MOVE_POS(p, num) { \ - p->additionalOffset += (num); \ - p->matchFinder.Skip(p->matchFinderObj, (UInt32)(num)); } - - -static unsigned ReadMatchDistances(CLzmaEnc *p, unsigned *numPairsRes) -{ - unsigned numPairs; - - p->additionalOffset++; - p->numAvail = p->matchFinder.GetNumAvailableBytes(p->matchFinderObj); - numPairs = p->matchFinder.GetMatches(p->matchFinderObj, p->matches); - *numPairsRes = numPairs; - - #ifdef SHOW_STAT - printf("\n i = %u numPairs = %u ", g_STAT_OFFSET, numPairs / 2); - g_STAT_OFFSET++; - { - unsigned i; - for (i = 0; i < numPairs; i += 2) - printf("%2u %6u | ", p->matches[i], p->matches[i + 1]); - } - #endif - - if (numPairs == 0) - return 0; - { - unsigned len = p->matches[(size_t)numPairs - 2]; - if (len != p->numFastBytes) - return len; - { - UInt32 numAvail = p->numAvail; - if (numAvail > LZMA_MATCH_LEN_MAX) - numAvail = LZMA_MATCH_LEN_MAX; - { - const Byte *p1 = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - 1; - const Byte *p2 = p1 + len; - ptrdiff_t dif = (ptrdiff_t)-1 - p->matches[(size_t)numPairs - 1]; - const Byte *lim = p1 + numAvail; - for (; p2 != lim && *p2 == p2[dif]; p2++) - {} - return (unsigned)(p2 - p1); - } - } - } -} - -#define MARK_LIT ((UInt32)(Int32)-1) - -#define MakeAs_Lit(p) { (p)->dist = MARK_LIT; (p)->extra = 0; } -#define MakeAs_ShortRep(p) { (p)->dist = 0; (p)->extra = 0; } -#define IsShortRep(p) ((p)->dist == 0) - - -#define GetPrice_ShortRep(p, state, posState) \ - ( GET_PRICE_0(p->isRepG0[state]) + GET_PRICE_0(p->isRep0Long[state][posState])) - -#define GetPrice_Rep_0(p, state, posState) ( \ - GET_PRICE_1(p->isMatch[state][posState]) \ - + GET_PRICE_1(p->isRep0Long[state][posState])) \ - + GET_PRICE_1(p->isRep[state]) \ - + GET_PRICE_0(p->isRepG0[state]) - -MY_FORCE_INLINE -static UInt32 GetPrice_PureRep(const CLzmaEnc *p, unsigned repIndex, size_t state, size_t posState) -{ - UInt32 price; - UInt32 prob = p->isRepG0[state]; - if (repIndex == 0) - { - price = GET_PRICE_0(prob); - price += GET_PRICE_1(p->isRep0Long[state][posState]); - } - else - { - price = GET_PRICE_1(prob); - prob = p->isRepG1[state]; - if (repIndex == 1) - price += GET_PRICE_0(prob); - else - { - price += GET_PRICE_1(prob); - price += GET_PRICE(p->isRepG2[state], repIndex - 2); - } - } - return price; -} - - -static unsigned Backward(CLzmaEnc *p, unsigned cur) -{ - unsigned wr = cur + 1; - p->optEnd = wr; - - for (;;) - { - UInt32 dist = p->opt[cur].dist; - unsigned len = (unsigned)p->opt[cur].len; - unsigned extra = (unsigned)p->opt[cur].extra; - cur -= len; - - if (extra) - { - wr--; - p->opt[wr].len = (UInt32)len; - cur -= extra; - len = extra; - if (extra == 1) - { - p->opt[wr].dist = dist; - dist = MARK_LIT; - } - else - { - p->opt[wr].dist = 0; - len--; - wr--; - p->opt[wr].dist = MARK_LIT; - p->opt[wr].len = 1; - } - } - - if (cur == 0) - { - p->backRes = dist; - p->optCur = wr; - return len; - } - - wr--; - p->opt[wr].dist = dist; - p->opt[wr].len = (UInt32)len; - } -} - - - -#define LIT_PROBS(pos, prevByte) \ - (p->litProbs + (UInt32)3 * (((((pos) << 8) + (prevByte)) & p->lpMask) << p->lc)) - - -static unsigned GetOptimum(CLzmaEnc *p, UInt32 position) -{ - unsigned last, cur; - UInt32 reps[LZMA_NUM_REPS]; - unsigned repLens[LZMA_NUM_REPS]; - UInt32 *matches; - - { - UInt32 numAvail; - unsigned numPairs, mainLen, repMaxIndex, i, posState; - UInt32 matchPrice, repMatchPrice; - const Byte *data; - Byte curByte, matchByte; - - p->optCur = p->optEnd = 0; - - if (p->additionalOffset == 0) - mainLen = ReadMatchDistances(p, &numPairs); - else - { - mainLen = p->longestMatchLen; - numPairs = p->numPairs; - } - - numAvail = p->numAvail; - if (numAvail < 2) - { - p->backRes = MARK_LIT; - return 1; - } - if (numAvail > LZMA_MATCH_LEN_MAX) - numAvail = LZMA_MATCH_LEN_MAX; - - data = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - 1; - repMaxIndex = 0; - - for (i = 0; i < LZMA_NUM_REPS; i++) - { - unsigned len; - const Byte *data2; - reps[i] = p->reps[i]; - data2 = data - reps[i]; - if (data[0] != data2[0] || data[1] != data2[1]) - { - repLens[i] = 0; - continue; - } - for (len = 2; len < numAvail && data[len] == data2[len]; len++) - {} - repLens[i] = len; - if (len > repLens[repMaxIndex]) - repMaxIndex = i; - } - - if (repLens[repMaxIndex] >= p->numFastBytes) - { - unsigned len; - p->backRes = (UInt32)repMaxIndex; - len = repLens[repMaxIndex]; - MOVE_POS(p, len - 1) - return len; - } - - matches = p->matches; - - if (mainLen >= p->numFastBytes) - { - p->backRes = matches[(size_t)numPairs - 1] + LZMA_NUM_REPS; - MOVE_POS(p, mainLen - 1) - return mainLen; - } - - curByte = *data; - matchByte = *(data - reps[0]); - - last = repLens[repMaxIndex]; - if (last <= mainLen) - last = mainLen; - - if (last < 2 && curByte != matchByte) - { - p->backRes = MARK_LIT; - return 1; - } - - p->opt[0].state = (CState)p->state; - - posState = (position & p->pbMask); - - { - const CLzmaProb *probs = LIT_PROBS(position, *(data - 1)); - p->opt[1].price = GET_PRICE_0(p->isMatch[p->state][posState]) + - (!IsLitState(p->state) ? - LitEnc_Matched_GetPrice(probs, curByte, matchByte, p->ProbPrices) : - LitEnc_GetPrice(probs, curByte, p->ProbPrices)); - } - - MakeAs_Lit(&p->opt[1]); - - matchPrice = GET_PRICE_1(p->isMatch[p->state][posState]); - repMatchPrice = matchPrice + GET_PRICE_1(p->isRep[p->state]); - - // 18.06 - if (matchByte == curByte && repLens[0] == 0) - { - UInt32 shortRepPrice = repMatchPrice + GetPrice_ShortRep(p, p->state, posState); - if (shortRepPrice < p->opt[1].price) - { - p->opt[1].price = shortRepPrice; - MakeAs_ShortRep(&p->opt[1]); - } - if (last < 2) - { - p->backRes = p->opt[1].dist; - return 1; - } - } - - p->opt[1].len = 1; - - p->opt[0].reps[0] = reps[0]; - p->opt[0].reps[1] = reps[1]; - p->opt[0].reps[2] = reps[2]; - p->opt[0].reps[3] = reps[3]; - - // ---------- REP ---------- - - for (i = 0; i < LZMA_NUM_REPS; i++) - { - unsigned repLen = repLens[i]; - UInt32 price; - if (repLen < 2) - continue; - price = repMatchPrice + GetPrice_PureRep(p, i, p->state, posState); - do - { - UInt32 price2 = price + GET_PRICE_LEN(&p->repLenEnc, posState, repLen); - COptimal *opt = &p->opt[repLen]; - if (price2 < opt->price) - { - opt->price = price2; - opt->len = (UInt32)repLen; - opt->dist = (UInt32)i; - opt->extra = 0; - } - } - while (--repLen >= 2); - } - - - // ---------- MATCH ---------- - { - unsigned len = repLens[0] + 1; - if (len <= mainLen) - { - unsigned offs = 0; - UInt32 normalMatchPrice = matchPrice + GET_PRICE_0(p->isRep[p->state]); - - if (len < 2) - len = 2; - else - while (len > matches[offs]) - offs += 2; - - for (; ; len++) - { - COptimal *opt; - UInt32 dist = matches[(size_t)offs + 1]; - UInt32 price = normalMatchPrice + GET_PRICE_LEN(&p->lenEnc, posState, len); - unsigned lenToPosState = GetLenToPosState(len); - - if (dist < kNumFullDistances) - price += p->distancesPrices[lenToPosState][dist & (kNumFullDistances - 1)]; - else - { - unsigned slot; - GetPosSlot2(dist, slot); - price += p->alignPrices[dist & kAlignMask]; - price += p->posSlotPrices[lenToPosState][slot]; - } - - opt = &p->opt[len]; - - if (price < opt->price) - { - opt->price = price; - opt->len = (UInt32)len; - opt->dist = dist + LZMA_NUM_REPS; - opt->extra = 0; - } - - if (len == matches[offs]) - { - offs += 2; - if (offs == numPairs) - break; - } - } - } - } - - - cur = 0; - - #ifdef SHOW_STAT2 - /* if (position >= 0) */ - { - unsigned i; - printf("\n pos = %4X", position); - for (i = cur; i <= last; i++) - printf("\nprice[%4X] = %u", position - cur + i, p->opt[i].price); - } - #endif - } - - - - // ---------- Optimal Parsing ---------- - - for (;;) - { - unsigned numAvail; - UInt32 numAvailFull; - unsigned newLen, numPairs, prev, state, posState, startLen; - UInt32 litPrice, matchPrice, repMatchPrice; - BoolInt nextIsLit; - Byte curByte, matchByte; - const Byte *data; - COptimal *curOpt, *nextOpt; - - if (++cur == last) - break; - - // 18.06 - if (cur >= kNumOpts - 64) - { - unsigned j, best; - UInt32 price = p->opt[cur].price; - best = cur; - for (j = cur + 1; j <= last; j++) - { - UInt32 price2 = p->opt[j].price; - if (price >= price2) - { - price = price2; - best = j; - } - } - { - unsigned delta = best - cur; - if (delta != 0) - { - MOVE_POS(p, delta); - } - } - cur = best; - break; - } - - newLen = ReadMatchDistances(p, &numPairs); - - if (newLen >= p->numFastBytes) - { - p->numPairs = numPairs; - p->longestMatchLen = newLen; - break; - } - - curOpt = &p->opt[cur]; - - position++; - - // we need that check here, if skip_items in p->opt are possible - /* - if (curOpt->price >= kInfinityPrice) - continue; - */ - - prev = cur - curOpt->len; - - if (curOpt->len == 1) - { - state = (unsigned)p->opt[prev].state; - if (IsShortRep(curOpt)) - state = kShortRepNextStates[state]; - else - state = kLiteralNextStates[state]; - } - else - { - const COptimal *prevOpt; - UInt32 b0; - UInt32 dist = curOpt->dist; - - if (curOpt->extra) - { - prev -= (unsigned)curOpt->extra; - state = kState_RepAfterLit; - if (curOpt->extra == 1) - state = (dist < LZMA_NUM_REPS ? kState_RepAfterLit : kState_MatchAfterLit); - } - else - { - state = (unsigned)p->opt[prev].state; - if (dist < LZMA_NUM_REPS) - state = kRepNextStates[state]; - else - state = kMatchNextStates[state]; - } - - prevOpt = &p->opt[prev]; - b0 = prevOpt->reps[0]; - - if (dist < LZMA_NUM_REPS) - { - if (dist == 0) - { - reps[0] = b0; - reps[1] = prevOpt->reps[1]; - reps[2] = prevOpt->reps[2]; - reps[3] = prevOpt->reps[3]; - } - else - { - reps[1] = b0; - b0 = prevOpt->reps[1]; - if (dist == 1) - { - reps[0] = b0; - reps[2] = prevOpt->reps[2]; - reps[3] = prevOpt->reps[3]; - } - else - { - reps[2] = b0; - reps[0] = prevOpt->reps[dist]; - reps[3] = prevOpt->reps[dist ^ 1]; - } - } - } - else - { - reps[0] = (dist - LZMA_NUM_REPS + 1); - reps[1] = b0; - reps[2] = prevOpt->reps[1]; - reps[3] = prevOpt->reps[2]; - } - } - - curOpt->state = (CState)state; - curOpt->reps[0] = reps[0]; - curOpt->reps[1] = reps[1]; - curOpt->reps[2] = reps[2]; - curOpt->reps[3] = reps[3]; - - data = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - 1; - curByte = *data; - matchByte = *(data - reps[0]); - - posState = (position & p->pbMask); - - /* - The order of Price checks: - < LIT - <= SHORT_REP - < LIT : REP_0 - < REP [ : LIT : REP_0 ] - < MATCH [ : LIT : REP_0 ] - */ - - { - UInt32 curPrice = curOpt->price; - unsigned prob = p->isMatch[state][posState]; - matchPrice = curPrice + GET_PRICE_1(prob); - litPrice = curPrice + GET_PRICE_0(prob); - } - - nextOpt = &p->opt[(size_t)cur + 1]; - nextIsLit = False; - - // here we can allow skip_items in p->opt, if we don't check (nextOpt->price < kInfinityPrice) - // 18.new.06 - if ((nextOpt->price < kInfinityPrice - // && !IsLitState(state) - && matchByte == curByte) - || litPrice > nextOpt->price - ) - litPrice = 0; - else - { - const CLzmaProb *probs = LIT_PROBS(position, *(data - 1)); - litPrice += (!IsLitState(state) ? - LitEnc_Matched_GetPrice(probs, curByte, matchByte, p->ProbPrices) : - LitEnc_GetPrice(probs, curByte, p->ProbPrices)); - - if (litPrice < nextOpt->price) - { - nextOpt->price = litPrice; - nextOpt->len = 1; - MakeAs_Lit(nextOpt); - nextIsLit = True; - } - } - - repMatchPrice = matchPrice + GET_PRICE_1(p->isRep[state]); - - numAvailFull = p->numAvail; - { - unsigned temp = kNumOpts - 1 - cur; - if (numAvailFull > temp) - numAvailFull = (UInt32)temp; - } - - // 18.06 - // ---------- SHORT_REP ---------- - if (IsLitState(state)) // 18.new - if (matchByte == curByte) - if (repMatchPrice < nextOpt->price) // 18.new - // if (numAvailFull < 2 || data[1] != *(data - reps[0] + 1)) - if ( - // nextOpt->price >= kInfinityPrice || - nextOpt->len < 2 // we can check nextOpt->len, if skip items are not allowed in p->opt - || (nextOpt->dist != 0 - // && nextOpt->extra <= 1 // 17.old - ) - ) - { - UInt32 shortRepPrice = repMatchPrice + GetPrice_ShortRep(p, state, posState); - // if (shortRepPrice <= nextOpt->price) // 17.old - if (shortRepPrice < nextOpt->price) // 18.new - { - nextOpt->price = shortRepPrice; - nextOpt->len = 1; - MakeAs_ShortRep(nextOpt); - nextIsLit = False; - } - } - - if (numAvailFull < 2) - continue; - numAvail = (numAvailFull <= p->numFastBytes ? numAvailFull : p->numFastBytes); - - // numAvail <= p->numFastBytes - - // ---------- LIT : REP_0 ---------- - - if (!nextIsLit - && litPrice != 0 // 18.new - && matchByte != curByte - && numAvailFull > 2) - { - const Byte *data2 = data - reps[0]; - if (data[1] == data2[1] && data[2] == data2[2]) - { - unsigned len; - unsigned limit = p->numFastBytes + 1; - if (limit > numAvailFull) - limit = numAvailFull; - for (len = 3; len < limit && data[len] == data2[len]; len++) - {} - - { - unsigned state2 = kLiteralNextStates[state]; - unsigned posState2 = (position + 1) & p->pbMask; - UInt32 price = litPrice + GetPrice_Rep_0(p, state2, posState2); - { - unsigned offset = cur + len; - - if (last < offset) - last = offset; - - // do - { - UInt32 price2; - COptimal *opt; - len--; - // price2 = price + GetPrice_Len_Rep_0(p, len, state2, posState2); - price2 = price + GET_PRICE_LEN(&p->repLenEnc, posState2, len); - - opt = &p->opt[offset]; - // offset--; - if (price2 < opt->price) - { - opt->price = price2; - opt->len = (UInt32)len; - opt->dist = 0; - opt->extra = 1; - } - } - // while (len >= 3); - } - } - } - } - - startLen = 2; /* speed optimization */ - - { - // ---------- REP ---------- - unsigned repIndex = 0; // 17.old - // unsigned repIndex = IsLitState(state) ? 0 : 1; // 18.notused - for (; repIndex < LZMA_NUM_REPS; repIndex++) - { - unsigned len; - UInt32 price; - const Byte *data2 = data - reps[repIndex]; - if (data[0] != data2[0] || data[1] != data2[1]) - continue; - - for (len = 2; len < numAvail && data[len] == data2[len]; len++) - {} - - // if (len < startLen) continue; // 18.new: speed optimization - - { - unsigned offset = cur + len; - if (last < offset) - last = offset; - } - { - unsigned len2 = len; - price = repMatchPrice + GetPrice_PureRep(p, repIndex, state, posState); - do - { - UInt32 price2 = price + GET_PRICE_LEN(&p->repLenEnc, posState, len2); - COptimal *opt = &p->opt[cur + len2]; - if (price2 < opt->price) - { - opt->price = price2; - opt->len = (UInt32)len2; - opt->dist = (UInt32)repIndex; - opt->extra = 0; - } - } - while (--len2 >= 2); - } - - if (repIndex == 0) startLen = len + 1; // 17.old - // startLen = len + 1; // 18.new - - /* if (_maxMode) */ - { - // ---------- REP : LIT : REP_0 ---------- - // numFastBytes + 1 + numFastBytes - - unsigned len2 = len + 1; - unsigned limit = len2 + p->numFastBytes; - if (limit > numAvailFull) - limit = numAvailFull; - - len2 += 2; - if (len2 <= limit) - if (data[len2 - 2] == data2[len2 - 2]) - if (data[len2 - 1] == data2[len2 - 1]) - { - unsigned state2 = kRepNextStates[state]; - unsigned posState2 = (position + len) & p->pbMask; - price += GET_PRICE_LEN(&p->repLenEnc, posState, len) - + GET_PRICE_0(p->isMatch[state2][posState2]) - + LitEnc_Matched_GetPrice(LIT_PROBS(position + len, data[(size_t)len - 1]), - data[len], data2[len], p->ProbPrices); - - // state2 = kLiteralNextStates[state2]; - state2 = kState_LitAfterRep; - posState2 = (posState2 + 1) & p->pbMask; - - - price += GetPrice_Rep_0(p, state2, posState2); - - for (; len2 < limit && data[len2] == data2[len2]; len2++) - {} - - len2 -= len; - // if (len2 >= 3) - { - { - unsigned offset = cur + len + len2; - - if (last < offset) - last = offset; - // do - { - UInt32 price2; - COptimal *opt; - len2--; - // price2 = price + GetPrice_Len_Rep_0(p, len2, state2, posState2); - price2 = price + GET_PRICE_LEN(&p->repLenEnc, posState2, len2); - - opt = &p->opt[offset]; - // offset--; - if (price2 < opt->price) - { - opt->price = price2; - opt->len = (UInt32)len2; - opt->extra = (CExtra)(len + 1); - opt->dist = (UInt32)repIndex; - } - } - // while (len2 >= 3); - } - } - } - } - } - } - - - // ---------- MATCH ---------- - /* for (unsigned len = 2; len <= newLen; len++) */ - if (newLen > numAvail) - { - newLen = numAvail; - for (numPairs = 0; newLen > matches[numPairs]; numPairs += 2); - matches[numPairs] = (UInt32)newLen; - numPairs += 2; - } - - // startLen = 2; /* speed optimization */ - - if (newLen >= startLen) - { - UInt32 normalMatchPrice = matchPrice + GET_PRICE_0(p->isRep[state]); - UInt32 dist; - unsigned offs, posSlot, len; - - { - unsigned offset = cur + newLen; - if (last < offset) - last = offset; - } - - offs = 0; - while (startLen > matches[offs]) - offs += 2; - dist = matches[(size_t)offs + 1]; - - // if (dist >= kNumFullDistances) - GetPosSlot2(dist, posSlot); - - for (len = /*2*/ startLen; ; len++) - { - UInt32 price = normalMatchPrice + GET_PRICE_LEN(&p->lenEnc, posState, len); - { - COptimal *opt; - unsigned lenNorm = len - 2; - lenNorm = GetLenToPosState2(lenNorm); - if (dist < kNumFullDistances) - price += p->distancesPrices[lenNorm][dist & (kNumFullDistances - 1)]; - else - price += p->posSlotPrices[lenNorm][posSlot] + p->alignPrices[dist & kAlignMask]; - - opt = &p->opt[cur + len]; - if (price < opt->price) - { - opt->price = price; - opt->len = (UInt32)len; - opt->dist = dist + LZMA_NUM_REPS; - opt->extra = 0; - } - } - - if (len == matches[offs]) - { - // if (p->_maxMode) { - // MATCH : LIT : REP_0 - - const Byte *data2 = data - dist - 1; - unsigned len2 = len + 1; - unsigned limit = len2 + p->numFastBytes; - if (limit > numAvailFull) - limit = numAvailFull; - - len2 += 2; - if (len2 <= limit) - if (data[len2 - 2] == data2[len2 - 2]) - if (data[len2 - 1] == data2[len2 - 1]) - { - for (; len2 < limit && data[len2] == data2[len2]; len2++) - {} - - len2 -= len; - - // if (len2 >= 3) - { - unsigned state2 = kMatchNextStates[state]; - unsigned posState2 = (position + len) & p->pbMask; - unsigned offset; - price += GET_PRICE_0(p->isMatch[state2][posState2]); - price += LitEnc_Matched_GetPrice(LIT_PROBS(position + len, data[(size_t)len - 1]), - data[len], data2[len], p->ProbPrices); - - // state2 = kLiteralNextStates[state2]; - state2 = kState_LitAfterMatch; - - posState2 = (posState2 + 1) & p->pbMask; - price += GetPrice_Rep_0(p, state2, posState2); - - offset = cur + len + len2; - - if (last < offset) - last = offset; - // do - { - UInt32 price2; - COptimal *opt; - len2--; - // price2 = price + GetPrice_Len_Rep_0(p, len2, state2, posState2); - price2 = price + GET_PRICE_LEN(&p->repLenEnc, posState2, len2); - opt = &p->opt[offset]; - // offset--; - if (price2 < opt->price) - { - opt->price = price2; - opt->len = (UInt32)len2; - opt->extra = (CExtra)(len + 1); - opt->dist = dist + LZMA_NUM_REPS; - } - } - // while (len2 >= 3); - } - - } - - offs += 2; - if (offs == numPairs) - break; - dist = matches[(size_t)offs + 1]; - // if (dist >= kNumFullDistances) - GetPosSlot2(dist, posSlot); - } - } - } - } - - do - p->opt[last].price = kInfinityPrice; - while (--last); - - return Backward(p, cur); -} - - - -#define ChangePair(smallDist, bigDist) (((bigDist) >> 7) > (smallDist)) - - - -static unsigned GetOptimumFast(CLzmaEnc *p) -{ - UInt32 numAvail, mainDist; - unsigned mainLen, numPairs, repIndex, repLen, i; - const Byte *data; - - if (p->additionalOffset == 0) - mainLen = ReadMatchDistances(p, &numPairs); - else - { - mainLen = p->longestMatchLen; - numPairs = p->numPairs; - } - - numAvail = p->numAvail; - p->backRes = MARK_LIT; - if (numAvail < 2) - return 1; - // if (mainLen < 2 && p->state == 0) return 1; // 18.06.notused - if (numAvail > LZMA_MATCH_LEN_MAX) - numAvail = LZMA_MATCH_LEN_MAX; - data = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - 1; - repLen = repIndex = 0; - - for (i = 0; i < LZMA_NUM_REPS; i++) - { - unsigned len; - const Byte *data2 = data - p->reps[i]; - if (data[0] != data2[0] || data[1] != data2[1]) - continue; - for (len = 2; len < numAvail && data[len] == data2[len]; len++) - {} - if (len >= p->numFastBytes) - { - p->backRes = (UInt32)i; - MOVE_POS(p, len - 1) - return len; - } - if (len > repLen) - { - repIndex = i; - repLen = len; - } - } - - if (mainLen >= p->numFastBytes) - { - p->backRes = p->matches[(size_t)numPairs - 1] + LZMA_NUM_REPS; - MOVE_POS(p, mainLen - 1) - return mainLen; - } - - mainDist = 0; /* for GCC */ - - if (mainLen >= 2) - { - mainDist = p->matches[(size_t)numPairs - 1]; - while (numPairs > 2) - { - UInt32 dist2; - if (mainLen != p->matches[(size_t)numPairs - 4] + 1) - break; - dist2 = p->matches[(size_t)numPairs - 3]; - if (!ChangePair(dist2, mainDist)) - break; - numPairs -= 2; - mainLen--; - mainDist = dist2; - } - if (mainLen == 2 && mainDist >= 0x80) - mainLen = 1; - } - - if (repLen >= 2) - if ( repLen + 1 >= mainLen - || (repLen + 2 >= mainLen && mainDist >= (1 << 9)) - || (repLen + 3 >= mainLen && mainDist >= (1 << 15))) - { - p->backRes = (UInt32)repIndex; - MOVE_POS(p, repLen - 1) - return repLen; - } - - if (mainLen < 2 || numAvail <= 2) - return 1; - - { - unsigned len1 = ReadMatchDistances(p, &p->numPairs); - p->longestMatchLen = len1; - - if (len1 >= 2) - { - UInt32 newDist = p->matches[(size_t)p->numPairs - 1]; - if ( (len1 >= mainLen && newDist < mainDist) - || (len1 == mainLen + 1 && !ChangePair(mainDist, newDist)) - || (len1 > mainLen + 1) - || (len1 + 1 >= mainLen && mainLen >= 3 && ChangePair(newDist, mainDist))) - return 1; - } - } - - data = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - 1; - - for (i = 0; i < LZMA_NUM_REPS; i++) - { - unsigned len, limit; - const Byte *data2 = data - p->reps[i]; - if (data[0] != data2[0] || data[1] != data2[1]) - continue; - limit = mainLen - 1; - for (len = 2;; len++) - { - if (len >= limit) - return 1; - if (data[len] != data2[len]) - break; - } - } - - p->backRes = mainDist + LZMA_NUM_REPS; - if (mainLen != 2) - { - MOVE_POS(p, mainLen - 2) - } - return mainLen; -} - - - - -static void WriteEndMarker(CLzmaEnc *p, unsigned posState) -{ - UInt32 range; - range = p->rc.range; - { - UInt32 ttt, newBound; - CLzmaProb *prob = &p->isMatch[p->state][posState]; - RC_BIT_PRE(&p->rc, prob) - RC_BIT_1(&p->rc, prob) - prob = &p->isRep[p->state]; - RC_BIT_PRE(&p->rc, prob) - RC_BIT_0(&p->rc, prob) - } - p->state = kMatchNextStates[p->state]; - - p->rc.range = range; - LenEnc_Encode(&p->lenProbs, &p->rc, 0, posState); - range = p->rc.range; - - { - // RcTree_Encode_PosSlot(&p->rc, p->posSlotEncoder[0], (1 << kNumPosSlotBits) - 1); - CLzmaProb *probs = p->posSlotEncoder[0]; - unsigned m = 1; - do - { - UInt32 ttt, newBound; - RC_BIT_PRE(p, probs + m) - RC_BIT_1(&p->rc, probs + m); - m = (m << 1) + 1; - } - while (m < (1 << kNumPosSlotBits)); - } - { - // RangeEnc_EncodeDirectBits(&p->rc, ((UInt32)1 << (30 - kNumAlignBits)) - 1, 30 - kNumAlignBits); UInt32 range = p->range; - unsigned numBits = 30 - kNumAlignBits; - do - { - range >>= 1; - p->rc.low += range; - RC_NORM(&p->rc) - } - while (--numBits); - } - - { - // RcTree_ReverseEncode(&p->rc, p->posAlignEncoder, kNumAlignBits, kAlignMask); - CLzmaProb *probs = p->posAlignEncoder; - unsigned m = 1; - do - { - UInt32 ttt, newBound; - RC_BIT_PRE(p, probs + m) - RC_BIT_1(&p->rc, probs + m); - m = (m << 1) + 1; - } - while (m < kAlignTableSize); - } - p->rc.range = range; -} - - -static SRes CheckErrors(CLzmaEnc *p) -{ - if (p->result != SZ_OK) - return p->result; - if (p->rc.res != SZ_OK) - p->result = SZ_ERROR_WRITE; - if (p->matchFinderBase.result != SZ_OK) - p->result = SZ_ERROR_READ; - if (p->result != SZ_OK) - p->finished = True; - return p->result; -} - - -MY_NO_INLINE static SRes Flush(CLzmaEnc *p, UInt32 nowPos) -{ - /* ReleaseMFStream(); */ - p->finished = True; - if (p->writeEndMark) - WriteEndMarker(p, nowPos & p->pbMask); - RangeEnc_FlushData(&p->rc); - RangeEnc_FlushStream(&p->rc); - return CheckErrors(p); -} - - -MY_NO_INLINE static void FillAlignPrices(CLzmaEnc *p) -{ - unsigned i; - const CProbPrice *ProbPrices = p->ProbPrices; - const CLzmaProb *probs = p->posAlignEncoder; - // p->alignPriceCount = 0; - for (i = 0; i < kAlignTableSize / 2; i++) - { - UInt32 price = 0; - unsigned sym = i; - unsigned m = 1; - unsigned bit; - UInt32 prob; - bit = sym & 1; sym >>= 1; price += GET_PRICEa(probs[m], bit); m = (m << 1) + bit; - bit = sym & 1; sym >>= 1; price += GET_PRICEa(probs[m], bit); m = (m << 1) + bit; - bit = sym & 1; sym >>= 1; price += GET_PRICEa(probs[m], bit); m = (m << 1) + bit; - prob = probs[m]; - p->alignPrices[i ] = price + GET_PRICEa_0(prob); - p->alignPrices[i + 8] = price + GET_PRICEa_1(prob); - // p->alignPrices[i] = RcTree_ReverseGetPrice(p->posAlignEncoder, kNumAlignBits, i, p->ProbPrices); - } -} - - -MY_NO_INLINE static void FillDistancesPrices(CLzmaEnc *p) -{ - // int y; for (y = 0; y < 100; y++) { - - UInt32 tempPrices[kNumFullDistances]; - unsigned i, lps; - - const CProbPrice *ProbPrices = p->ProbPrices; - p->matchPriceCount = 0; - - for (i = kStartPosModelIndex / 2; i < kNumFullDistances / 2; i++) - { - unsigned posSlot = GetPosSlot1(i); - unsigned footerBits = (posSlot >> 1) - 1; - unsigned base = ((2 | (posSlot & 1)) << footerBits); - const CLzmaProb *probs = p->posEncoders + (size_t)base * 2; - // tempPrices[i] = RcTree_ReverseGetPrice(p->posEncoders + base, footerBits, i - base, p->ProbPrices); - UInt32 price = 0; - unsigned m = 1; - unsigned sym = i; - unsigned offset = (unsigned)1 << footerBits; - base += i; - - if (footerBits) - do - { - unsigned bit = sym & 1; - sym >>= 1; - price += GET_PRICEa(probs[m], bit); - m = (m << 1) + bit; - } - while (--footerBits); - - { - unsigned prob = probs[m]; - tempPrices[base ] = price + GET_PRICEa_0(prob); - tempPrices[base + offset] = price + GET_PRICEa_1(prob); - } - } - - for (lps = 0; lps < kNumLenToPosStates; lps++) - { - unsigned slot; - unsigned distTableSize2 = (p->distTableSize + 1) >> 1; - UInt32 *posSlotPrices = p->posSlotPrices[lps]; - const CLzmaProb *probs = p->posSlotEncoder[lps]; - - for (slot = 0; slot < distTableSize2; slot++) - { - // posSlotPrices[slot] = RcTree_GetPrice(encoder, kNumPosSlotBits, slot, p->ProbPrices); - UInt32 price; - unsigned bit; - unsigned sym = slot + (1 << (kNumPosSlotBits - 1)); - unsigned prob; - bit = sym & 1; sym >>= 1; price = GET_PRICEa(probs[sym], bit); - bit = sym & 1; sym >>= 1; price += GET_PRICEa(probs[sym], bit); - bit = sym & 1; sym >>= 1; price += GET_PRICEa(probs[sym], bit); - bit = sym & 1; sym >>= 1; price += GET_PRICEa(probs[sym], bit); - bit = sym & 1; sym >>= 1; price += GET_PRICEa(probs[sym], bit); - prob = probs[(size_t)slot + (1 << (kNumPosSlotBits - 1))]; - posSlotPrices[(size_t)slot * 2 ] = price + GET_PRICEa_0(prob); - posSlotPrices[(size_t)slot * 2 + 1] = price + GET_PRICEa_1(prob); - } - - { - UInt32 delta = ((UInt32)((kEndPosModelIndex / 2 - 1) - kNumAlignBits) << kNumBitPriceShiftBits); - for (slot = kEndPosModelIndex / 2; slot < distTableSize2; slot++) - { - posSlotPrices[(size_t)slot * 2 ] += delta; - posSlotPrices[(size_t)slot * 2 + 1] += delta; - delta += ((UInt32)1 << kNumBitPriceShiftBits); - } - } - - { - UInt32 *dp = p->distancesPrices[lps]; - - dp[0] = posSlotPrices[0]; - dp[1] = posSlotPrices[1]; - dp[2] = posSlotPrices[2]; - dp[3] = posSlotPrices[3]; - - for (i = 4; i < kNumFullDistances; i += 2) - { - UInt32 slotPrice = posSlotPrices[GetPosSlot1(i)]; - dp[i ] = slotPrice + tempPrices[i]; - dp[i + 1] = slotPrice + tempPrices[i + 1]; - } - } - } - // } -} - - - -void LzmaEnc_Construct(CLzmaEnc *p) -{ - RangeEnc_Construct(&p->rc); - MatchFinder_Construct(&p->matchFinderBase); - - #ifndef _7ZIP_ST - MatchFinderMt_Construct(&p->matchFinderMt); - p->matchFinderMt.MatchFinder = &p->matchFinderBase; - #endif - - { - CLzmaEncProps props; - LzmaEncProps_Init(&props); - LzmaEnc_SetProps(p, &props); - } - - #ifndef LZMA_LOG_BSR - LzmaEnc_FastPosInit(p->g_FastPos); - #endif - - LzmaEnc_InitPriceTables(p->ProbPrices); - p->litProbs = NULL; - p->saveState.litProbs = NULL; - -} - -CLzmaEncHandle LzmaEnc_Create(ISzAllocPtr alloc) -{ - void *p; - p = ISzAlloc_Alloc(alloc, sizeof(CLzmaEnc)); - if (p) - LzmaEnc_Construct((CLzmaEnc *)p); - return p; -} - -void LzmaEnc_FreeLits(CLzmaEnc *p, ISzAllocPtr alloc) -{ - ISzAlloc_Free(alloc, p->litProbs); - ISzAlloc_Free(alloc, p->saveState.litProbs); - p->litProbs = NULL; - p->saveState.litProbs = NULL; -} - -void LzmaEnc_Destruct(CLzmaEnc *p, ISzAllocPtr alloc, ISzAllocPtr allocBig) -{ - #ifndef _7ZIP_ST - MatchFinderMt_Destruct(&p->matchFinderMt, allocBig); - #endif - - MatchFinder_Free(&p->matchFinderBase, allocBig); - LzmaEnc_FreeLits(p, alloc); - RangeEnc_Free(&p->rc, alloc); -} - -void LzmaEnc_Destroy(CLzmaEncHandle p, ISzAllocPtr alloc, ISzAllocPtr allocBig) -{ - LzmaEnc_Destruct((CLzmaEnc *)p, alloc, allocBig); - ISzAlloc_Free(alloc, p); -} - - -static SRes LzmaEnc_CodeOneBlock(CLzmaEnc *p, UInt32 maxPackSize, UInt32 maxUnpackSize) -{ - UInt32 nowPos32, startPos32; - if (p->needInit) - { - p->matchFinder.Init(p->matchFinderObj); - p->needInit = 0; - } - - if (p->finished) - return p->result; - RINOK(CheckErrors(p)); - - nowPos32 = (UInt32)p->nowPos64; - startPos32 = nowPos32; - - if (p->nowPos64 == 0) - { - unsigned numPairs; - Byte curByte; - if (p->matchFinder.GetNumAvailableBytes(p->matchFinderObj) == 0) - return Flush(p, nowPos32); - ReadMatchDistances(p, &numPairs); - RangeEnc_EncodeBit_0(&p->rc, &p->isMatch[kState_Start][0]); - // p->state = kLiteralNextStates[p->state]; - curByte = *(p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - p->additionalOffset); - LitEnc_Encode(&p->rc, p->litProbs, curByte); - p->additionalOffset--; - nowPos32++; - } - - if (p->matchFinder.GetNumAvailableBytes(p->matchFinderObj) != 0) - - for (;;) - { - UInt32 dist; - unsigned len, posState; - UInt32 range, ttt, newBound; - CLzmaProb *probs; - - if (p->fastMode) - len = GetOptimumFast(p); - else - { - unsigned oci = p->optCur; - if (p->optEnd == oci) - len = GetOptimum(p, nowPos32); - else - { - const COptimal *opt = &p->opt[oci]; - len = opt->len; - p->backRes = opt->dist; - p->optCur = oci + 1; - } - } - - posState = (unsigned)nowPos32 & p->pbMask; - range = p->rc.range; - probs = &p->isMatch[p->state][posState]; - - RC_BIT_PRE(&p->rc, probs) - - dist = p->backRes; - - #ifdef SHOW_STAT2 - printf("\n pos = %6X, len = %3u pos = %6u", nowPos32, len, dist); - #endif - - if (dist == MARK_LIT) - { - Byte curByte; - const Byte *data; - unsigned state; - - RC_BIT_0(&p->rc, probs); - p->rc.range = range; - data = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - p->additionalOffset; - probs = LIT_PROBS(nowPos32, *(data - 1)); - curByte = *data; - state = p->state; - p->state = kLiteralNextStates[state]; - if (IsLitState(state)) - LitEnc_Encode(&p->rc, probs, curByte); - else - LitEnc_EncodeMatched(&p->rc, probs, curByte, *(data - p->reps[0])); - } - else - { - RC_BIT_1(&p->rc, probs); - probs = &p->isRep[p->state]; - RC_BIT_PRE(&p->rc, probs) - - if (dist < LZMA_NUM_REPS) - { - RC_BIT_1(&p->rc, probs); - probs = &p->isRepG0[p->state]; - RC_BIT_PRE(&p->rc, probs) - if (dist == 0) - { - RC_BIT_0(&p->rc, probs); - probs = &p->isRep0Long[p->state][posState]; - RC_BIT_PRE(&p->rc, probs) - if (len != 1) - { - RC_BIT_1_BASE(&p->rc, probs); - } - else - { - RC_BIT_0_BASE(&p->rc, probs); - p->state = kShortRepNextStates[p->state]; - } - } - else - { - RC_BIT_1(&p->rc, probs); - probs = &p->isRepG1[p->state]; - RC_BIT_PRE(&p->rc, probs) - if (dist == 1) - { - RC_BIT_0_BASE(&p->rc, probs); - dist = p->reps[1]; - } - else - { - RC_BIT_1(&p->rc, probs); - probs = &p->isRepG2[p->state]; - RC_BIT_PRE(&p->rc, probs) - if (dist == 2) - { - RC_BIT_0_BASE(&p->rc, probs); - dist = p->reps[2]; - } - else - { - RC_BIT_1_BASE(&p->rc, probs); - dist = p->reps[3]; - p->reps[3] = p->reps[2]; - } - p->reps[2] = p->reps[1]; - } - p->reps[1] = p->reps[0]; - p->reps[0] = dist; - } - - RC_NORM(&p->rc) - - p->rc.range = range; - - if (len != 1) - { - LenEnc_Encode(&p->repLenProbs, &p->rc, len - LZMA_MATCH_LEN_MIN, posState); - --p->repLenEncCounter; - p->state = kRepNextStates[p->state]; - } - } - else - { - unsigned posSlot; - RC_BIT_0(&p->rc, probs); - p->rc.range = range; - p->state = kMatchNextStates[p->state]; - - LenEnc_Encode(&p->lenProbs, &p->rc, len - LZMA_MATCH_LEN_MIN, posState); - // --p->lenEnc.counter; - - dist -= LZMA_NUM_REPS; - p->reps[3] = p->reps[2]; - p->reps[2] = p->reps[1]; - p->reps[1] = p->reps[0]; - p->reps[0] = dist + 1; - - p->matchPriceCount++; - GetPosSlot(dist, posSlot); - // RcTree_Encode_PosSlot(&p->rc, p->posSlotEncoder[GetLenToPosState(len)], posSlot); - { - UInt32 sym = (UInt32)posSlot + (1 << kNumPosSlotBits); - range = p->rc.range; - probs = p->posSlotEncoder[GetLenToPosState(len)]; - do - { - CLzmaProb *prob = probs + (sym >> kNumPosSlotBits); - UInt32 bit = (sym >> (kNumPosSlotBits - 1)) & 1; - sym <<= 1; - RC_BIT(&p->rc, prob, bit); - } - while (sym < (1 << kNumPosSlotBits * 2)); - p->rc.range = range; - } - - if (dist >= kStartPosModelIndex) - { - unsigned footerBits = ((posSlot >> 1) - 1); - - if (dist < kNumFullDistances) - { - unsigned base = ((2 | (posSlot & 1)) << footerBits); - RcTree_ReverseEncode(&p->rc, p->posEncoders + base, footerBits, (unsigned)(dist /* - base */)); - } - else - { - UInt32 pos2 = (dist | 0xF) << (32 - footerBits); - range = p->rc.range; - // RangeEnc_EncodeDirectBits(&p->rc, posReduced >> kNumAlignBits, footerBits - kNumAlignBits); - /* - do - { - range >>= 1; - p->rc.low += range & (0 - ((dist >> --footerBits) & 1)); - RC_NORM(&p->rc) - } - while (footerBits > kNumAlignBits); - */ - do - { - range >>= 1; - p->rc.low += range & (0 - (pos2 >> 31)); - pos2 += pos2; - RC_NORM(&p->rc) - } - while (pos2 != 0xF0000000); - - - // RcTree_ReverseEncode(&p->rc, p->posAlignEncoder, kNumAlignBits, posReduced & kAlignMask); - - { - unsigned m = 1; - unsigned bit; - bit = dist & 1; dist >>= 1; RC_BIT(&p->rc, p->posAlignEncoder + m, bit); m = (m << 1) + bit; - bit = dist & 1; dist >>= 1; RC_BIT(&p->rc, p->posAlignEncoder + m, bit); m = (m << 1) + bit; - bit = dist & 1; dist >>= 1; RC_BIT(&p->rc, p->posAlignEncoder + m, bit); m = (m << 1) + bit; - bit = dist & 1; RC_BIT(&p->rc, p->posAlignEncoder + m, bit); - p->rc.range = range; - // p->alignPriceCount++; - } - } - } - } - } - - nowPos32 += (UInt32)len; - p->additionalOffset -= len; - - if (p->additionalOffset == 0) - { - UInt32 processed; - - if (!p->fastMode) - { - /* - if (p->alignPriceCount >= 16) // kAlignTableSize - FillAlignPrices(p); - if (p->matchPriceCount >= 128) - FillDistancesPrices(p); - if (p->lenEnc.counter <= 0) - LenPriceEnc_UpdateTables(&p->lenEnc, 1 << p->pb, &p->lenProbs, p->ProbPrices); - */ - if (p->matchPriceCount >= 64) - { - FillAlignPrices(p); - // { int y; for (y = 0; y < 100; y++) { - FillDistancesPrices(p); - // }} - LenPriceEnc_UpdateTables(&p->lenEnc, 1 << p->pb, &p->lenProbs, p->ProbPrices); - } - if (p->repLenEncCounter <= 0) - { - p->repLenEncCounter = REP_LEN_COUNT; - LenPriceEnc_UpdateTables(&p->repLenEnc, 1 << p->pb, &p->repLenProbs, p->ProbPrices); - } - } - - if (p->matchFinder.GetNumAvailableBytes(p->matchFinderObj) == 0) - break; - processed = nowPos32 - startPos32; - - if (maxPackSize) - { - if (processed + kNumOpts + 300 >= maxUnpackSize - || RangeEnc_GetProcessed_sizet(&p->rc) + kPackReserve >= maxPackSize) - break; - } - else if (processed >= (1 << 17)) - { - p->nowPos64 += nowPos32 - startPos32; - return CheckErrors(p); - } - } - } - - p->nowPos64 += nowPos32 - startPos32; - return Flush(p, nowPos32); -} - - - -#define kBigHashDicLimit ((UInt32)1 << 24) - -static SRes LzmaEnc_Alloc(CLzmaEnc *p, UInt32 keepWindowSize, ISzAllocPtr alloc, ISzAllocPtr allocBig) -{ - UInt32 beforeSize = kNumOpts; - if (!RangeEnc_Alloc(&p->rc, alloc)) - return SZ_ERROR_MEM; - - #ifndef _7ZIP_ST - p->mtMode = (p->multiThread && !p->fastMode && (p->matchFinderBase.btMode != 0)); - #endif - - { - unsigned lclp = p->lc + p->lp; - if (!p->litProbs || !p->saveState.litProbs || p->lclp != lclp) - { - LzmaEnc_FreeLits(p, alloc); - p->litProbs = (CLzmaProb *)ISzAlloc_Alloc(alloc, ((UInt32)0x300 << lclp) * sizeof(CLzmaProb)); - p->saveState.litProbs = (CLzmaProb *)ISzAlloc_Alloc(alloc, ((UInt32)0x300 << lclp) * sizeof(CLzmaProb)); - if (!p->litProbs || !p->saveState.litProbs) - { - LzmaEnc_FreeLits(p, alloc); - return SZ_ERROR_MEM; - } - p->lclp = lclp; - } - } - - p->matchFinderBase.bigHash = (Byte)(p->dictSize > kBigHashDicLimit ? 1 : 0); - - if (beforeSize + p->dictSize < keepWindowSize) - beforeSize = keepWindowSize - p->dictSize; - - #ifndef _7ZIP_ST - if (p->mtMode) - { - RINOK(MatchFinderMt_Create(&p->matchFinderMt, p->dictSize, beforeSize, p->numFastBytes, - LZMA_MATCH_LEN_MAX - + 1 /* 18.04 */ - , allocBig)); - p->matchFinderObj = &p->matchFinderMt; - p->matchFinderBase.bigHash = (Byte)( - (p->dictSize > kBigHashDicLimit && p->matchFinderBase.hashMask >= 0xFFFFFF) ? 1 : 0); - MatchFinderMt_CreateVTable(&p->matchFinderMt, &p->matchFinder); - } - else - #endif - { - if (!MatchFinder_Create(&p->matchFinderBase, p->dictSize, beforeSize, p->numFastBytes, LZMA_MATCH_LEN_MAX, allocBig)) - return SZ_ERROR_MEM; - p->matchFinderObj = &p->matchFinderBase; - MatchFinder_CreateVTable(&p->matchFinderBase, &p->matchFinder); - } - - return SZ_OK; -} - -void LzmaEnc_Init(CLzmaEnc *p) -{ - unsigned i; - p->state = 0; - p->reps[0] = - p->reps[1] = - p->reps[2] = - p->reps[3] = 1; - - RangeEnc_Init(&p->rc); - - for (i = 0; i < (1 << kNumAlignBits); i++) - p->posAlignEncoder[i] = kProbInitValue; - - for (i = 0; i < kNumStates; i++) - { - unsigned j; - for (j = 0; j < LZMA_NUM_PB_STATES_MAX; j++) - { - p->isMatch[i][j] = kProbInitValue; - p->isRep0Long[i][j] = kProbInitValue; - } - p->isRep[i] = kProbInitValue; - p->isRepG0[i] = kProbInitValue; - p->isRepG1[i] = kProbInitValue; - p->isRepG2[i] = kProbInitValue; - } - - { - for (i = 0; i < kNumLenToPosStates; i++) - { - CLzmaProb *probs = p->posSlotEncoder[i]; - unsigned j; - for (j = 0; j < (1 << kNumPosSlotBits); j++) - probs[j] = kProbInitValue; - } - } - { - for (i = 0; i < kNumFullDistances; i++) - p->posEncoders[i] = kProbInitValue; - } - - { - UInt32 num = (UInt32)0x300 << (p->lp + p->lc); - UInt32 k; - CLzmaProb *probs = p->litProbs; - for (k = 0; k < num; k++) - probs[k] = kProbInitValue; - } - - - LenEnc_Init(&p->lenProbs); - LenEnc_Init(&p->repLenProbs); - - p->optEnd = 0; - p->optCur = 0; - - { - for (i = 0; i < kNumOpts; i++) - p->opt[i].price = kInfinityPrice; - } - - p->additionalOffset = 0; - - p->pbMask = (1 << p->pb) - 1; - p->lpMask = ((UInt32)0x100 << p->lp) - ((unsigned)0x100 >> p->lc); -} - - -void LzmaEnc_InitPrices(CLzmaEnc *p) -{ - if (!p->fastMode) - { - FillDistancesPrices(p); - FillAlignPrices(p); - } - - p->lenEnc.tableSize = - p->repLenEnc.tableSize = - p->numFastBytes + 1 - LZMA_MATCH_LEN_MIN; - - p->repLenEncCounter = REP_LEN_COUNT; - - LenPriceEnc_UpdateTables(&p->lenEnc, 1 << p->pb, &p->lenProbs, p->ProbPrices); - LenPriceEnc_UpdateTables(&p->repLenEnc, 1 << p->pb, &p->repLenProbs, p->ProbPrices); -} - -static SRes LzmaEnc_AllocAndInit(CLzmaEnc *p, UInt32 keepWindowSize, ISzAllocPtr alloc, ISzAllocPtr allocBig) -{ - unsigned i; - for (i = kEndPosModelIndex / 2; i < kDicLogSizeMax; i++) - if (p->dictSize <= ((UInt32)1 << i)) - break; - p->distTableSize = i * 2; - - p->finished = False; - p->result = SZ_OK; - RINOK(LzmaEnc_Alloc(p, keepWindowSize, alloc, allocBig)); - LzmaEnc_Init(p); - LzmaEnc_InitPrices(p); - p->nowPos64 = 0; - return SZ_OK; -} - -static SRes LzmaEnc_Prepare(CLzmaEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStream, - ISzAllocPtr alloc, ISzAllocPtr allocBig) -{ - CLzmaEnc *p = (CLzmaEnc *)pp; - p->matchFinderBase.stream = inStream; - p->needInit = 1; - p->rc.outStream = outStream; - return LzmaEnc_AllocAndInit(p, 0, alloc, allocBig); -} - -SRes LzmaEnc_PrepareForLzma2(CLzmaEncHandle pp, - ISeqInStream *inStream, UInt32 keepWindowSize, - ISzAllocPtr alloc, ISzAllocPtr allocBig) -{ - CLzmaEnc *p = (CLzmaEnc *)pp; - p->matchFinderBase.stream = inStream; - p->needInit = 1; - return LzmaEnc_AllocAndInit(p, keepWindowSize, alloc, allocBig); -} - -static void LzmaEnc_SetInputBuf(CLzmaEnc *p, const Byte *src, SizeT srcLen) -{ - p->matchFinderBase.directInput = 1; - p->matchFinderBase.bufferBase = (Byte *)src; - p->matchFinderBase.directInputRem = srcLen; -} - -SRes LzmaEnc_MemPrepare(CLzmaEncHandle pp, const Byte *src, SizeT srcLen, - UInt32 keepWindowSize, ISzAllocPtr alloc, ISzAllocPtr allocBig) -{ - CLzmaEnc *p = (CLzmaEnc *)pp; - LzmaEnc_SetInputBuf(p, src, srcLen); - p->needInit = 1; - - LzmaEnc_SetDataSize(pp, srcLen); - return LzmaEnc_AllocAndInit(p, keepWindowSize, alloc, allocBig); -} - -void LzmaEnc_Finish(CLzmaEncHandle pp) -{ - #ifndef _7ZIP_ST - CLzmaEnc *p = (CLzmaEnc *)pp; - if (p->mtMode) - MatchFinderMt_ReleaseStream(&p->matchFinderMt); - #else - UNUSED_VAR(pp); - #endif -} - - -typedef struct -{ - ISeqOutStream vt; - Byte *data; - SizeT rem; - BoolInt overflow; -} CLzmaEnc_SeqOutStreamBuf; - -static size_t SeqOutStreamBuf_Write(const ISeqOutStream *pp, const void *data, size_t size) -{ - CLzmaEnc_SeqOutStreamBuf *p = CONTAINER_FROM_VTBL(pp, CLzmaEnc_SeqOutStreamBuf, vt); - if (p->rem < size) - { - size = p->rem; - p->overflow = True; - } - memcpy(p->data, data, size); - p->rem -= size; - p->data += size; - return size; -} - - -UInt32 LzmaEnc_GetNumAvailableBytes(CLzmaEncHandle pp) -{ - const CLzmaEnc *p = (CLzmaEnc *)pp; - return p->matchFinder.GetNumAvailableBytes(p->matchFinderObj); -} - - -const Byte *LzmaEnc_GetCurBuf(CLzmaEncHandle pp) -{ - const CLzmaEnc *p = (CLzmaEnc *)pp; - return p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - p->additionalOffset; -} - - -SRes LzmaEnc_CodeOneMemBlock(CLzmaEncHandle pp, BoolInt reInit, - Byte *dest, size_t *destLen, UInt32 desiredPackSize, UInt32 *unpackSize) -{ - CLzmaEnc *p = (CLzmaEnc *)pp; - UInt64 nowPos64; - SRes res; - CLzmaEnc_SeqOutStreamBuf outStream; - - outStream.vt.Write = SeqOutStreamBuf_Write; - outStream.data = dest; - outStream.rem = *destLen; - outStream.overflow = False; - - p->writeEndMark = False; - p->finished = False; - p->result = SZ_OK; - - if (reInit) - LzmaEnc_Init(p); - LzmaEnc_InitPrices(p); - - nowPos64 = p->nowPos64; - RangeEnc_Init(&p->rc); - p->rc.outStream = &outStream.vt; - - if (desiredPackSize == 0) - return SZ_ERROR_OUTPUT_EOF; - - res = LzmaEnc_CodeOneBlock(p, desiredPackSize, *unpackSize); - - *unpackSize = (UInt32)(p->nowPos64 - nowPos64); - *destLen -= outStream.rem; - if (outStream.overflow) - return SZ_ERROR_OUTPUT_EOF; - - return res; -} - - -static SRes LzmaEnc_Encode2(CLzmaEnc *p, ICompressProgress *progress) -{ - SRes res = SZ_OK; - - #ifndef _7ZIP_ST - Byte allocaDummy[0x300]; - allocaDummy[0] = 0; - allocaDummy[1] = allocaDummy[0]; - #endif - - for (;;) - { - res = LzmaEnc_CodeOneBlock(p, 0, 0); - if (res != SZ_OK || p->finished) - break; - if (progress) - { - res = ICompressProgress_Progress(progress, p->nowPos64, RangeEnc_GetProcessed(&p->rc)); - if (res != SZ_OK) - { - res = SZ_ERROR_PROGRESS; - break; - } - } - } - - LzmaEnc_Finish(p); - - /* - if (res == SZ_OK && !Inline_MatchFinder_IsFinishedOK(&p->matchFinderBase)) - res = SZ_ERROR_FAIL; - } - */ - - return res; -} - - -SRes LzmaEnc_Encode(CLzmaEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStream, ICompressProgress *progress, - ISzAllocPtr alloc, ISzAllocPtr allocBig) -{ - RINOK(LzmaEnc_Prepare(pp, outStream, inStream, alloc, allocBig)); - return LzmaEnc_Encode2((CLzmaEnc *)pp, progress); -} - - -SRes LzmaEnc_WriteProperties(CLzmaEncHandle pp, Byte *props, SizeT *size) -{ - CLzmaEnc *p = (CLzmaEnc *)pp; - unsigned i; - UInt32 dictSize = p->dictSize; - if (*size < LZMA_PROPS_SIZE) - return SZ_ERROR_PARAM; - *size = LZMA_PROPS_SIZE; - props[0] = (Byte)((p->pb * 5 + p->lp) * 9 + p->lc); - - if (dictSize >= ((UInt32)1 << 22)) - { - UInt32 kDictMask = ((UInt32)1 << 20) - 1; - if (dictSize < (UInt32)0xFFFFFFFF - kDictMask) - dictSize = (dictSize + kDictMask) & ~kDictMask; - } - else for (i = 11; i <= 30; i++) - { - if (dictSize <= ((UInt32)2 << i)) { dictSize = (2 << i); break; } - if (dictSize <= ((UInt32)3 << i)) { dictSize = (3 << i); break; } - } - - for (i = 0; i < 4; i++) - props[1 + i] = (Byte)(dictSize >> (8 * i)); - return SZ_OK; -} - - -unsigned LzmaEnc_IsWriteEndMark(CLzmaEncHandle pp) -{ - return ((CLzmaEnc *)pp)->writeEndMark; -} - - -SRes LzmaEnc_MemEncode(CLzmaEncHandle pp, Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, - int writeEndMark, ICompressProgress *progress, ISzAllocPtr alloc, ISzAllocPtr allocBig) -{ - SRes res; - CLzmaEnc *p = (CLzmaEnc *)pp; - - CLzmaEnc_SeqOutStreamBuf outStream; - - outStream.vt.Write = SeqOutStreamBuf_Write; - outStream.data = dest; - outStream.rem = *destLen; - outStream.overflow = False; - - p->writeEndMark = writeEndMark; - p->rc.outStream = &outStream.vt; - - res = LzmaEnc_MemPrepare(pp, src, srcLen, 0, alloc, allocBig); - - if (res == SZ_OK) - { - res = LzmaEnc_Encode2(p, progress); - if (res == SZ_OK && p->nowPos64 != srcLen) - res = SZ_ERROR_FAIL; - } - - *destLen -= outStream.rem; - if (outStream.overflow) - return SZ_ERROR_OUTPUT_EOF; - return res; -} - - -SRes LzmaEncode(Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, - const CLzmaEncProps *props, Byte *propsEncoded, SizeT *propsSize, int writeEndMark, - ICompressProgress *progress, ISzAllocPtr alloc, ISzAllocPtr allocBig) -{ - CLzmaEnc *p = (CLzmaEnc *)LzmaEnc_Create(alloc); - SRes res; - if (!p) - return SZ_ERROR_MEM; - - res = LzmaEnc_SetProps(p, props); - if (res == SZ_OK) - { - res = LzmaEnc_WriteProperties(p, propsEncoded, propsSize); - if (res == SZ_OK) - res = LzmaEnc_MemEncode(p, dest, destLen, src, srcLen, - writeEndMark, progress, alloc, allocBig); - } - - LzmaEnc_Destroy(p, alloc, allocBig); - return res; -} diff --git a/gframe/lzma/LzmaEnc.h b/gframe/lzma/LzmaEnc.h deleted file mode 100644 index 9194ee576..000000000 --- a/gframe/lzma/LzmaEnc.h +++ /dev/null @@ -1,76 +0,0 @@ -/* LzmaEnc.h -- LZMA Encoder -2017-07-27 : Igor Pavlov : Public domain */ - -#ifndef __LZMA_ENC_H -#define __LZMA_ENC_H - -#include "7zTypes.h" - -EXTERN_C_BEGIN - -#define LZMA_PROPS_SIZE 5 - -typedef struct _CLzmaEncProps -{ - int level; /* 0 <= level <= 9 */ - UInt32 dictSize; /* (1 << 12) <= dictSize <= (1 << 27) for 32-bit version - (1 << 12) <= dictSize <= (3 << 29) for 64-bit version - default = (1 << 24) */ - int lc; /* 0 <= lc <= 8, default = 3 */ - int lp; /* 0 <= lp <= 4, default = 0 */ - int pb; /* 0 <= pb <= 4, default = 2 */ - int algo; /* 0 - fast, 1 - normal, default = 1 */ - int fb; /* 5 <= fb <= 273, default = 32 */ - int btMode; /* 0 - hashChain Mode, 1 - binTree mode - normal, default = 1 */ - int numHashBytes; /* 2, 3 or 4, default = 4 */ - UInt32 mc; /* 1 <= mc <= (1 << 30), default = 32 */ - unsigned writeEndMark; /* 0 - do not write EOPM, 1 - write EOPM, default = 0 */ - int numThreads; /* 1 or 2, default = 2 */ - - UInt64 reduceSize; /* estimated size of data that will be compressed. default = (UInt64)(Int64)-1. - Encoder uses this value to reduce dictionary size */ -} CLzmaEncProps; - -void LzmaEncProps_Init(CLzmaEncProps *p); -void LzmaEncProps_Normalize(CLzmaEncProps *p); -UInt32 LzmaEncProps_GetDictSize(const CLzmaEncProps *props2); - - -/* ---------- CLzmaEncHandle Interface ---------- */ - -/* LzmaEnc* functions can return the following exit codes: -SRes: - SZ_OK - OK - SZ_ERROR_MEM - Memory allocation error - SZ_ERROR_PARAM - Incorrect paramater in props - SZ_ERROR_WRITE - ISeqOutStream write callback error - SZ_ERROR_OUTPUT_EOF - output buffer overflow - version with (Byte *) output - SZ_ERROR_PROGRESS - some break from progress callback - SZ_ERROR_THREAD - error in multithreading functions (only for Mt version) -*/ - -typedef void * CLzmaEncHandle; - -CLzmaEncHandle LzmaEnc_Create(ISzAllocPtr alloc); -void LzmaEnc_Destroy(CLzmaEncHandle p, ISzAllocPtr alloc, ISzAllocPtr allocBig); - -SRes LzmaEnc_SetProps(CLzmaEncHandle p, const CLzmaEncProps *props); -void LzmaEnc_SetDataSize(CLzmaEncHandle p, UInt64 expectedDataSiize); -SRes LzmaEnc_WriteProperties(CLzmaEncHandle p, Byte *properties, SizeT *size); -unsigned LzmaEnc_IsWriteEndMark(CLzmaEncHandle p); - -SRes LzmaEnc_Encode(CLzmaEncHandle p, ISeqOutStream *outStream, ISeqInStream *inStream, - ICompressProgress *progress, ISzAllocPtr alloc, ISzAllocPtr allocBig); -SRes LzmaEnc_MemEncode(CLzmaEncHandle p, Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, - int writeEndMark, ICompressProgress *progress, ISzAllocPtr alloc, ISzAllocPtr allocBig); - - -/* ---------- One Call Interface ---------- */ - -SRes LzmaEncode(Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, - const CLzmaEncProps *props, Byte *propsEncoded, SizeT *propsSize, int writeEndMark, - ICompressProgress *progress, ISzAllocPtr alloc, ISzAllocPtr allocBig); - -EXTERN_C_END - -#endif diff --git a/gframe/lzma/LzmaLib.c b/gframe/lzma/LzmaLib.c deleted file mode 100644 index 706e9e58c..000000000 --- a/gframe/lzma/LzmaLib.c +++ /dev/null @@ -1,40 +0,0 @@ -/* LzmaLib.c -- LZMA library wrapper -2015-06-13 : Igor Pavlov : Public domain */ - -#include "Alloc.h" -#include "LzmaDec.h" -#include "LzmaEnc.h" -#include "LzmaLib.h" - -MY_STDAPI LzmaCompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t srcLen, - unsigned char *outProps, size_t *outPropsSize, - int level, /* 0 <= level <= 9, default = 5 */ - unsigned dictSize, /* use (1 << N) or (3 << N). 4 KB < dictSize <= 128 MB */ - int lc, /* 0 <= lc <= 8, default = 3 */ - int lp, /* 0 <= lp <= 4, default = 0 */ - int pb, /* 0 <= pb <= 4, default = 2 */ - int fb, /* 5 <= fb <= 273, default = 32 */ - int numThreads /* 1 or 2, default = 2 */ -) -{ - CLzmaEncProps props; - LzmaEncProps_Init(&props); - props.level = level; - props.dictSize = dictSize; - props.lc = lc; - props.lp = lp; - props.pb = pb; - props.fb = fb; - props.numThreads = numThreads; - - return LzmaEncode(dest, destLen, src, srcLen, &props, outProps, outPropsSize, 0, - NULL, &g_Alloc, &g_Alloc); -} - - -MY_STDAPI LzmaUncompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t *srcLen, - const unsigned char *props, size_t propsSize) -{ - ELzmaStatus status; - return LzmaDecode(dest, destLen, src, srcLen, props, (unsigned)propsSize, LZMA_FINISH_ANY, &status, &g_Alloc); -} diff --git a/gframe/lzma/LzmaLib.h b/gframe/lzma/LzmaLib.h deleted file mode 100644 index 88fa87d35..000000000 --- a/gframe/lzma/LzmaLib.h +++ /dev/null @@ -1,131 +0,0 @@ -/* LzmaLib.h -- LZMA library interface -2013-01-18 : Igor Pavlov : Public domain */ - -#ifndef __LZMA_LIB_H -#define __LZMA_LIB_H - -#include "7zTypes.h" - -EXTERN_C_BEGIN - -#define MY_STDAPI int MY_STD_CALL - -#define LZMA_PROPS_SIZE 5 - -/* -RAM requirements for LZMA: - for compression: (dictSize * 11.5 + 6 MB) + state_size - for decompression: dictSize + state_size - state_size = (4 + (1.5 << (lc + lp))) KB - by default (lc=3, lp=0), state_size = 16 KB. - -LZMA properties (5 bytes) format - Offset Size Description - 0 1 lc, lp and pb in encoded form. - 1 4 dictSize (little endian). -*/ - -/* -LzmaCompress ------------- - -outPropsSize - - In: the pointer to the size of outProps buffer; *outPropsSize = LZMA_PROPS_SIZE = 5. - Out: the pointer to the size of written properties in outProps buffer; *outPropsSize = LZMA_PROPS_SIZE = 5. - - LZMA Encoder will use defult values for any parameter, if it is - -1 for any from: level, loc, lp, pb, fb, numThreads - 0 for dictSize - -level - compression level: 0 <= level <= 9; - - level dictSize algo fb - 0: 16 KB 0 32 - 1: 64 KB 0 32 - 2: 256 KB 0 32 - 3: 1 MB 0 32 - 4: 4 MB 0 32 - 5: 16 MB 1 32 - 6: 32 MB 1 32 - 7+: 64 MB 1 64 - - The default value for "level" is 5. - - algo = 0 means fast method - algo = 1 means normal method - -dictSize - The dictionary size in bytes. The maximum value is - 128 MB = (1 << 27) bytes for 32-bit version - 1 GB = (1 << 30) bytes for 64-bit version - The default value is 16 MB = (1 << 24) bytes. - It's recommended to use the dictionary that is larger than 4 KB and - that can be calculated as (1 << N) or (3 << N) sizes. - -lc - The number of literal context bits (high bits of previous literal). - It can be in the range from 0 to 8. The default value is 3. - Sometimes lc=4 gives the gain for big files. - -lp - The number of literal pos bits (low bits of current position for literals). - It can be in the range from 0 to 4. The default value is 0. - The lp switch is intended for periodical data when the period is equal to 2^lp. - For example, for 32-bit (4 bytes) periodical data you can use lp=2. Often it's - better to set lc=0, if you change lp switch. - -pb - The number of pos bits (low bits of current position). - It can be in the range from 0 to 4. The default value is 2. - The pb switch is intended for periodical data when the period is equal 2^pb. - -fb - Word size (the number of fast bytes). - It can be in the range from 5 to 273. The default value is 32. - Usually, a big number gives a little bit better compression ratio and - slower compression process. - -numThreads - The number of thereads. 1 or 2. The default value is 2. - Fast mode (algo = 0) can use only 1 thread. - -Out: - destLen - processed output size -Returns: - SZ_OK - OK - SZ_ERROR_MEM - Memory allocation error - SZ_ERROR_PARAM - Incorrect paramater - SZ_ERROR_OUTPUT_EOF - output buffer overflow - SZ_ERROR_THREAD - errors in multithreading functions (only for Mt version) -*/ - -MY_STDAPI LzmaCompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t srcLen, - unsigned char *outProps, size_t *outPropsSize, /* *outPropsSize must be = 5 */ - int level, /* 0 <= level <= 9, default = 5 */ - unsigned dictSize, /* default = (1 << 24) */ - int lc, /* 0 <= lc <= 8, default = 3 */ - int lp, /* 0 <= lp <= 4, default = 0 */ - int pb, /* 0 <= pb <= 4, default = 2 */ - int fb, /* 5 <= fb <= 273, default = 32 */ - int numThreads /* 1 or 2, default = 2 */ - ); - -/* -LzmaUncompress --------------- -In: - dest - output data - destLen - output data size - src - input data - srcLen - input data size -Out: - destLen - processed output size - srcLen - processed input size -Returns: - SZ_OK - OK - SZ_ERROR_DATA - Data error - SZ_ERROR_MEM - Memory allocation arror - SZ_ERROR_UNSUPPORTED - Unsupported properties - SZ_ERROR_INPUT_EOF - it needs more bytes in input buffer (src) -*/ - -MY_STDAPI LzmaUncompress(unsigned char *dest, size_t *destLen, const unsigned char *src, SizeT *srcLen, - const unsigned char *props, size_t propsSize); - -EXTERN_C_END - -#endif diff --git a/gframe/lzma/Precomp.h b/gframe/lzma/Precomp.h deleted file mode 100644 index e8ff8b40e..000000000 --- a/gframe/lzma/Precomp.h +++ /dev/null @@ -1,10 +0,0 @@ -/* Precomp.h -- StdAfx -2013-11-12 : Igor Pavlov : Public domain */ - -#ifndef __7Z_PRECOMP_H -#define __7Z_PRECOMP_H - -#include "Compiler.h" -/* #include "7zTypes.h" */ - -#endif diff --git a/gframe/lzma/lib/arm64-v8a/libclzma.a b/gframe/lzma/lib/arm64-v8a/libclzma.a deleted file mode 100644 index e5d4e407ce99dd6ccb6bc2dbdbb007ce9b5643e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 598136 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

ysK#x4?PKFK}L9y+>l6yWWBGXPujW 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

~NJ`ms`ID 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 KoT${PB%UMmm!voDbIqIEpqSHEa+$z{{S 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

D0!RZL-EN?uaMSdzxho)uPUUtLrmrFsSt&4lu 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

n^dyc#iw$KOevwAj5X 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≶Epoj<`{4_2Hac&Zk_=*-+)_Sz#VPC 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

lk37yls8LwYj`i^ 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 #include -#include "lzma/LzmaLib.h" +#include #include "common.h" #include "utils.h" #include "file_stream.h" @@ -69,10 +69,20 @@ void Replay::EndRecord(size_t size) { } pheader.base.datasize = static_cast(replay_data.size() - sizeof(ExtendedReplayHeader)); pheader.base.flag |= REPLAY_COMPRESSED; - size_t propsize = 5; - auto comp_size = size; + size_t comp_size = 0; comp_data.resize(replay_data.size() * 2); - LzmaCompress(comp_data.data(), &comp_size, replay_data.data() + sizeof(ExtendedReplayHeader), pheader.base.datasize, pheader.base.props, &propsize, 5, 1 << 24, 3, 0, 2, 32, 1); + + lzma_options_lzma opts; + lzma_lzma_preset(&opts, 5); + opts.dict_size = 1 << 24; + lzma_filter filters[]{ + { LZMA_FILTER_LZMA1, &opts }, + { LZMA_VLI_UNKNOWN, nullptr}, + }; + + lzma_properties_encode(filters, pheader.base.props); + lzma_ret ret; + ret = lzma_raw_buffer_encode(filters, nullptr, replay_data.data() + sizeof(ExtendedReplayHeader), pheader.base.datasize, comp_data.data(), &comp_size, comp_data.size()); comp_data.resize(comp_size); is_recording = false; } @@ -99,8 +109,17 @@ bool Replay::OpenReplayFromBuffer(std::vector&& contents) { size_t replay_size = pheader.base.datasize; auto comp_size = contents.size() - header_size; replay_data.resize(pheader.base.datasize); - if(LzmaUncompress(replay_data.data(), &replay_size, contents.data() + header_size, &comp_size, pheader.base.props, 5) != SZ_OK) + replay_data.resize(replay_size); + lzma_filter filters[]{ + { LZMA_FILTER_LZMA1, nullptr }, + { LZMA_VLI_UNKNOWN, nullptr}, + }; + if(lzma_properties_decode(filters, nullptr, pheader.base.props, 5) != LZMA_OK) return false; + size_t in_pos = 0; + size_t out_pos = 0; + lzma_raw_buffer_decode(filters, nullptr, contents.data() + header_size, &in_pos, comp_size, replay_data.data(), &out_pos, replay_size); + free(filters[0].options); } else { contents.erase(contents.begin(), contents.begin() + header_size); replay_data = std::move(contents); From c8da513ebf1bfd15d41b9e8e6c71b96335900698 Mon Sep 17 00:00:00 2001 From: Edoardo Lolletti Date: Tue, 28 Jun 2022 23:33:00 +0200 Subject: [PATCH 2/2] Update decompressing with liblzma Use lzma_alone_decoder that allows decompressing streams without an end of stream block. This requires feeding liblzma first a dummy lzma header so that it won't check for the eos block. --- gframe/replay.cpp | 87 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 76 insertions(+), 11 deletions(-) diff --git a/gframe/replay.cpp b/gframe/replay.cpp index 54e689199..949036488 100644 --- a/gframe/replay.cpp +++ b/gframe/replay.cpp @@ -107,19 +107,84 @@ bool Replay::OpenReplayFromBuffer(std::vector&& contents) { } if(pheader.base.flag & REPLAY_COMPRESSED) { size_t replay_size = pheader.base.datasize; - auto comp_size = contents.size() - header_size; - replay_data.resize(pheader.base.datasize); + size_t comp_size = contents.size() - header_size; replay_data.resize(replay_size); - lzma_filter filters[]{ - { LZMA_FILTER_LZMA1, nullptr }, - { LZMA_VLI_UNKNOWN, nullptr}, - }; - if(lzma_properties_decode(filters, nullptr, pheader.base.props, 5) != LZMA_OK) + + const auto fake_header = [&]() { + /* the lzma header consists of : + 1 byte LZMA properties byte that encodes lc/lp/pb + 4 bytes dictionary size as little endian uint32_t + 8 bytes uncompressed size as little endian uint64_t + + with the first 5 bytes corresponding to the "props" + stored in the replay header + */ + std::array header; + memcpy(header.data(), pheader.base.props, 5); + header[5] = (pheader.base.datasize >> 8 * 0) & 0xff; + header[6] = (pheader.base.datasize >> 8 * 1) & 0xff; + header[7] = (pheader.base.datasize >> 8 * 2) & 0xff; + header[8] = (pheader.base.datasize >> 8 * 3) & 0xff; + header[9] = 0; + header[10] = 0; + header[11] = 0; + header[12] = 0; + return header; + }(); + + lzma_stream stream = LZMA_STREAM_INIT; + stream.avail_in = fake_header.size(); + stream.next_in = fake_header.data(); + + stream.avail_out = pheader.base.datasize; + stream.next_out = replay_data.data(); + + if(lzma_alone_decoder(&stream, UINT64_MAX) != LZMA_OK) { + Reset(); + return false; + } + + while(stream.avail_in != 0) { + // this is should only feed the fake header, if for some reasons + // LZMA_STREAM_END is returned, then something went wrong + if(lzma_code(&stream, LZMA_RUN) != LZMA_OK) { + lzma_end(&stream); + Reset(); + return false; + } + } + + if(stream.total_out != 0) { + lzma_end(&stream); + Reset(); return false; - size_t in_pos = 0; - size_t out_pos = 0; - lzma_raw_buffer_decode(filters, nullptr, contents.data() + header_size, &in_pos, comp_size, replay_data.data(), &out_pos, replay_size); - free(filters[0].options); + } + + stream.avail_in = comp_size; + stream.next_in = contents.data() + header_size; + + while(stream.avail_in != 0) { + auto ret = lzma_code(&stream, LZMA_RUN); + if(ret == LZMA_STREAM_END) { + if(stream.total_out != pheader.base.datasize) { + lzma_end(&stream); + Reset(); + return false; + } + break; + } + if(ret != LZMA_OK) { + // if liblzma finds both the header and the end of stream marker, it returns + // LZMA_DATA_ERROR, we ignore that error and just ensure that the total written + // size matches the uncompressed size + if(ret == LZMA_DATA_ERROR && stream.total_out == pheader.base.datasize) + break; + Reset(); + lzma_end(&stream); + return false; + } + } + lzma_end(&stream); } else { contents.erase(contents.begin(), contents.begin() + header_size); replay_data = std::move(contents);

cbQrF(Rfgu#oT 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�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