Parolin 0.7.9 6796
Console (soon DLLs) to do a tar like job
Loading...
Searching...
No Matches
lzma_stream_coder Struct Reference

Public Types

enum  {
  SEQ_STREAM_HEADER , SEQ_BLOCK_HEADER , SEQ_BLOCK_INIT , SEQ_BLOCK_RUN ,
  SEQ_INDEX , SEQ_STREAM_FOOTER , SEQ_STREAM_PADDING
}
 
enum  {
  SEQ_STREAM_HEADER , SEQ_BLOCK_HEADER , SEQ_BLOCK_INIT , SEQ_BLOCK_THR_INIT ,
  SEQ_BLOCK_THR_RUN , SEQ_BLOCK_DIRECT_INIT , SEQ_BLOCK_DIRECT_RUN , SEQ_INDEX_WAIT_OUTPUT ,
  SEQ_INDEX_DECODE , SEQ_STREAM_FOOTER , SEQ_STREAM_PADDING , SEQ_ERROR
}
 
enum  {
  SEQ_STREAM_HEADER , SEQ_BLOCK_INIT , SEQ_BLOCK_HEADER , SEQ_BLOCK_ENCODE ,
  SEQ_INDEX_ENCODE , SEQ_STREAM_FOOTER
}
 
enum  {
  SEQ_STREAM_HEADER , SEQ_BLOCK_HEADER , SEQ_BLOCK_INIT , SEQ_BLOCK_RUN ,
  SEQ_INDEX , SEQ_STREAM_FOOTER , SEQ_STREAM_PADDING
}
 
enum  {
  SEQ_STREAM_HEADER , SEQ_BLOCK_HEADER , SEQ_BLOCK_INIT , SEQ_BLOCK_THR_INIT ,
  SEQ_BLOCK_THR_RUN , SEQ_BLOCK_DIRECT_INIT , SEQ_BLOCK_DIRECT_RUN , SEQ_INDEX_WAIT_OUTPUT ,
  SEQ_INDEX_DECODE , SEQ_STREAM_FOOTER , SEQ_STREAM_PADDING , SEQ_ERROR
}
 
enum  {
  SEQ_STREAM_HEADER , SEQ_BLOCK_INIT , SEQ_BLOCK_HEADER , SEQ_BLOCK_ENCODE ,
  SEQ_INDEX_ENCODE , SEQ_STREAM_FOOTER
}
 
enum  {
  SEQ_STREAM_HEADER , SEQ_BLOCK_HEADER , SEQ_BLOCK_INIT , SEQ_BLOCK_RUN ,
  SEQ_INDEX , SEQ_STREAM_FOOTER , SEQ_STREAM_PADDING
}
 
enum  {
  SEQ_STREAM_HEADER , SEQ_BLOCK_HEADER , SEQ_BLOCK_INIT , SEQ_BLOCK_THR_INIT ,
  SEQ_BLOCK_THR_RUN , SEQ_BLOCK_DIRECT_INIT , SEQ_BLOCK_DIRECT_RUN , SEQ_INDEX_WAIT_OUTPUT ,
  SEQ_INDEX_DECODE , SEQ_STREAM_FOOTER , SEQ_STREAM_PADDING , SEQ_ERROR
}
 
enum  {
  SEQ_STREAM_HEADER , SEQ_BLOCK_INIT , SEQ_BLOCK_HEADER , SEQ_BLOCK_ENCODE ,
  SEQ_INDEX_ENCODE , SEQ_STREAM_FOOTER
}
 

Data Fields

enum lzma_stream_coder:: { ... }  sequence
 
lzma_next_coder block_decoder
 Block decoder.
 
lzma_block block_options
 Options for the Block encoder.
 
lzma_stream_flags stream_flags
 Stream Flags from Stream Header.
 
lzma_index_hashindex_hash
 
uint64_t memlimit
 Memory usage limit.
 
uint64_t memusage
 Amount of memory actually needed (only an estimate)
 
bool tell_no_check
 
bool tell_unsupported_check
 
bool tell_any_check
 If true, LZMA_GET_CHECK is returned after decoding Stream Header.
 
bool ignore_check
 
bool concatenated
 
bool first_stream
 
size_t pos
 Write position in buffer[] and position in Stream Padding.
 
