XZ Utils
5.2.5
|
Multithreading options. More...
#include <container.h>
Data Fields | |
uint32_t | flags |
Flags. More... | |
uint32_t | threads |
Number of worker threads to use. More... | |
uint64_t | block_size |
Maximum uncompressed size of a Block. More... | |
uint32_t | timeout |
Timeout to allow lzma_code() to return early. More... | |
uint32_t | preset |
Compression preset (level and possible flags) More... | |
const lzma_filter * | filters |
Filter chain (alternative to a preset) More... | |
lzma_check | check |
Integrity check type. More... | |
lzma_reserved_enum | reserved_enum1 |
lzma_reserved_enum | reserved_enum2 |
lzma_reserved_enum | reserved_enum3 |
uint32_t | reserved_int1 |
uint32_t | reserved_int2 |
uint32_t | reserved_int3 |
uint32_t | reserved_int4 |
uint64_t | reserved_int5 |
uint64_t | reserved_int6 |
uint64_t | reserved_int7 |
uint64_t | reserved_int8 |
void * | reserved_ptr1 |
void * | reserved_ptr2 |
void * | reserved_ptr3 |
void * | reserved_ptr4 |
Multithreading options.
uint32_t lzma_mt::flags |
Flags.
Set this to zero if no flags are wanted.
No flags are currently supported.
Referenced by get_options().
uint32_t lzma_mt::threads |
Number of worker threads to use.
Referenced by get_options().
uint64_t lzma_mt::block_size |
Maximum uncompressed size of a Block.
The encoder will start a new .xz Block every block_size bytes. Using LZMA_FULL_FLUSH or LZMA_FULL_BARRIER with lzma_code() the caller may tell liblzma to start a new Block earlier.
With LZMA2, a recommended block size is 2-4 times the LZMA2 dictionary size. With very small dictionaries, it is recommended to use at least 1 MiB block size for good compression ratio, even if this is more than four times the dictionary size. Note that these are only recommendations for typical use cases; feel free to use other values. Just keep in mind that using a block size less than the LZMA2 dictionary size is waste of RAM.
Set this to 0 to let liblzma choose the block size depending on the compression options. For LZMA2 it will be 3*dict_size or 1 MiB, whichever is more.
For each thread, about 3 * block_size bytes of memory will be allocated. This may change in later liblzma versions. If so, the memory usage will probably be reduced, not increased.
Referenced by get_options().
uint32_t lzma_mt::timeout |
Timeout to allow lzma_code() to return early.
Multithreading can make liblzma to consume input and produce output in a very bursty way: it may first read a lot of input to fill internal buffers, then no input or output occurs for a while.
In single-threaded mode, lzma_code() won't return until it has either consumed all the input or filled the output buffer. If this is done in multithreaded mode, it may cause a call lzma_code() to take even tens of seconds, which isn't acceptable in all applications.
To avoid very long blocking times in lzma_code(), a timeout (in milliseconds) may be set here. If lzma_code() would block longer than this number of milliseconds, it will return with LZMA_OK. Reasonable values are 100 ms or more. The xz command line tool uses 300 ms.
If long blocking times are fine for you, set timeout to a special value of 0, which will disable the timeout mechanism and will make lzma_code() block until all the input is consumed or the output buffer has been filled.
uint32_t lzma_mt::preset |
Compression preset (level and possible flags)
The preset is set just like with lzma_easy_encoder(). The preset is ignored if filters below is non-NULL.
Referenced by get_options().
const lzma_filter* lzma_mt::filters |
Filter chain (alternative to a preset)
If this is NULL, the preset above is used. Otherwise the preset is ignored and the filter chain specified here is used.
Referenced by get_options().
lzma_check lzma_mt::check |
Integrity check type.
See check.h for available checks. The xz command line tool defaults to LZMA_CHECK_CRC64, which is a good choice if you are unsure.