diff options
author | Igor Pavlov <ipavlov@users.sourceforge.net> | 2010-03-24 03:00:00 +0300 |
---|---|---|
committer | Kornel LesiĆski <kornel@geekhood.net> | 2016-05-28 02:16:02 +0300 |
commit | 76b173af78d09dea806d3ed35c0f67a09b496357 (patch) | |
tree | 6262e759ddaeb55c7adb2eab98349daf6ea0b61e /C | |
parent | 993daef9cbed7febf494217f07e40e0a26b3bc06 (diff) |
9.129.12
Diffstat (limited to 'C')
-rwxr-xr-x | C/7zVersion.h | 6 | ||||
-rwxr-xr-x | C/Lzma2Enc.c | 125 | ||||
-rwxr-xr-x | C/MtCoder.c | 4 | ||||
-rwxr-xr-x | C/Ppmd8.c | 6 | ||||
-rwxr-xr-x | C/Ppmd8.h | 7 |
5 files changed, 74 insertions, 74 deletions
diff --git a/C/7zVersion.h b/C/7zVersion.h index a01a207d..6b087fae 100755 --- a/C/7zVersion.h +++ b/C/7zVersion.h @@ -1,7 +1,7 @@ #define MY_VER_MAJOR 9 -#define MY_VER_MINOR 11 +#define MY_VER_MINOR 12 #define MY_VER_BUILD 0 -#define MY_VERSION "9.11 beta" -#define MY_DATE "2010-03-15" +#define MY_VERSION "9.12 beta" +#define MY_DATE "2010-03-24" #define MY_COPYRIGHT ": Igor Pavlov : Public domain" #define MY_VERSION_COPYRIGHT_DATE MY_VERSION " " MY_COPYRIGHT " : " MY_DATE diff --git a/C/Lzma2Enc.c b/C/Lzma2Enc.c index 55c05fb5..9eb55318 100755 --- a/C/Lzma2Enc.c +++ b/C/Lzma2Enc.c @@ -1,5 +1,5 @@ /* Lzma2Enc.c -- LZMA2 Encoder -2009-11-24 : Igor Pavlov : Public domain */ +2010-03-24 : Igor Pavlov : Public domain */ /* #include <stdio.h> */ #include <string.h> @@ -173,6 +173,65 @@ void Lzma2EncProps_Init(CLzma2EncProps *p) p->blockSize = 0; } +void Lzma2EncProps_Normalize(CLzma2EncProps *p) +{ + int t1, t1n, t2, t3; + { + CLzmaEncProps lzmaProps = p->lzmaProps; + LzmaEncProps_Normalize(&lzmaProps); + t1n = lzmaProps.numThreads; + } + + t1 = p->lzmaProps.numThreads; + t2 = p->numBlockThreads; + t3 = p->numTotalThreads; + + if (t2 > NUM_MT_CODER_THREADS_MAX) + t2 = NUM_MT_CODER_THREADS_MAX; + + if (t3 <= 0) + { + if (t2 <= 0) + t2 = 1; + t3 = t1n * t2; + } + else if (t2 <= 0) + { + t2 = t3 / t1n; + if (t2 == 0) + { + t1 = 1; + t2 = t3; + } + if (t2 > NUM_MT_CODER_THREADS_MAX) + t2 = NUM_MT_CODER_THREADS_MAX; + } + else if (t1 <= 0) + { + t1 = t3 / t2; + if (t1 == 0) + t1 = 1; + } + else + t3 = t1n * t2; + + p->lzmaProps.numThreads = t1; + p->numBlockThreads = t2; + p->numTotalThreads = t3; + LzmaEncProps_Normalize(&p->lzmaProps); + + if (p->blockSize == 0) + { + UInt32 dictSize = p->lzmaProps.dictSize; + UInt64 blockSize = (UInt64)dictSize << 2; + const UInt32 kMinSize = (UInt32)1 << 20; + const UInt32 kMaxSize = (UInt32)1 << 28; + if (blockSize < kMinSize) blockSize = kMinSize; + if (blockSize > kMaxSize) blockSize = kMaxSize; + if (blockSize < dictSize) blockSize = dictSize; + p->blockSize = (size_t)blockSize; + } +} static SRes Progress(ICompressProgress *p, UInt64 inSize, UInt64 outSize) { @@ -351,70 +410,6 @@ void Lzma2Enc_Destroy(CLzma2EncHandle pp) IAlloc_Free(p->alloc, pp); } -void Lzma2EncProps_Normalize(CLzma2EncProps *p) -{ - int t1, t1n, t2, t3; - CLzmaEncProps lzmaProps = p->lzmaProps; - - LzmaEncProps_Normalize(&lzmaProps); - - t1 = p->lzmaProps.numThreads; - t1n = lzmaProps.numThreads; - t2 = p->numBlockThreads; - t3 = p->numTotalThreads; - - #ifndef _7ZIP_ST - if (t2 > NUM_MT_CODER_THREADS_MAX) - t2 = NUM_MT_CODER_THREADS_MAX; - #else - t2 = 1; - #endif - - if (t3 <= 0) - { - if (t2 <= 0) - t2 = 1; - t3 = t1n * t2; - } - else - { - if (t2 <= 0) - { - t2 = t3 / t1n; - if (t2 == 0) - { - t1 = 1; - t2 = t3; - } - } - else if (t1 <= 0) - { - t1 = t3 / t2; - if (t1 == 0) - t1 = 1; - } - else - t3 = t1n * t2; - } - - p->lzmaProps.numThreads = t1; - p->numBlockThreads = t2; - p->numTotalThreads = t3; - LzmaEncProps_Normalize(&p->lzmaProps); - - if (p->blockSize == 0) - { - UInt64 blockSize = (UInt64)lzmaProps.dictSize << 2; - const UInt32 kMinSize = (UInt32)1 << 20; - const UInt32 kMaxSize = (UInt32)1 << 28; - if (blockSize < kMinSize) blockSize = kMinSize; - if (blockSize > kMaxSize) blockSize = kMaxSize; - if (blockSize < lzmaProps.dictSize) - blockSize = lzmaProps.dictSize; - p->blockSize = (size_t)blockSize; - } -} - SRes Lzma2Enc_SetProps(CLzma2EncHandle pp, const CLzma2EncProps *props) { CLzma2Enc *p = (CLzma2Enc *)pp; diff --git a/C/MtCoder.c b/C/MtCoder.c index 57cfe353..32afce43 100755 --- a/C/MtCoder.c +++ b/C/MtCoder.c @@ -1,5 +1,5 @@ /* MtCoder.c -- Multi-thread Coder -2009-03-26 : Igor Pavlov : Public domain */ +2010-03-24 : Igor Pavlov : Public domain */ #include <stdio.h> @@ -306,7 +306,7 @@ SRes MtCoder_Code(CMtCoder *p) for (i = 0; i < numThreads; i++) { CMtThread *t = &p->threads[i]; - if (LoopThread_StartSubThread(&t->thread) != SZ_OK || i == 10) + if (LoopThread_StartSubThread(&t->thread) != SZ_OK) { res = SZ_ERROR_THREAD; p->threads[0].stopReading = True; @@ -1,5 +1,5 @@ /* Ppmd8.c -- PPMdI codec -2010-03-15 : Igor Pavlov : Public domain +2010-03-24 : Igor Pavlov : Public domain This code is based on PPMd var.I (2002): Dmitry Shkarin : Public domain */ #include <memory.h> @@ -410,6 +410,10 @@ static void Refresh(CPpmd8 *p, CTX_PTR ctx, unsigned oldNU, unsigned scale) unsigned i = ctx->NumStats, escFreq, sumFreq, flags; CPpmd_State *s = (CPpmd_State *)ShrinkUnits(p, STATS(ctx), oldNU, (i + 2) >> 1); ctx->Stats = REF(s); + #ifdef PPMD8_FREEZE_SUPPORT + /* fixed over Shkarin's code. Fixed code is not compatible with original code for some files in FREEZE mode. */ + scale |= (ctx->SummFreq >= ((UInt32)1 << 15)); + #endif flags = (ctx->Flags & (0x10 + 0x04 * scale)) + 0x08 * (s->Symbol >= 0x40); escFreq = ctx->SummFreq - s->Freq; sumFreq = (s->Freq = (Byte)((s->Freq + scale) >> scale)); @@ -1,5 +1,5 @@ /* Ppmd8.h -- PPMdI codec -2010-03-12 : Igor Pavlov : Public domain +2010-03-24 : Igor Pavlov : Public domain This code is based on: PPMd var.I (2002): Dmitry Shkarin : Public domain Carryless rangecoder (1999): Dmitry Subbotin : Public domain */ @@ -35,8 +35,9 @@ typedef struct CPpmd8_Context_ #define Ppmd8Context_OneState(p) ((CPpmd_State *)&(p)->SummFreq) -/* There is some bug in FREEZE mode (including original code, -so we disable FREEZE mode support */ +/* The BUG in Shkarin's code for FREEZE mode was fixed, but that fixed + code is not compatible with original code for some files compressed + in FREEZE mode. So we disable FREEZE mode support. */ enum { |