|
lzma_ret | lzma_block_header_size (lzma_block *block) lzma_nothrow lzma_attr_warn_unused_result |
| Calculate Block Header Size.
|
|
lzma_ret | lzma_block_header_encode (const lzma_block *block, uint8_t *out) lzma_nothrow lzma_attr_warn_unused_result |
| Encode Block Header.
|
|
lzma_ret | lzma_block_header_decode (lzma_block *block, const lzma_allocator *allocator, const uint8_t *in) lzma_nothrow lzma_attr_warn_unused_result |
| Decode Block Header.
|
|
lzma_ret | lzma_block_compressed_size (lzma_block *block, lzma_vli unpadded_size) lzma_nothrow lzma_attr_warn_unused_result |
| Validate and set Compressed Size according to Unpadded Size.
|
|
lzma_vli | lzma_block_unpadded_size (const lzma_block *block) lzma_nothrow lzma_attr_pure |
| Calculate Unpadded Size.
|
|
lzma_vli | lzma_block_total_size (const lzma_block *block) lzma_nothrow lzma_attr_pure |
| Calculate the total encoded size of a Block.
|
|
lzma_ret | lzma_block_encoder (lzma_stream *strm, lzma_block *block) lzma_nothrow lzma_attr_warn_unused_result |
| Initialize .xz Block encoder.
|
|
lzma_ret | lzma_block_decoder (lzma_stream *strm, lzma_block *block) lzma_nothrow lzma_attr_warn_unused_result |
| Initialize .xz Block decoder.
|
|
size_t | lzma_block_buffer_bound (size_t uncompressed_size) lzma_nothrow |
| Calculate maximum output size for single-call Block encoding.
|
|
lzma_ret | lzma_block_buffer_encode (lzma_block *block, const lzma_allocator *allocator, const uint8_t *in, size_t in_size, uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow lzma_attr_warn_unused_result |
| Single-call .xz Block encoder.
|
|
lzma_ret | lzma_block_uncomp_encode (lzma_block *block, const uint8_t *in, size_t in_size, uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow lzma_attr_warn_unused_result |
| Single-call uncompressed .xz Block encoder.
|
|
lzma_ret | lzma_block_buffer_decode (lzma_block *block, const lzma_allocator *allocator, const uint8_t *in, size_t *in_pos, size_t in_size, uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow |
| Single-call .xz Block decoder.
|
|
Decode Block Header.
block->version should (usually) be set to the highest value supported by the application. If the application sets block->version to a value higher than supported by the current liblzma version, this function will downgrade block->version to the highest value supported by it. Thus one should check the value of block->version after calling this function if block->version was set to a non-zero value and the application doesn't otherwise know that the liblzma version being used is new enough to support the specified block->version.
The size of the Block Header must have already been decoded with lzma_block_header_size_decode() macro and stored to block->header_size.
The integrity check type from Stream Header must have been stored to block->check.
block->filters must have been allocated, but they don't need to be initialized (possible existing filter options are not freed).
- Parameters
-
[out] | block | Destination for Block options |
| allocator | lzma_allocator for custom allocator functions. Set to NULL to use malloc() (and also free() if an error occurs). |
| in | Beginning of the input buffer. This must be at least block->header_size bytes. |
- Returns
- Possible lzma_ret values:
- LZMA_OK: Decoding was successful. block->header_size bytes were read from the input buffer.
- LZMA_OPTIONS_ERROR: The Block Header specifies some unsupported options such as unsupported filters. This can happen also if block->version was set to a too low value compared to what would be required to properly represent the information stored in the Block Header.
- LZMA_DATA_ERROR: Block Header is corrupt, for example, the CRC32 doesn't match.
- LZMA_PROG_ERROR: Invalid arguments, for example block->header_size is invalid or block->filters is NULL.
Initialize .xz Block encoder.
Valid actions for lzma_code() are LZMA_RUN, LZMA_SYNC_FLUSH (only if the filter chain supports it), and LZMA_FINISH.
The Block encoder encodes the Block Data, Block Padding, and Check value. It does NOT encode the Block Header which can be encoded with lzma_block_header_encode().
- Parameters
-
strm | Pointer to lzma_stream that is at least initialized with LZMA_STREAM_INIT. |
block | Block options: block->version, block->check, and block->filters must have been initialized. |
- Returns
- Possible lzma_ret values:
- LZMA_OK: All good, continue with lzma_code().
- LZMA_MEM_ERROR
- LZMA_OPTIONS_ERROR
- LZMA_UNSUPPORTED_CHECK: block->check specifies a Check ID that is not supported by this build of liblzma. Initializing the encoder failed.
- LZMA_PROG_ERROR
lzma_ret lzma_block_buffer_encode |
( |
lzma_block * |
block, |
|
|
const lzma_allocator * |
allocator, |
|
|
const uint8_t * |
in, |
|
|
size_t |
in_size, |
|
|
uint8_t * |
out, |
|
|
size_t * |
out_pos, |
|
|
size_t |
out_size |
|
) |
| |
|
extern |
Single-call .xz Block encoder.
In contrast to the multi-call encoder initialized with lzma_block_encoder(), this function encodes also the Block Header. This is required to make it possible to write appropriate Block Header also in case the data isn't compressible, and different filter chain has to be used to encode the data in uncompressed form using uncompressed chunks of the LZMA2 filter.
When the data isn't compressible, header_size, compressed_size, and uncompressed_size are set just like when the data was compressible, but it is possible that header_size is too small to hold the filter chain specified in block->filters, because that isn't necessarily the filter chain that was actually used to encode the data. lzma_block_unpadded_size() still works normally, because it doesn't read the filters array.
- Parameters
-
| block | Block options: block->version, block->check, and block->filters must have been initialized. |
| allocator | lzma_allocator for custom allocator functions. Set to NULL to use malloc() and free(). |
| in | Beginning of the input buffer |
| in_size | Size of the input buffer |
[out] | out | Beginning of the output buffer |
[out] | out_pos | The next byte will be written to out[*out_pos]. *out_pos is updated only if encoding succeeds. |
| out_size | Size of the out buffer; the first byte into which no data is written to is out[out_size]. |
- Returns
- Possible lzma_ret values:
- LZMA_OK: Encoding was successful.
- LZMA_BUF_ERROR: Not enough output buffer space.
- LZMA_UNSUPPORTED_CHECK
- LZMA_OPTIONS_ERROR
- LZMA_MEM_ERROR
- LZMA_DATA_ERROR
- LZMA_PROG_ERROR
lzma_ret lzma_block_uncomp_encode |
( |
lzma_block * |
block, |
|
|
const uint8_t * |
in, |
|
|
size_t |
in_size, |
|
|
uint8_t * |
out, |
|
|
size_t * |
out_pos, |
|
|
size_t |
out_size |
|
) |
| |
|
extern |
Single-call uncompressed .xz Block encoder.
This is like lzma_block_buffer_encode() except this doesn't try to compress the data and instead encodes the data using LZMA2 uncompressed chunks. The required output buffer size can be determined with lzma_block_buffer_bound().
Since the data won't be compressed, this function ignores block->filters. This function doesn't take lzma_allocator because this function doesn't allocate any memory from the heap.
- Parameters
-
| block | Block options: block->version, block->check, and block->filters must have been initialized. |
| in | Beginning of the input buffer |
| in_size | Size of the input buffer |
[out] | out | Beginning of the output buffer |
[out] | out_pos | The next byte will be written to out[*out_pos]. *out_pos is updated only if encoding succeeds. |
| out_size | Size of the out buffer; the first byte into which no data is written to is out[out_size]. |
- Returns
- Possible lzma_ret values:
- LZMA_OK: Encoding was successful.
- LZMA_BUF_ERROR: Not enough output buffer space.
- LZMA_UNSUPPORTED_CHECK
- LZMA_OPTIONS_ERROR
- LZMA_MEM_ERROR
- LZMA_DATA_ERROR
- LZMA_PROG_ERROR