diff options
Diffstat (limited to '')
-rw-r--r-- | C/LzmaEnc.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/C/LzmaEnc.c b/C/LzmaEnc.c index 37b2787..84a29a5 100644 --- a/C/LzmaEnc.c +++ b/C/LzmaEnc.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* LzmaEnc.c -- LZMA Encoder | 1 | /* LzmaEnc.c -- LZMA Encoder |
2 | 2024-01-24: Igor Pavlov : Public domain */ | 2 | Igor Pavlov : Public domain */ |
3 | 3 | ||
4 | #include "Precomp.h" | 4 | #include "Precomp.h" |
5 | 5 | ||
@@ -62,7 +62,9 @@ void LzmaEncProps_Init(CLzmaEncProps *p) | |||
62 | p->lc = p->lp = p->pb = p->algo = p->fb = p->btMode = p->numHashBytes = p->numThreads = -1; | 62 | p->lc = p->lp = p->pb = p->algo = p->fb = p->btMode = p->numHashBytes = p->numThreads = -1; |
63 | p->numHashOutBits = 0; | 63 | p->numHashOutBits = 0; |
64 | p->writeEndMark = 0; | 64 | p->writeEndMark = 0; |
65 | p->affinityGroup = -1; | ||
65 | p->affinity = 0; | 66 | p->affinity = 0; |
67 | p->affinityInGroup = 0; | ||
66 | } | 68 | } |
67 | 69 | ||
68 | void LzmaEncProps_Normalize(CLzmaEncProps *p) | 70 | void LzmaEncProps_Normalize(CLzmaEncProps *p) |
@@ -72,11 +74,11 @@ void LzmaEncProps_Normalize(CLzmaEncProps *p) | |||
72 | p->level = level; | 74 | p->level = level; |
73 | 75 | ||
74 | if (p->dictSize == 0) | 76 | if (p->dictSize == 0) |
75 | p->dictSize = | 77 | p->dictSize = (unsigned)level <= 4 ? |
76 | ( level <= 3 ? ((UInt32)1 << (level * 2 + 16)) : | 78 | (UInt32)1 << (level * 2 + 16) : |
77 | ( level <= 6 ? ((UInt32)1 << (level + 19)) : | 79 | (unsigned)level <= sizeof(size_t) / 2 + 4 ? |
78 | ( level <= 7 ? ((UInt32)1 << 25) : ((UInt32)1 << 26) | 80 | (UInt32)1 << (level + 20) : |
79 | ))); | 81 | (UInt32)1 << (sizeof(size_t) / 2 + 24); |
80 | 82 | ||
81 | if (p->dictSize > p->reduceSize) | 83 | if (p->dictSize > p->reduceSize) |
82 | { | 84 | { |
@@ -92,8 +94,8 @@ void LzmaEncProps_Normalize(CLzmaEncProps *p) | |||
92 | if (p->lp < 0) p->lp = 0; | 94 | if (p->lp < 0) p->lp = 0; |
93 | if (p->pb < 0) p->pb = 2; | 95 | if (p->pb < 0) p->pb = 2; |
94 | 96 | ||
95 | if (p->algo < 0) p->algo = (level < 5 ? 0 : 1); | 97 | if (p->algo < 0) p->algo = (unsigned)level < 5 ? 0 : 1; |
96 | if (p->fb < 0) p->fb = (level < 7 ? 32 : 64); | 98 | if (p->fb < 0) p->fb = (unsigned)level < 7 ? 32 : 64; |
97 | if (p->btMode < 0) p->btMode = (p->algo == 0 ? 0 : 1); | 99 | if (p->btMode < 0) p->btMode = (p->algo == 0 ? 0 : 1); |
98 | if (p->numHashBytes < 0) p->numHashBytes = (p->btMode ? 4 : 5); | 100 | if (p->numHashBytes < 0) p->numHashBytes = (p->btMode ? 4 : 5); |
99 | if (p->mc == 0) p->mc = (16 + ((unsigned)p->fb >> 1)) >> (p->btMode ? 0 : 1); | 101 | if (p->mc == 0) p->mc = (16 + ((unsigned)p->fb >> 1)) >> (p->btMode ? 0 : 1); |
@@ -598,6 +600,10 @@ SRes LzmaEnc_SetProps(CLzmaEncHandle p, const CLzmaEncProps *props2) | |||
598 | p->multiThread = (props.numThreads > 1); | 600 | p->multiThread = (props.numThreads > 1); |
599 | p->matchFinderMt.btSync.affinity = | 601 | p->matchFinderMt.btSync.affinity = |
600 | p->matchFinderMt.hashSync.affinity = props.affinity; | 602 | p->matchFinderMt.hashSync.affinity = props.affinity; |
603 | p->matchFinderMt.btSync.affinityGroup = | ||
604 | p->matchFinderMt.hashSync.affinityGroup = props.affinityGroup; | ||
605 | p->matchFinderMt.btSync.affinityInGroup = | ||
606 | p->matchFinderMt.hashSync.affinityInGroup = props.affinityInGroup; | ||
601 | #endif | 607 | #endif |
602 | 608 | ||
603 | return SZ_OK; | 609 | return SZ_OK; |