uint8_t buffer [LZMA_BLOCK_HEADER_SIZE_MAX]
 
enum lzma_stream_coder:: { ... }  sequence
 
lzma_filter filters [LZMA_FILTERS_MAX+1]
 The filter chain currently in use.
 
uint32_t timeout
 
lzma_ret thread_error
 
lzma_ret pending_error
 
uint32_t threads_max
 Number of threads that will be created at maximum.
 
uint32_t threads_initialized
 
struct worker_threadthreads
 
struct worker_threadthreads_free
 
struct worker_threadthr
 
lzma_outq outq
 
mythread_mutex mutex
 
mythread_cond cond
 
uint64_t memlimit_threading
 
uint64_t memlimit_stop
 
uint64_t mem_direct_mode
 
uint64_t mem_in_use
 
uint64_t mem_cached
 
uint64_t mem_next_filters
 Amount of memory needed for the filter chain of the next Block.
 
uint64_t mem_next_in
 
uint64_t mem_next_block
 
uint64_t progress_in
 
uint64_t progress_out
 
bool fail_fast
 
bool out_was_filled
 
enum lzma_stream_coder:: { ... }  sequence
 
bool block_encoder_is_initialized
 
lzma_next_coder block_encoder
 Block.
 
lzma_next_coder index_encoder
 
lzma_indexindex
 Index to hold sizes of the Blocks.
 
size_t buffer_pos
 Read position in buffer[].
 
size_t buffer_size
 Total number of bytes in buffer[].
 
enum lzma_stream_coder:: { ... }  sequence
 
enum lzma_stream_coder:: { ... }  sequence
 
enum lzma_stream_coder:: { ... }  sequence
 
enum lzma_stream_coder:: { ... }  sequence
 
enum lzma_stream_coder:: { ... }  sequence
 
enum lzma_stream_coder:: { ... }  sequence
 

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
SEQ_STREAM_HEADER 
SEQ_BLOCK_HEADER 
SEQ_BLOCK_INIT 
SEQ_BLOCK_RUN 
SEQ_INDEX 
SEQ_STREAM_FOOTER 
SEQ_STREAM_PADDING 

◆ anonymous enum

anonymous enum
Enumerator
SEQ_STREAM_HEADER 
SEQ_BLOCK_HEADER 
SEQ_BLOCK_INIT 
SEQ_BLOCK_THR_INIT 
SEQ_BLOCK_THR_RUN 
SEQ_BLOCK_DIRECT_INIT 
SEQ_BLOCK_DIRECT_RUN 
SEQ_INDEX_WAIT_OUTPUT 
SEQ_INDEX_DECODE 
SEQ_STREAM_FOOTER 
SEQ_STREAM_PADDING 
SEQ_ERROR 

◆ anonymous enum

anonymous enum
Enumerator
SEQ_STREAM_HEADER 
SEQ_BLOCK_INIT 
SEQ_BLOCK_HEADER 
SEQ_BLOCK_ENCODE 
SEQ_INDEX_ENCODE 
SEQ_STREAM_FOOTER 

◆ anonymous enum

anonymous enum
Enumerator
SEQ_STREAM_HEADER 
SEQ_BLOCK_HEADER 
SEQ_BLOCK_INIT 
SEQ_BLOCK_RUN 
SEQ_INDEX 
SEQ_STREAM_FOOTER 
SEQ_STREAM_PADDING 

◆ anonymous enum

anonymous enum
Enumerator
SEQ_STREAM_HEADER 
SEQ_BLOCK_HEADER 
SEQ_BLOCK_INIT 
SEQ_BLOCK_THR_INIT 
SEQ_BLOCK_THR_RUN 
SEQ_BLOCK_DIRECT_INIT 
SEQ_BLOCK_DIRECT_RUN 
SEQ_INDEX_WAIT_OUTPUT 
SEQ_INDEX_DECODE 
SEQ_STREAM_FOOTER 
SEQ_STREAM_PADDING 
SEQ_ERROR 

◆ anonymous enum

anonymous enum
Enumerator
SEQ_STREAM_HEADER 
SEQ_BLOCK_INIT 
SEQ_BLOCK_HEADER 
SEQ_BLOCK_ENCODE 
SEQ_INDEX_ENCODE 
SEQ_STREAM_FOOTER 

