aboutsummaryrefslogtreecommitdiff
path: root/C/XzEnc.c
diff options
context:
space:
mode:
authorIgor Pavlov <87184205+ip7z@users.noreply.github.com>2023-06-21 00:00:00 +0000
committerIgor Pavlov <87184205+ip7z@users.noreply.github.com>2023-12-17 14:59:19 +0500
commit5b39dc76f1bc82f941d5c800ab9f34407a06b53a (patch)
treefe5e17420300b715021a76328444088d32047963 /C/XzEnc.c
parent93be7d4abfd4233228f58ee1fbbcd76d91be66a4 (diff)
download7zip-5b39dc76f1bc82f941d5c800ab9f34407a06b53a.tar.gz
7zip-5b39dc76f1bc82f941d5c800ab9f34407a06b53a.tar.bz2
7zip-5b39dc76f1bc82f941d5c800ab9f34407a06b53a.zip
23.0123.01
Diffstat (limited to 'C/XzEnc.c')
-rw-r--r--C/XzEnc.c270
1 files changed, 151 insertions, 119 deletions
diff --git a/C/XzEnc.c b/C/XzEnc.c
index be174cc..22408e2 100644
--- a/C/XzEnc.c
+++ b/C/XzEnc.c
@@ -1,5 +1,5 @@
1/* XzEnc.c -- Xz Encode 1/* XzEnc.c -- Xz Encode
22021-04-01 : Igor Pavlov : Public domain */ 22023-04-13 : Igor Pavlov : Public domain */
3 3
4#include "Precomp.h" 4#include "Precomp.h"
5 5
@@ -18,13 +18,13 @@
18 18
19#include "XzEnc.h" 19#include "XzEnc.h"
20 20
21// #define _7ZIP_ST 21// #define Z7_ST
22 22
23#ifndef _7ZIP_ST 23#ifndef Z7_ST
24#include "MtCoder.h" 24#include "MtCoder.h"
25#else 25#else
26#define MTCODER__THREADS_MAX 1 26#define MTCODER_THREADS_MAX 1
27#define MTCODER__BLOCKS_MAX 1 27#define MTCODER_BLOCKS_MAX 1
28#endif 28#endif
29 29
30#define XZ_GET_PAD_SIZE(dataSize) ((4 - ((unsigned)(dataSize) & 3)) & 3) 30#define XZ_GET_PAD_SIZE(dataSize) ((4 - ((unsigned)(dataSize) & 3)) & 3)
@@ -35,25 +35,25 @@
35#define XZ_GET_ESTIMATED_BLOCK_TOTAL_PACK_SIZE(unpackSize) (XZ_BLOCK_HEADER_SIZE_MAX + XZ_GET_MAX_BLOCK_PACK_SIZE(unpackSize)) 35#define XZ_GET_ESTIMATED_BLOCK_TOTAL_PACK_SIZE(unpackSize) (XZ_BLOCK_HEADER_SIZE_MAX + XZ_GET_MAX_BLOCK_PACK_SIZE(unpackSize))
36 36
37 37
38#define XzBlock_ClearFlags(p) (p)->flags = 0; 38// #define XzBlock_ClearFlags(p) (p)->flags = 0;
39#define XzBlock_SetNumFilters(p, n) (p)->flags = (Byte)((p)->flags | ((n) - 1)); 39#define XzBlock_ClearFlags_SetNumFilters(p, n) (p)->flags = (Byte)((n) - 1);
40#define XzBlock_SetHasPackSize(p) (p)->flags |= XZ_BF_PACK_SIZE; 40#define XzBlock_SetHasPackSize(p) (p)->flags |= XZ_BF_PACK_SIZE;
41#define XzBlock_SetHasUnpackSize(p) (p)->flags |= XZ_BF_UNPACK_SIZE; 41#define XzBlock_SetHasUnpackSize(p) (p)->flags |= XZ_BF_UNPACK_SIZE;
42 42
43 43
44static SRes WriteBytes(ISeqOutStream *s, const void *buf, size_t size) 44static SRes WriteBytes(ISeqOutStreamPtr s, const void *buf, size_t size)
45{ 45{
46 return (ISeqOutStream_Write(s, buf, size) == size) ? SZ_OK : SZ_ERROR_WRITE; 46 return (ISeqOutStream_Write(s, buf, size) == size) ? SZ_OK : SZ_ERROR_WRITE;
47} 47}
48 48
49static SRes WriteBytesUpdateCrc(ISeqOutStream *s, const void *buf, size_t size, UInt32 *crc) 49static SRes WriteBytes_UpdateCrc(ISeqOutStreamPtr s, const void *buf, size_t size, UInt32 *crc)
50{ 50{
51 *crc = CrcUpdate(*crc, buf, size); 51 *crc = CrcUpdate(*crc, buf, size);
52 return WriteBytes(s, buf, size); 52 return WriteBytes(s, buf, size);
53} 53}
54 54
55 55
56static SRes Xz_WriteHeader(CXzStreamFlags f, ISeqOutStream *s) 56static SRes Xz_WriteHeader(CXzStreamFlags f, ISeqOutStreamPtr s)
57{ 57{
58 UInt32 crc; 58 UInt32 crc;
59 Byte header[XZ_STREAM_HEADER_SIZE]; 59 Byte header[XZ_STREAM_HEADER_SIZE];
@@ -61,12 +61,12 @@ static SRes Xz_WriteHeader(CXzStreamFlags f, ISeqOutStream *s)
61 header[XZ_SIG_SIZE] = (Byte)(f >> 8); 61 header[XZ_SIG_SIZE] = (Byte)(f >> 8);
62 header[XZ_SIG_SIZE + 1] = (Byte)(f & 0xFF); 62 header[XZ_SIG_SIZE + 1] = (Byte)(f & 0xFF);
63 crc = CrcCalc(header + XZ_SIG_SIZE, XZ_STREAM_FLAGS_SIZE); 63 crc = CrcCalc(header + XZ_SIG_SIZE, XZ_STREAM_FLAGS_SIZE);
64 SetUi32(header + XZ_SIG_SIZE + XZ_STREAM_FLAGS_SIZE, crc); 64 SetUi32(header + XZ_SIG_SIZE + XZ_STREAM_FLAGS_SIZE, crc)
65 return WriteBytes(s, header, XZ_STREAM_HEADER_SIZE); 65 return WriteBytes(s, header, XZ_STREAM_HEADER_SIZE);
66} 66}
67 67
68 68
69static SRes XzBlock_WriteHeader(const CXzBlock *p, ISeqOutStream *s) 69static SRes XzBlock_WriteHeader(const CXzBlock *p, ISeqOutStreamPtr s)
70{ 70{
71 Byte header[XZ_BLOCK_HEADER_SIZE_MAX]; 71 Byte header[XZ_BLOCK_HEADER_SIZE_MAX];
72 72
@@ -91,7 +91,7 @@ static SRes XzBlock_WriteHeader(const CXzBlock *p, ISeqOutStream *s)
91 header[pos++] = 0; 91 header[pos++] = 0;
92 92
93 header[0] = (Byte)(pos >> 2); 93 header[0] = (Byte)(pos >> 2);
94 SetUi32(header + pos, CrcCalc(header, pos)); 94 SetUi32(header + pos, CrcCalc(header, pos))
95 return WriteBytes(s, header, pos + 4); 95 return WriteBytes(s, header, pos + 4);
96} 96}
97 97
@@ -182,7 +182,7 @@ static SRes XzEncIndex_AddIndexRecord(CXzEncIndex *p, UInt64 unpackSize, UInt64
182 size_t newSize = p->allocated * 2 + 16 * 2; 182 size_t newSize = p->allocated * 2 + 16 * 2;
183 if (newSize < p->size + pos) 183 if (newSize < p->size + pos)
184 return SZ_ERROR_MEM; 184 return SZ_ERROR_MEM;
185 RINOK(XzEncIndex_ReAlloc(p, newSize, alloc)); 185 RINOK(XzEncIndex_ReAlloc(p, newSize, alloc))
186 } 186 }
187 memcpy(p->blocks + p->size, buf, pos); 187 memcpy(p->blocks + p->size, buf, pos);
188 p->size += pos; 188 p->size += pos;
@@ -191,7 +191,7 @@ static SRes XzEncIndex_AddIndexRecord(CXzEncIndex *p, UInt64 unpackSize, UInt64
191} 191}
192 192
193 193
194static SRes XzEncIndex_WriteFooter(const CXzEncIndex *p, CXzStreamFlags flags, ISeqOutStream *s) 194static SRes XzEncIndex_WriteFooter(const CXzEncIndex *p, CXzStreamFlags flags, ISeqOutStreamPtr s)
195{ 195{
196 Byte buf[32]; 196 Byte buf[32];
197 UInt64 globalPos; 197 UInt64 globalPos;
@@ -200,8 +200,8 @@ static SRes XzEncIndex_WriteFooter(const CXzEncIndex *p, CXzStreamFlags flags, I
200 200
201 globalPos = pos; 201 globalPos = pos;
202 buf[0] = 0; 202 buf[0] = 0;
203 RINOK(WriteBytesUpdateCrc(s, buf, pos, &crc)); 203 RINOK(WriteBytes_UpdateCrc(s, buf, pos, &crc))
204 RINOK(WriteBytesUpdateCrc(s, p->blocks, p->size, &crc)); 204 RINOK(WriteBytes_UpdateCrc(s, p->blocks, p->size, &crc))
205 globalPos += p->size; 205 globalPos += p->size;
206 206
207 pos = XZ_GET_PAD_SIZE(globalPos); 207 pos = XZ_GET_PAD_SIZE(globalPos);
@@ -211,12 +211,12 @@ static SRes XzEncIndex_WriteFooter(const CXzEncIndex *p, CXzStreamFlags flags, I
211 globalPos += pos; 211 globalPos += pos;
212 212
213 crc = CrcUpdate(crc, buf + 4 - pos, pos); 213 crc = CrcUpdate(crc, buf + 4 - pos, pos);
214 SetUi32(buf + 4, CRC_GET_DIGEST(crc)); 214 SetUi32(buf + 4, CRC_GET_DIGEST(crc))
215 215
216 SetUi32(buf + 8 + 4, (UInt32)(globalPos >> 2)); 216 SetUi32(buf + 8 + 4, (UInt32)(globalPos >> 2))
217 buf[8 + 8] = (Byte)(flags >> 8); 217 buf[8 + 8] = (Byte)(flags >> 8);
218 buf[8 + 9] = (Byte)(flags & 0xFF); 218 buf[8 + 9] = (Byte)(flags & 0xFF);
219 SetUi32(buf + 8, CrcCalc(buf + 8 + 4, 6)); 219 SetUi32(buf + 8, CrcCalc(buf + 8 + 4, 6))
220 buf[8 + 10] = XZ_FOOTER_SIG_0; 220 buf[8 + 10] = XZ_FOOTER_SIG_0;
221 buf[8 + 11] = XZ_FOOTER_SIG_1; 221 buf[8 + 11] = XZ_FOOTER_SIG_1;
222 222
@@ -230,7 +230,7 @@ static SRes XzEncIndex_WriteFooter(const CXzEncIndex *p, CXzStreamFlags flags, I
230typedef struct 230typedef struct
231{ 231{
232 ISeqInStream vt; 232 ISeqInStream vt;
233 ISeqInStream *realStream; 233 ISeqInStreamPtr realStream;
234 const Byte *data; 234 const Byte *data;
235 UInt64 limit; 235 UInt64 limit;
236 UInt64 processed; 236 UInt64 processed;
@@ -251,9 +251,9 @@ static void SeqCheckInStream_GetDigest(CSeqCheckInStream *p, Byte *digest)
251 XzCheck_Final(&p->check, digest); 251 XzCheck_Final(&p->check, digest);
252} 252}
253 253
254static SRes SeqCheckInStream_Read(const ISeqInStream *pp, void *data, size_t *size) 254static SRes SeqCheckInStream_Read(ISeqInStreamPtr pp, void *data, size_t *size)
255{ 255{
256 CSeqCheckInStream *p = CONTAINER_FROM_VTBL(pp, CSeqCheckInStream, vt); 256 Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CSeqCheckInStream)
257 size_t size2 = *size; 257 size_t size2 = *size;
258 SRes res = SZ_OK; 258 SRes res = SZ_OK;
259 259
@@ -285,15 +285,15 @@ static SRes SeqCheckInStream_Read(const ISeqInStream *pp, void *data, size_t *si
285typedef struct 285typedef struct
286{ 286{
287 ISeqOutStream vt; 287 ISeqOutStream vt;
288 ISeqOutStream *realStream; 288 ISeqOutStreamPtr realStream;
289 Byte *outBuf; 289 Byte *outBuf;
290 size_t outBufLimit; 290 size_t outBufLimit;
291 UInt64 processed; 291 UInt64 processed;
292} CSeqSizeOutStream; 292} CSeqSizeOutStream;
293 293
294static size_t SeqSizeOutStream_Write(const ISeqOutStream *pp, const void *data, size_t size) 294static size_t SeqSizeOutStream_Write(ISeqOutStreamPtr pp, const void *data, size_t size)
295{ 295{
296 CSeqSizeOutStream *p = CONTAINER_FROM_VTBL(pp, CSeqSizeOutStream, vt); 296 Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CSeqSizeOutStream)
297 if (p->realStream) 297 if (p->realStream)
298 size = ISeqOutStream_Write(p->realStream, data, size); 298 size = ISeqOutStream_Write(p->realStream, data, size);
299 else 299 else
@@ -313,8 +313,8 @@ static size_t SeqSizeOutStream_Write(const ISeqOutStream *pp, const void *data,
313 313
314typedef struct 314typedef struct
315{ 315{
316 ISeqInStream p; 316 ISeqInStream vt;
317 ISeqInStream *realStream; 317 ISeqInStreamPtr realStream;
318 IStateCoder StateCoder; 318 IStateCoder StateCoder;
319 Byte *buf; 319 Byte *buf;
320 size_t curPos; 320 size_t curPos;
@@ -323,7 +323,39 @@ typedef struct
323} CSeqInFilter; 323} CSeqInFilter;
324 324
325 325
326SRes BraState_SetFromMethod(IStateCoder *p, UInt64 id, int encodeMode, ISzAllocPtr alloc); 326static const z7_Func_BranchConv g_Funcs_BranchConv_RISC_Enc[] =
327{
328 Z7_BRANCH_CONV_ENC(PPC),
329 Z7_BRANCH_CONV_ENC(IA64),
330 Z7_BRANCH_CONV_ENC(ARM),
331 Z7_BRANCH_CONV_ENC(ARMT),
332 Z7_BRANCH_CONV_ENC(SPARC),
333 Z7_BRANCH_CONV_ENC(ARM64)
334};
335
336static SizeT XzBcFilterStateBase_Filter_Enc(CXzBcFilterStateBase *p, Byte *data, SizeT size)
337{
338 switch (p->methodId)
339 {
340 case XZ_ID_Delta:
341 Delta_Encode(p->delta_State, p->delta, data, size);
342 break;
343 case XZ_ID_X86:
344 size = (SizeT)(z7_BranchConvSt_X86_Enc(data, size, p->ip, &p->X86_State) - data);
345 break;
346 default:
347 if (p->methodId >= XZ_ID_PPC)
348 {
349 const UInt32 i = p->methodId - XZ_ID_PPC;
350 if (i < Z7_ARRAY_SIZE(g_Funcs_BranchConv_RISC_Enc))
351 size = (SizeT)(g_Funcs_BranchConv_RISC_Enc[i](data, size, p->ip) - data);
352 }
353 break;
354 }
355 p->ip += (UInt32)size;
356 return size;
357}
358
327 359
328static SRes SeqInFilter_Init(CSeqInFilter *p, const CXzFilter *props, ISzAllocPtr alloc) 360static SRes SeqInFilter_Init(CSeqInFilter *p, const CXzFilter *props, ISzAllocPtr alloc)
329{ 361{
@@ -335,17 +367,17 @@ static SRes SeqInFilter_Init(CSeqInFilter *p, const CXzFilter *props, ISzAllocPt
335 } 367 }
336 p->curPos = p->endPos = 0; 368 p->curPos = p->endPos = 0;
337 p->srcWasFinished = 0; 369 p->srcWasFinished = 0;
338 RINOK(BraState_SetFromMethod(&p->StateCoder, props->id, 1, alloc)); 370 RINOK(Xz_StateCoder_Bc_SetFromMethod_Func(&p->StateCoder, props->id, XzBcFilterStateBase_Filter_Enc, alloc))
339 RINOK(p->StateCoder.SetProps(p->StateCoder.p, props->props, props->propsSize, alloc)); 371 RINOK(p->StateCoder.SetProps(p->StateCoder.p, props->props, props->propsSize, alloc))
340 p->StateCoder.Init(p->StateCoder.p); 372 p->StateCoder.Init(p->StateCoder.p);
341 return SZ_OK; 373 return SZ_OK;
342} 374}
343 375
344 376
345static SRes SeqInFilter_Read(const ISeqInStream *pp, void *data, size_t *size) 377static SRes SeqInFilter_Read(ISeqInStreamPtr pp, void *data, size_t *size)
346{ 378{
347 CSeqInFilter *p = CONTAINER_FROM_VTBL(pp, CSeqInFilter, p); 379 Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CSeqInFilter)
348 size_t sizeOriginal = *size; 380 const size_t sizeOriginal = *size;
349 if (sizeOriginal == 0) 381 if (sizeOriginal == 0)
350 return SZ_OK; 382 return SZ_OK;
351 *size = 0; 383 *size = 0;
@@ -356,7 +388,7 @@ static SRes SeqInFilter_Read(const ISeqInStream *pp, void *data, size_t *size)
356 { 388 {
357 p->curPos = 0; 389 p->curPos = 0;
358 p->endPos = FILTER_BUF_SIZE; 390 p->endPos = FILTER_BUF_SIZE;
359 RINOK(ISeqInStream_Read(p->realStream, p->buf, &p->endPos)); 391 RINOK(ISeqInStream_Read(p->realStream, p->buf, &p->endPos))
360 if (p->endPos == 0) 392 if (p->endPos == 0)
361 p->srcWasFinished = 1; 393 p->srcWasFinished = 1;
362 } 394 }
@@ -381,7 +413,7 @@ static void SeqInFilter_Construct(CSeqInFilter *p)
381{ 413{
382 p->buf = NULL; 414 p->buf = NULL;
383 p->StateCoder.p = NULL; 415 p->StateCoder.p = NULL;
384 p->p.Read = SeqInFilter_Read; 416 p->vt.Read = SeqInFilter_Read;
385} 417}
386 418
387static void SeqInFilter_Free(CSeqInFilter *p, ISzAllocPtr alloc) 419static void SeqInFilter_Free(CSeqInFilter *p, ISzAllocPtr alloc)
@@ -406,13 +438,13 @@ static void SeqInFilter_Free(CSeqInFilter *p, ISzAllocPtr alloc)
406typedef struct 438typedef struct
407{ 439{
408 ISeqInStream vt; 440 ISeqInStream vt;
409 ISeqInStream *inStream; 441 ISeqInStreamPtr inStream;
410 CSbEnc enc; 442 CSbEnc enc;
411} CSbEncInStream; 443} CSbEncInStream;
412 444
413static SRes SbEncInStream_Read(const ISeqInStream *pp, void *data, size_t *size) 445static SRes SbEncInStream_Read(ISeqInStreamPtr pp, void *data, size_t *size)
414{ 446{
415 CSbEncInStream *p = CONTAINER_FROM_VTBL(pp, CSbEncInStream, vt); 447 CSbEncInStream *p = Z7_CONTAINER_FROM_VTBL(pp, CSbEncInStream, vt);
416 size_t sizeOriginal = *size; 448 size_t sizeOriginal = *size;
417 if (sizeOriginal == 0) 449 if (sizeOriginal == 0)
418 return SZ_OK; 450 return SZ_OK;
@@ -422,7 +454,7 @@ static SRes SbEncInStream_Read(const ISeqInStream *pp, void *data, size_t *size)
422 if (p->enc.needRead && !p->enc.readWasFinished) 454 if (p->enc.needRead && !p->enc.readWasFinished)
423 { 455 {
424 size_t processed = p->enc.needReadSizeMax; 456 size_t processed = p->enc.needReadSizeMax;
425 RINOK(p->inStream->Read(p->inStream, p->enc.buf + p->enc.readPos, &processed)); 457 RINOK(p->inStream->Read(p->inStream, p->enc.buf + p->enc.readPos, &processed))
426 p->enc.readPos += processed; 458 p->enc.readPos += processed;
427 if (processed == 0) 459 if (processed == 0)
428 { 460 {
@@ -433,7 +465,7 @@ static SRes SbEncInStream_Read(const ISeqInStream *pp, void *data, size_t *size)
433 } 465 }
434 466
435 *size = sizeOriginal; 467 *size = sizeOriginal;
436 RINOK(SbEnc_Read(&p->enc, data, size)); 468 RINOK(SbEnc_Read(&p->enc, data, size))
437 if (*size != 0 || !p->enc.needRead) 469 if (*size != 0 || !p->enc.needRead)
438 return SZ_OK; 470 return SZ_OK;
439 } 471 }
@@ -473,7 +505,7 @@ void XzFilterProps_Init(CXzFilterProps *p)
473void XzProps_Init(CXzProps *p) 505void XzProps_Init(CXzProps *p)
474{ 506{
475 p->checkId = XZ_CHECK_CRC32; 507 p->checkId = XZ_CHECK_CRC32;
476 p->blockSize = XZ_PROPS__BLOCK_SIZE__AUTO; 508 p->blockSize = XZ_PROPS_BLOCK_SIZE_AUTO;
477 p->numBlockThreads_Reduced = -1; 509 p->numBlockThreads_Reduced = -1;
478 p->numBlockThreads_Max = -1; 510 p->numBlockThreads_Max = -1;
479 p->numTotalThreads = -1; 511 p->numTotalThreads = -1;
@@ -502,8 +534,8 @@ static void XzEncProps_Normalize_Fixed(CXzProps *p)
502 t2 = p->numBlockThreads_Max; 534 t2 = p->numBlockThreads_Max;
503 t3 = p->numTotalThreads; 535 t3 = p->numTotalThreads;
504 536
505 if (t2 > MTCODER__THREADS_MAX) 537 if (t2 > MTCODER_THREADS_MAX)
506 t2 = MTCODER__THREADS_MAX; 538 t2 = MTCODER_THREADS_MAX;
507 539
508 if (t3 <= 0) 540 if (t3 <= 0)
509 { 541 {
@@ -519,8 +551,8 @@ static void XzEncProps_Normalize_Fixed(CXzProps *p)
519 t1 = 1; 551 t1 = 1;
520 t2 = t3; 552 t2 = t3;
521 } 553 }
522 if (t2 > MTCODER__THREADS_MAX) 554 if (t2 > MTCODER_THREADS_MAX)
523 t2 = MTCODER__THREADS_MAX; 555 t2 = MTCODER_THREADS_MAX;
524 } 556 }
525 else if (t1 <= 0) 557 else if (t1 <= 0)
526 { 558 {
@@ -571,7 +603,7 @@ static void XzProps_Normalize(CXzProps *p)
571 /* we normalize xzProps properties, but we normalize only some of CXzProps::lzma2Props properties. 603 /* we normalize xzProps properties, but we normalize only some of CXzProps::lzma2Props properties.
572 Lzma2Enc_SetProps() will normalize lzma2Props later. */ 604 Lzma2Enc_SetProps() will normalize lzma2Props later. */
573 605
574 if (p->blockSize == XZ_PROPS__BLOCK_SIZE__SOLID) 606 if (p->blockSize == XZ_PROPS_BLOCK_SIZE_SOLID)
575 { 607 {
576 p->lzma2Props.lzmaProps.reduceSize = p->reduceSize; 608 p->lzma2Props.lzmaProps.reduceSize = p->reduceSize;
577 p->numBlockThreads_Reduced = 1; 609 p->numBlockThreads_Reduced = 1;
@@ -583,15 +615,15 @@ static void XzProps_Normalize(CXzProps *p)
583 else 615 else
584 { 616 {
585 CLzma2EncProps *lzma2 = &p->lzma2Props; 617 CLzma2EncProps *lzma2 = &p->lzma2Props;
586 if (p->blockSize == LZMA2_ENC_PROPS__BLOCK_SIZE__AUTO) 618 if (p->blockSize == LZMA2_ENC_PROPS_BLOCK_SIZE_AUTO)
587 { 619 {
588 // xz-auto 620 // xz-auto
589 p->lzma2Props.lzmaProps.reduceSize = p->reduceSize; 621 p->lzma2Props.lzmaProps.reduceSize = p->reduceSize;
590 622
591 if (lzma2->blockSize == LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID) 623 if (lzma2->blockSize == LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID)
592 { 624 {
593 // if (xz-auto && lzma2-solid) - we use solid for both 625 // if (xz-auto && lzma2-solid) - we use solid for both
594 p->blockSize = XZ_PROPS__BLOCK_SIZE__SOLID; 626 p->blockSize = XZ_PROPS_BLOCK_SIZE_SOLID;
595 p->numBlockThreads_Reduced = 1; 627 p->numBlockThreads_Reduced = 1;
596 p->numBlockThreads_Max = 1; 628 p->numBlockThreads_Max = 1;
597 if (p->lzma2Props.numTotalThreads <= 0) 629 if (p->lzma2Props.numTotalThreads <= 0)
@@ -610,9 +642,9 @@ static void XzProps_Normalize(CXzProps *p)
610 p->blockSize = tp.blockSize; // fixed or solid 642 p->blockSize = tp.blockSize; // fixed or solid
611 p->numBlockThreads_Reduced = tp.numBlockThreads_Reduced; 643 p->numBlockThreads_Reduced = tp.numBlockThreads_Reduced;
612 p->numBlockThreads_Max = tp.numBlockThreads_Max; 644 p->numBlockThreads_Max = tp.numBlockThreads_Max;
613 if (lzma2->blockSize == LZMA2_ENC_PROPS__BLOCK_SIZE__AUTO) 645 if (lzma2->blockSize == LZMA2_ENC_PROPS_BLOCK_SIZE_AUTO)
614 lzma2->blockSize = tp.blockSize; // fixed or solid, LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID 646 lzma2->blockSize = tp.blockSize; // fixed or solid, LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID
615 if (lzma2->lzmaProps.reduceSize > tp.blockSize && tp.blockSize != LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID) 647 if (lzma2->lzmaProps.reduceSize > tp.blockSize && tp.blockSize != LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID)
616 lzma2->lzmaProps.reduceSize = tp.blockSize; 648 lzma2->lzmaProps.reduceSize = tp.blockSize;
617 lzma2->numBlockThreads_Reduced = 1; 649 lzma2->numBlockThreads_Reduced = 1;
618 lzma2->numBlockThreads_Max = 1; 650 lzma2->numBlockThreads_Max = 1;
@@ -631,9 +663,9 @@ static void XzProps_Normalize(CXzProps *p)
631 r = p->blockSize; 663 r = p->blockSize;
632 lzma2->lzmaProps.reduceSize = r; 664 lzma2->lzmaProps.reduceSize = r;
633 } 665 }
634 if (lzma2->blockSize == LZMA2_ENC_PROPS__BLOCK_SIZE__AUTO) 666 if (lzma2->blockSize == LZMA2_ENC_PROPS_BLOCK_SIZE_AUTO)
635 lzma2->blockSize = LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID; 667 lzma2->blockSize = LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID;
636 else if (lzma2->blockSize > p->blockSize && lzma2->blockSize != LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID) 668 else if (lzma2->blockSize > p->blockSize && lzma2->blockSize != LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID)
637 lzma2->blockSize = p->blockSize; 669 lzma2->blockSize = p->blockSize;
638 670
639 XzEncProps_Normalize_Fixed(p); 671 XzEncProps_Normalize_Fixed(p);
@@ -704,17 +736,17 @@ typedef struct
704static SRes Xz_CompressBlock( 736static SRes Xz_CompressBlock(
705 CLzma2WithFilters *lzmaf, 737 CLzma2WithFilters *lzmaf,
706 738
707 ISeqOutStream *outStream, 739 ISeqOutStreamPtr outStream,
708 Byte *outBufHeader, 740 Byte *outBufHeader,
709 Byte *outBufData, size_t outBufDataLimit, 741 Byte *outBufData, size_t outBufDataLimit,
710 742
711 ISeqInStream *inStream, 743 ISeqInStreamPtr inStream,
712 // UInt64 expectedSize, 744 // UInt64 expectedSize,
713 const Byte *inBuf, // used if (!inStream) 745 const Byte *inBuf, // used if (!inStream)
714 size_t inBufSize, // used if (!inStream), it's block size, props->blockSize is ignored 746 size_t inBufSize, // used if (!inStream), it's block size, props->blockSize is ignored
715 747
716 const CXzProps *props, 748 const CXzProps *props,
717 ICompressProgress *progress, 749 ICompressProgressPtr progress,
718 int *inStreamFinished, /* only for inStream version */ 750 int *inStreamFinished, /* only for inStream version */
719 CXzEncBlockInfo *blockSizes, 751 CXzEncBlockInfo *blockSizes,
720 ISzAllocPtr alloc, 752 ISzAllocPtr alloc,
@@ -731,12 +763,12 @@ static SRes Xz_CompressBlock(
731 763
732 *inStreamFinished = False; 764 *inStreamFinished = False;
733 765
734 RINOK(Lzma2WithFilters_Create(lzmaf, alloc, allocBig)); 766 RINOK(Lzma2WithFilters_Create(lzmaf, alloc, allocBig))
735 767
736 RINOK(Lzma2Enc_SetProps(lzmaf->lzma2, &props->lzma2Props)); 768 RINOK(Lzma2Enc_SetProps(lzmaf->lzma2, &props->lzma2Props))
737 769
738 XzBlock_ClearFlags(&block); 770 // XzBlock_ClearFlags(&block)
739 XzBlock_SetNumFilters(&block, 1 + (fp ? 1 : 0)); 771 XzBlock_ClearFlags_SetNumFilters(&block, 1 + (fp ? 1 : 0))
740 772
741 if (fp) 773 if (fp)
742 { 774 {
@@ -752,7 +784,7 @@ static SRes Xz_CompressBlock(
752 else if (fp->ipDefined) 784 else if (fp->ipDefined)
753 { 785 {
754 Byte *ptr = filter->props; 786 Byte *ptr = filter->props;
755 SetUi32(ptr, fp->ip); 787 SetUi32(ptr, fp->ip)
756 filter->propsSize = 4; 788 filter->propsSize = 4;
757 } 789 }
758 } 790 }
@@ -777,13 +809,13 @@ static SRes Xz_CompressBlock(
777 if (props->blockSize != (UInt64)(Int64)-1) 809 if (props->blockSize != (UInt64)(Int64)-1)
778 if (expectedSize > props->blockSize) 810 if (expectedSize > props->blockSize)
779 block.unpackSize = props->blockSize; 811 block.unpackSize = props->blockSize;
780 XzBlock_SetHasUnpackSize(&block); 812 XzBlock_SetHasUnpackSize(&block)
781 } 813 }
782 */ 814 */
783 815
784 if (outStream) 816 if (outStream)
785 { 817 {
786 RINOK(XzBlock_WriteHeader(&block, &seqSizeOutStream.vt)); 818 RINOK(XzBlock_WriteHeader(&block, &seqSizeOutStream.vt))
787 } 819 }
788 820
789 checkInStream.vt.Read = SeqCheckInStream_Read; 821 checkInStream.vt.Read = SeqCheckInStream_Read;
@@ -801,13 +833,13 @@ static SRes Xz_CompressBlock(
801 if (fp->id == XZ_ID_Subblock) 833 if (fp->id == XZ_ID_Subblock)
802 { 834 {
803 lzmaf->sb.inStream = &checkInStream.vt; 835 lzmaf->sb.inStream = &checkInStream.vt;
804 RINOK(SbEncInStream_Init(&lzmaf->sb)); 836 RINOK(SbEncInStream_Init(&lzmaf->sb))
805 } 837 }
806 else 838 else
807 #endif 839 #endif
808 { 840 {
809 lzmaf->filter.realStream = &checkInStream.vt; 841 lzmaf->filter.realStream = &checkInStream.vt;
810 RINOK(SeqInFilter_Init(&lzmaf->filter, filter, alloc)); 842 RINOK(SeqInFilter_Init(&lzmaf->filter, filter, alloc))
811 } 843 }
812 } 844 }
813 845
@@ -841,7 +873,7 @@ static SRes Xz_CompressBlock(
841 #ifdef USE_SUBBLOCK 873 #ifdef USE_SUBBLOCK
842 (fp->id == XZ_ID_Subblock) ? &lzmaf->sb.vt: 874 (fp->id == XZ_ID_Subblock) ? &lzmaf->sb.vt:
843 #endif 875 #endif
844 &lzmaf->filter.p) : 876 &lzmaf->filter.vt) :
845 &checkInStream.vt) : NULL, 877 &checkInStream.vt) : NULL,
846 878
847 useStream ? NULL : inBuf, 879 useStream ? NULL : inBuf,
@@ -852,7 +884,7 @@ static SRes Xz_CompressBlock(
852 if (outBuf) 884 if (outBuf)
853 seqSizeOutStream.processed += outSize; 885 seqSizeOutStream.processed += outSize;
854 886
855 RINOK(res); 887 RINOK(res)
856 blockSizes->unpackSize = checkInStream.processed; 888 blockSizes->unpackSize = checkInStream.processed;
857 } 889 }
858 { 890 {
@@ -866,7 +898,7 @@ static SRes Xz_CompressBlock(
866 buf[3] = 0; 898 buf[3] = 0;
867 899
868 SeqCheckInStream_GetDigest(&checkInStream, buf + 4); 900 SeqCheckInStream_GetDigest(&checkInStream, buf + 4);
869 RINOK(WriteBytes(&seqSizeOutStream.vt, buf + (4 - padSize), padSize + XzFlags_GetCheckSize((CXzStreamFlags)props->checkId))); 901 RINOK(WriteBytes(&seqSizeOutStream.vt, buf + (4 - padSize), padSize + XzFlags_GetCheckSize((CXzStreamFlags)props->checkId)))
870 902
871 blockSizes->totalSize = seqSizeOutStream.processed - padSize; 903 blockSizes->totalSize = seqSizeOutStream.processed - padSize;
872 904
@@ -877,12 +909,12 @@ static SRes Xz_CompressBlock(
877 seqSizeOutStream.processed = 0; 909 seqSizeOutStream.processed = 0;
878 910
879 block.unpackSize = blockSizes->unpackSize; 911 block.unpackSize = blockSizes->unpackSize;
880 XzBlock_SetHasUnpackSize(&block); 912 XzBlock_SetHasUnpackSize(&block)
881 913
882 block.packSize = packSize; 914 block.packSize = packSize;
883 XzBlock_SetHasPackSize(&block); 915 XzBlock_SetHasPackSize(&block)
884 916
885 RINOK(XzBlock_WriteHeader(&block, &seqSizeOutStream.vt)); 917 RINOK(XzBlock_WriteHeader(&block, &seqSizeOutStream.vt))
886 918
887 blockSizes->headerSize = (size_t)seqSizeOutStream.processed; 919 blockSizes->headerSize = (size_t)seqSizeOutStream.processed;
888 blockSizes->totalSize += seqSizeOutStream.processed; 920 blockSizes->totalSize += seqSizeOutStream.processed;
@@ -906,15 +938,15 @@ static SRes Xz_CompressBlock(
906typedef struct 938typedef struct
907{ 939{
908 ICompressProgress vt; 940 ICompressProgress vt;
909 ICompressProgress *progress; 941 ICompressProgressPtr progress;
910 UInt64 inOffset; 942 UInt64 inOffset;
911 UInt64 outOffset; 943 UInt64 outOffset;
912} CCompressProgress_XzEncOffset; 944} CCompressProgress_XzEncOffset;
913 945
914 946
915static SRes CompressProgress_XzEncOffset_Progress(const ICompressProgress *pp, UInt64 inSize, UInt64 outSize) 947static SRes CompressProgress_XzEncOffset_Progress(ICompressProgressPtr pp, UInt64 inSize, UInt64 outSize)
916{ 948{
917 const CCompressProgress_XzEncOffset *p = CONTAINER_FROM_VTBL(pp, CCompressProgress_XzEncOffset, vt); 949 const CCompressProgress_XzEncOffset *p = Z7_CONTAINER_FROM_VTBL_CONST(pp, CCompressProgress_XzEncOffset, vt);
918 inSize += p->inOffset; 950 inSize += p->inOffset;
919 outSize += p->outOffset; 951 outSize += p->outOffset;
920 return ICompressProgress_Progress(p->progress, inSize, outSize); 952 return ICompressProgress_Progress(p->progress, inSize, outSize);
@@ -923,7 +955,7 @@ static SRes CompressProgress_XzEncOffset_Progress(const ICompressProgress *pp, U
923 955
924 956
925 957
926typedef struct 958struct CXzEnc
927{ 959{
928 ISzAllocPtr alloc; 960 ISzAllocPtr alloc;
929 ISzAllocPtr allocBig; 961 ISzAllocPtr allocBig;
@@ -933,20 +965,19 @@ typedef struct
933 965
934 CXzEncIndex xzIndex; 966 CXzEncIndex xzIndex;
935 967
936 CLzma2WithFilters lzmaf_Items[MTCODER__THREADS_MAX]; 968 CLzma2WithFilters lzmaf_Items[MTCODER_THREADS_MAX];
937 969
938 size_t outBufSize; /* size of allocated outBufs[i] */ 970 size_t outBufSize; /* size of allocated outBufs[i] */
939 Byte *outBufs[MTCODER__BLOCKS_MAX]; 971 Byte *outBufs[MTCODER_BLOCKS_MAX];
940 972
941 #ifndef _7ZIP_ST 973 #ifndef Z7_ST
942 unsigned checkType; 974 unsigned checkType;
943 ISeqOutStream *outStream; 975 ISeqOutStreamPtr outStream;
944 BoolInt mtCoder_WasConstructed; 976 BoolInt mtCoder_WasConstructed;
945 CMtCoder mtCoder; 977 CMtCoder mtCoder;
946 CXzEncBlockInfo EncBlocks[MTCODER__BLOCKS_MAX]; 978 CXzEncBlockInfo EncBlocks[MTCODER_BLOCKS_MAX];
947 #endif 979 #endif
948 980};
949} CXzEnc;
950 981
951 982
952static void XzEnc_Construct(CXzEnc *p) 983static void XzEnc_Construct(CXzEnc *p)
@@ -955,13 +986,13 @@ static void XzEnc_Construct(CXzEnc *p)
955 986
956 XzEncIndex_Construct(&p->xzIndex); 987 XzEncIndex_Construct(&p->xzIndex);
957 988
958 for (i = 0; i < MTCODER__THREADS_MAX; i++) 989 for (i = 0; i < MTCODER_THREADS_MAX; i++)
959 Lzma2WithFilters_Construct(&p->lzmaf_Items[i]); 990 Lzma2WithFilters_Construct(&p->lzmaf_Items[i]);
960 991
961 #ifndef _7ZIP_ST 992 #ifndef Z7_ST
962 p->mtCoder_WasConstructed = False; 993 p->mtCoder_WasConstructed = False;
963 { 994 {
964 for (i = 0; i < MTCODER__BLOCKS_MAX; i++) 995 for (i = 0; i < MTCODER_BLOCKS_MAX; i++)
965 p->outBufs[i] = NULL; 996 p->outBufs[i] = NULL;
966 p->outBufSize = 0; 997 p->outBufSize = 0;
967 } 998 }
@@ -972,7 +1003,7 @@ static void XzEnc_Construct(CXzEnc *p)
972static void XzEnc_FreeOutBufs(CXzEnc *p) 1003static void XzEnc_FreeOutBufs(CXzEnc *p)
973{ 1004{
974 unsigned i; 1005 unsigned i;
975 for (i = 0; i < MTCODER__BLOCKS_MAX; i++) 1006 for (i = 0; i < MTCODER_BLOCKS_MAX; i++)
976 if (p->outBufs[i]) 1007 if (p->outBufs[i])
977 { 1008 {
978 ISzAlloc_Free(p->alloc, p->outBufs[i]); 1009 ISzAlloc_Free(p->alloc, p->outBufs[i]);
@@ -988,10 +1019,10 @@ static void XzEnc_Free(CXzEnc *p, ISzAllocPtr alloc)
988 1019
989 XzEncIndex_Free(&p->xzIndex, alloc); 1020 XzEncIndex_Free(&p->xzIndex, alloc);
990 1021
991 for (i = 0; i < MTCODER__THREADS_MAX; i++) 1022 for (i = 0; i < MTCODER_THREADS_MAX; i++)
992 Lzma2WithFilters_Free(&p->lzmaf_Items[i], alloc); 1023 Lzma2WithFilters_Free(&p->lzmaf_Items[i], alloc);
993 1024
994 #ifndef _7ZIP_ST 1025 #ifndef Z7_ST
995 if (p->mtCoder_WasConstructed) 1026 if (p->mtCoder_WasConstructed)
996 { 1027 {
997 MtCoder_Destruct(&p->mtCoder); 1028 MtCoder_Destruct(&p->mtCoder);
@@ -1013,37 +1044,38 @@ CXzEncHandle XzEnc_Create(ISzAllocPtr alloc, ISzAllocPtr allocBig)
1013 p->expectedDataSize = (UInt64)(Int64)-1; 1044 p->expectedDataSize = (UInt64)(Int64)-1;
1014 p->alloc = alloc; 1045 p->alloc = alloc;
1015 p->allocBig = allocBig; 1046 p->allocBig = allocBig;
1016 return p; 1047 return (CXzEncHandle)p;
1017} 1048}
1018 1049
1050// #define GET_CXzEnc_p CXzEnc *p = (CXzEnc *)(void *)pp;
1019 1051
1020void XzEnc_Destroy(CXzEncHandle pp) 1052void XzEnc_Destroy(CXzEncHandle p)
1021{ 1053{
1022 CXzEnc *p = (CXzEnc *)pp; 1054 // GET_CXzEnc_p
1023 XzEnc_Free(p, p->alloc); 1055 XzEnc_Free(p, p->alloc);
1024 ISzAlloc_Free(p->alloc, p); 1056 ISzAlloc_Free(p->alloc, p);
1025} 1057}
1026 1058
1027 1059
1028SRes XzEnc_SetProps(CXzEncHandle pp, const CXzProps *props) 1060SRes XzEnc_SetProps(CXzEncHandle p, const CXzProps *props)
1029{ 1061{
1030 CXzEnc *p = (CXzEnc *)pp; 1062 // GET_CXzEnc_p
1031 p->xzProps = *props; 1063 p->xzProps = *props;
1032 XzProps_Normalize(&p->xzProps); 1064 XzProps_Normalize(&p->xzProps);
1033 return SZ_OK; 1065 return SZ_OK;
1034} 1066}
1035 1067
1036 1068
1037void XzEnc_SetDataSize(CXzEncHandle pp, UInt64 expectedDataSiize) 1069void XzEnc_SetDataSize(CXzEncHandle p, UInt64 expectedDataSiize)
1038{ 1070{
1039 CXzEnc *p = (CXzEnc *)pp; 1071 // GET_CXzEnc_p
1040 p->expectedDataSize = expectedDataSiize; 1072 p->expectedDataSize = expectedDataSiize;
1041} 1073}
1042 1074
1043 1075
1044 1076
1045 1077
1046#ifndef _7ZIP_ST 1078#ifndef Z7_ST
1047 1079
1048static SRes XzEnc_MtCallback_Code(void *pp, unsigned coderIndex, unsigned outBufIndex, 1080static SRes XzEnc_MtCallback_Code(void *pp, unsigned coderIndex, unsigned outBufIndex,
1049 const Byte *src, size_t srcSize, int finished) 1081 const Byte *src, size_t srcSize, int finished)
@@ -1073,7 +1105,7 @@ static SRes XzEnc_MtCallback_Code(void *pp, unsigned coderIndex, unsigned outBuf
1073 1105
1074 MtProgressThunk_CreateVTable(&progressThunk); 1106 MtProgressThunk_CreateVTable(&progressThunk);
1075 progressThunk.mtProgress = &me->mtCoder.mtProgress; 1107 progressThunk.mtProgress = &me->mtCoder.mtProgress;
1076 MtProgressThunk_Init(&progressThunk); 1108 MtProgressThunk_INIT(&progressThunk)
1077 1109
1078 { 1110 {
1079 CXzEncBlockInfo blockSizes; 1111 CXzEncBlockInfo blockSizes;
@@ -1112,11 +1144,11 @@ static SRes XzEnc_MtCallback_Write(void *pp, unsigned outBufIndex)
1112 const CXzEncBlockInfo *bInfo = &me->EncBlocks[outBufIndex]; 1144 const CXzEncBlockInfo *bInfo = &me->EncBlocks[outBufIndex];
1113 const Byte *data = me->outBufs[outBufIndex]; 1145 const Byte *data = me->outBufs[outBufIndex];
1114 1146
1115 RINOK(WriteBytes(me->outStream, data, bInfo->headerSize)); 1147 RINOK(WriteBytes(me->outStream, data, bInfo->headerSize))
1116 1148
1117 { 1149 {
1118 UInt64 totalPackFull = bInfo->totalSize + XZ_GET_PAD_SIZE(bInfo->totalSize); 1150 UInt64 totalPackFull = bInfo->totalSize + XZ_GET_PAD_SIZE(bInfo->totalSize);
1119 RINOK(WriteBytes(me->outStream, data + XZ_BLOCK_HEADER_SIZE_MAX, (size_t)totalPackFull - bInfo->headerSize)); 1151 RINOK(WriteBytes(me->outStream, data + XZ_BLOCK_HEADER_SIZE_MAX, (size_t)totalPackFull - bInfo->headerSize))
1120 } 1152 }
1121 1153
1122 return XzEncIndex_AddIndexRecord(&me->xzIndex, bInfo->unpackSize, bInfo->totalSize, me->alloc); 1154 return XzEncIndex_AddIndexRecord(&me->xzIndex, bInfo->unpackSize, bInfo->totalSize, me->alloc);
@@ -1126,9 +1158,9 @@ static SRes XzEnc_MtCallback_Write(void *pp, unsigned outBufIndex)
1126 1158
1127 1159
1128 1160
1129SRes XzEnc_Encode(CXzEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStream, ICompressProgress *progress) 1161SRes XzEnc_Encode(CXzEncHandle p, ISeqOutStreamPtr outStream, ISeqInStreamPtr inStream, ICompressProgressPtr progress)
1130{ 1162{
1131 CXzEnc *p = (CXzEnc *)pp; 1163 // GET_CXzEnc_p
1132 1164
1133 const CXzProps *props = &p->xzProps; 1165 const CXzProps *props = &p->xzProps;
1134 1166
@@ -1137,7 +1169,7 @@ SRes XzEnc_Encode(CXzEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStr
1137 UInt64 numBlocks = 1; 1169 UInt64 numBlocks = 1;
1138 UInt64 blockSize = props->blockSize; 1170 UInt64 blockSize = props->blockSize;
1139 1171
1140 if (blockSize != XZ_PROPS__BLOCK_SIZE__SOLID 1172 if (blockSize != XZ_PROPS_BLOCK_SIZE_SOLID
1141 && props->reduceSize != (UInt64)(Int64)-1) 1173 && props->reduceSize != (UInt64)(Int64)-1)
1142 { 1174 {
1143 numBlocks = props->reduceSize / blockSize; 1175 numBlocks = props->reduceSize / blockSize;
@@ -1147,13 +1179,13 @@ SRes XzEnc_Encode(CXzEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStr
1147 else 1179 else
1148 blockSize = (UInt64)1 << 62; 1180 blockSize = (UInt64)1 << 62;
1149 1181
1150 RINOK(XzEncIndex_PreAlloc(&p->xzIndex, numBlocks, blockSize, XZ_GET_ESTIMATED_BLOCK_TOTAL_PACK_SIZE(blockSize), p->alloc)); 1182 RINOK(XzEncIndex_PreAlloc(&p->xzIndex, numBlocks, blockSize, XZ_GET_ESTIMATED_BLOCK_TOTAL_PACK_SIZE(blockSize), p->alloc))
1151 } 1183 }
1152 1184
1153 RINOK(Xz_WriteHeader((CXzStreamFlags)props->checkId, outStream)); 1185 RINOK(Xz_WriteHeader((CXzStreamFlags)props->checkId, outStream))
1154 1186
1155 1187
1156 #ifndef _7ZIP_ST 1188 #ifndef Z7_ST
1157 if (props->numBlockThreads_Reduced > 1) 1189 if (props->numBlockThreads_Reduced > 1)
1158 { 1190 {
1159 IMtCoderCallback2 vt; 1191 IMtCoderCallback2 vt;
@@ -1180,8 +1212,8 @@ SRes XzEnc_Encode(CXzEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStr
1180 p->mtCoder.mtCallback = &vt; 1212 p->mtCoder.mtCallback = &vt;
1181 p->mtCoder.mtCallbackObject = p; 1213 p->mtCoder.mtCallbackObject = p;
1182 1214
1183 if ( props->blockSize == XZ_PROPS__BLOCK_SIZE__SOLID 1215 if ( props->blockSize == XZ_PROPS_BLOCK_SIZE_SOLID
1184 || props->blockSize == XZ_PROPS__BLOCK_SIZE__AUTO) 1216 || props->blockSize == XZ_PROPS_BLOCK_SIZE_AUTO)
1185 return SZ_ERROR_FAIL; 1217 return SZ_ERROR_FAIL;
1186 1218
1187 p->mtCoder.blockSize = (size_t)props->blockSize; 1219 p->mtCoder.blockSize = (size_t)props->blockSize;
@@ -1200,7 +1232,7 @@ SRes XzEnc_Encode(CXzEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStr
1200 p->mtCoder.numThreadsMax = (unsigned)props->numBlockThreads_Max; 1232 p->mtCoder.numThreadsMax = (unsigned)props->numBlockThreads_Max;
1201 p->mtCoder.expectedDataSize = p->expectedDataSize; 1233 p->mtCoder.expectedDataSize = p->expectedDataSize;
1202 1234
1203 RINOK(MtCoder_Code(&p->mtCoder)); 1235 RINOK(MtCoder_Code(&p->mtCoder))
1204 } 1236 }
1205 else 1237 else
1206 #endif 1238 #endif
@@ -1217,7 +1249,7 @@ SRes XzEnc_Encode(CXzEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStr
1217 1249
1218 writeStartSizes = 0; 1250 writeStartSizes = 0;
1219 1251
1220 if (props->blockSize != XZ_PROPS__BLOCK_SIZE__SOLID) 1252 if (props->blockSize != XZ_PROPS_BLOCK_SIZE_SOLID)
1221 { 1253 {
1222 writeStartSizes = (props->forceWriteSizesInHeader > 0); 1254 writeStartSizes = (props->forceWriteSizesInHeader > 0);
1223 1255
@@ -1274,18 +1306,18 @@ SRes XzEnc_Encode(CXzEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStr
1274 &inStreamFinished, 1306 &inStreamFinished,
1275 &blockSizes, 1307 &blockSizes,
1276 p->alloc, 1308 p->alloc,
1277 p->allocBig)); 1309 p->allocBig))
1278 1310
1279 { 1311 {
1280 UInt64 totalPackFull = blockSizes.totalSize + XZ_GET_PAD_SIZE(blockSizes.totalSize); 1312 UInt64 totalPackFull = blockSizes.totalSize + XZ_GET_PAD_SIZE(blockSizes.totalSize);
1281 1313
1282 if (writeStartSizes) 1314 if (writeStartSizes)
1283 { 1315 {
1284 RINOK(WriteBytes(outStream, p->outBufs[0], blockSizes.headerSize)); 1316 RINOK(WriteBytes(outStream, p->outBufs[0], blockSizes.headerSize))
1285 RINOK(WriteBytes(outStream, bufData, (size_t)totalPackFull - blockSizes.headerSize)); 1317 RINOK(WriteBytes(outStream, bufData, (size_t)totalPackFull - blockSizes.headerSize))
1286 } 1318 }
1287 1319
1288 RINOK(XzEncIndex_AddIndexRecord(&p->xzIndex, blockSizes.unpackSize, blockSizes.totalSize, p->alloc)); 1320 RINOK(XzEncIndex_AddIndexRecord(&p->xzIndex, blockSizes.unpackSize, blockSizes.totalSize, p->alloc))
1289 1321
1290 progress2.inOffset += blockSizes.unpackSize; 1322 progress2.inOffset += blockSizes.unpackSize;
1291 progress2.outOffset += totalPackFull; 1323 progress2.outOffset += totalPackFull;
@@ -1302,8 +1334,8 @@ SRes XzEnc_Encode(CXzEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStr
1302 1334
1303#include "Alloc.h" 1335#include "Alloc.h"
1304 1336
1305SRes Xz_Encode(ISeqOutStream *outStream, ISeqInStream *inStream, 1337SRes Xz_Encode(ISeqOutStreamPtr outStream, ISeqInStreamPtr inStream,
1306 const CXzProps *props, ICompressProgress *progress) 1338 const CXzProps *props, ICompressProgressPtr progress)
1307{ 1339{
1308 SRes res; 1340 SRes res;
1309 CXzEncHandle xz = XzEnc_Create(&g_Alloc, &g_BigAlloc); 1341 CXzEncHandle xz = XzEnc_Create(&g_Alloc, &g_BigAlloc);
@@ -1317,7 +1349,7 @@ SRes Xz_Encode(ISeqOutStream *outStream, ISeqInStream *inStream,
1317} 1349}
1318 1350
1319 1351
1320SRes Xz_EncodeEmpty(ISeqOutStream *outStream) 1352SRes Xz_EncodeEmpty(ISeqOutStreamPtr outStream)
1321{ 1353{
1322 SRes res; 1354 SRes res;
1323 CXzEncIndex xzIndex; 1355 CXzEncIndex xzIndex;