aboutsummaryrefslogtreecommitdiff
path: root/C/LzmaEnc.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--C/LzmaEnc.c22
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
22024-01-24: Igor Pavlov : Public domain */ 2Igor 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
68void LzmaEncProps_Normalize(CLzmaEncProps *p) 70void 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;