◆ anonymous enum

anonymous enum
Enumerator
SEQ_STREAM_HEADER 
SEQ_BLOCK_HEADER 
SEQ_BLOCK_INIT 
SEQ_BLOCK_RUN 
SEQ_INDEX 
SEQ_STREAM_FOOTER 
SEQ_STREAM_PADDING 

◆ anonymous enum

anonymous enum
Enumerator
SEQ_STREAM_HEADER 
SEQ_BLOCK_HEADER 
SEQ_BLOCK_INIT 
SEQ_BLOCK_THR_INIT 
SEQ_BLOCK_THR_RUN 
SEQ_BLOCK_DIRECT_INIT 
SEQ_BLOCK_DIRECT_RUN 
SEQ_INDEX_WAIT_OUTPUT 
SEQ_INDEX_DECODE 
SEQ_STREAM_FOOTER 
SEQ_STREAM_PADDING 
SEQ_ERROR 

◆ anonymous enum

anonymous enum
Enumerator
SEQ_STREAM_HEADER 
SEQ_BLOCK_INIT 
SEQ_BLOCK_HEADER 
SEQ_BLOCK_ENCODE 
SEQ_INDEX_ENCODE 
SEQ_STREAM_FOOTER 

Field Documentation

◆ block_decoder

lzma_next_coder block_decoder

Block decoder.

◆ block_encoder

lzma_next_coder block_encoder

Block.

◆ block_encoder_is_initialized

bool block_encoder_is_initialized

True if Block encoder has been initialized by stream_encoder_init() or stream_encoder_update() and thus doesn't need to be initialized in stream_encode().

◆ block_options

lzma_block block_options

Options for the Block encoder.

Block options decoded by the Block Header decoder and used by the Block decoder.

Every Block Header will be decoded into this structure. This is also used to initialize a Block decoder when in direct mode. In threaded mode, a thread-specific copy will be made for decoder initialization because the Block decoder will modify the structure given to it.

◆ buffer

uint8_t buffer

Buffer to hold Stream Header, Block Header, and Stream Footer. Block Header has biggest maximum size.

◆ buffer_pos

size_t buffer_pos

Read position in buffer[].

◆ buffer_size

size_t buffer_size

Total number of bytes in buffer[].

◆ concatenated

bool concatenated

If true, we will decode concatenated Streams that possibly have Stream Padding between or after them. LZMA_STREAM_END is returned once the application isn't giving us any new input (LZMA_FINISH), and we aren't in the middle of a Stream, and possible Stream Padding is a multiple of four bytes.

◆ cond

mythread_cond cond

◆ fail_fast

bool fail_fast

If true, we will return any errors immediately instead of first producing all output before the location of the error.

◆ filters

lzma_filter filters

The filter chain currently in use.

Buffer to hold a filter chain for Block Header decoding and initialization. These are freed after successful Block decoder initialization or at stream_decoder_mt_end(). The thread-specific copy of block_options won't hold a pointer to filters[] after initialization.

◆ first_stream

bool first_stream

When decoding concatenated Streams, this is true as long as we are decoding the first Stream. This is needed to avoid misleading LZMA_FORMAT_ERROR in case the later Streams don't have valid magic bytes.

◆ ignore_check

bool ignore_check

If true, we will tell the Block decoder to skip calculating and verifying the integrity check.

◆ index

lzma_index * index

Index to hold sizes of the Blocks.

◆ index_encoder

lzma_next_coder index_encoder

Index encoder. This is separate from Block encoder, because this doesn't take much memory, and when encoding multiple Streams with the same encoding options we avoid reallocating memory.

◆ index_hash

lzma_index_hash * index_hash

Index is hashed so that it can be compared to the sizes of Blocks with O(1) memory usage.

◆ mem_cached

uint64_t mem_cached

Amount of memory used by the idle (cached) threads.

Note
Use mutex.

◆ mem_direct_mode

uint64_t mem_direct_mode

Amount of memory in use by the direct mode decoder (coder->block_decoder). In threaded mode this is 0.

◆ mem_in_use

uint64_t mem_in_use

Amount of memory needed by the running worker threads. This doesn't include the memory needed by the output buffer.

Note
Use mutex.

◆ mem_next_block

uint64_t mem_next_block

Amount of memory actually needed to decode the next Block in threaded mode. This is mem_next_filters + mem_next_in + memory needed for lzma_outbuf.

◆ mem_next_filters

uint64_t mem_next_filters

Amount of memory needed for the filter chain of the next Block.

◆ mem_next_in

uint64_t mem_next_in

Amount of memory needed for the thread-specific input buffer for the next Block.

◆ memlimit

uint64_t memlimit

Memory usage limit.

◆ memlimit_stop

uint64_t memlimit_stop

Memory usage limit that should never be exceeded. LZMA_MEMLIMIT_ERROR will be returned if decoding isn't possible even in single-threaded mode without exceeding this limit.

◆ memlimit_threading

uint64_t memlimit_threading

Memory usage that will not be exceeded in multi-threaded mode. Single-threaded mode can exceed this even by a large amount.

◆ memusage

uint64_t memusage

Amount of memory actually needed (only an estimate)

◆ mutex

mythread_mutex mutex

◆ out_was_filled

bool out_was_filled

This is used to track if the previous call to stream_decode_mt() had output space (*out_pos < out_size) and managed to fill the output buffer (*out_pos == out_size). This may be set to true in read_output_and_wait(). This is read and then reset to false at the beginning of stream_decode_mt().

This is needed to support applications that call lzma_code() in such a way that more input is provided only when lzma_code() didn't fill the output buffer completely. Basically, this makes it easier to convert such applications from single-threaded decoder to multi-threaded decoder.

◆ outq

lzma_outq outq

Output buffer queue for decompressed data from the worker threads

Note
Use mutex with operations that need it.

◆ pending_error

lzma_ret pending_error

Error code to return after pending output has been copied out. If set in read_output_and_wait(), this is a mirror of thread_error. If set in stream_decode_mt() then it's, for example, error that occurred when decoding Block Header.

◆ pos

size_t pos

Write position in buffer[] and position in Stream Padding.

◆ progress_in

uint64_t progress_in

Amount of compressed data in Stream Header + Blocks that have already been finished.

Note
Use mutex.

◆ progress_out

uint64_t progress_out

Amount of uncompressed data in Blocks that have already been finished.

Note
Use mutex.

◆ [] [1/9]

enum { ... } sequence

◆ [] [2/9]

enum { ... } sequence

◆ [] [3/9]

enum { ... } sequence

◆ [] [4/9]

enum { ... } sequence

◆ [] [5/9]

enum { ... } sequence

◆ [] [6/9]

enum { ... } sequence

◆ [] [7/9]

enum { ... } sequence

◆ [] [8/9]

enum { ... } sequence

◆ [] [9/9]

enum { ... } sequence

◆ stream_flags

lzma_stream_flags stream_flags

Stream Flags from Stream Header.

◆ tell_any_check

bool tell_any_check

If true, LZMA_GET_CHECK is returned after decoding Stream Header.

◆ tell_no_check

bool tell_no_check

If true, LZMA_NO_CHECK is returned if the Stream has no integrity check.

◆ tell_unsupported_check

bool tell_unsupported_check

If true, LZMA_UNSUPPORTED_CHECK is returned if the Stream has an integrity check that isn't supported by this liblzma build.

◆ thr

struct worker_thread * thr

The most recent worker thread to which the main thread writes the new input from the application.

◆ thread_error

lzma_ret thread_error

Error code from a worker thread.

Note
Use mutex.

◆ threads

struct worker_thread * threads

Array of allocated thread-specific structures. When no threads are in use (direct mode) this is NULL. In threaded mode this points to an array of threads_max number of worker_thread structs.

◆ threads_free

struct worker_thread * threads_free

Stack of free threads. When a thread finishes, it puts itself back into this stack. This starts as empty because threads are created only when actually needed.

Note
Use mutex.

◆ threads_initialized

uint32_t threads_initialized

Number of thread structures that have been initialized from "threads", and thus the number of worker threads actually created so far.

◆ threads_max

uint32_t threads_max

Number of threads that will be created at maximum.

◆ timeout

uint32_t timeout

Maximum wait time if cannot use all the input and cannot fill the output buffer. This is in milliseconds.


The documentation for this struct was generated from the following files: