120ZXC_EXPORT int64_t
zxc_compress(
const void* src,
const size_t src_size,
void* dst,
158ZXC_EXPORT int64_t
zxc_decompress(
const void* src,
const size_t src_size,
void* dst,
201 const size_t comp_size,
469 void* dst,
const size_t dst_capacity,
645 const size_t buffer_capacity,
const size_t comp_size,
768 const size_t block_size);
struct zxc_cctx_s zxc_cctx
Opaque reusable compression context (see zxc_create_cctx).
uint64_t zxc_compress_block_bound(size_t input_size)
Maximum compressed size for a single block.
uint64_t zxc_estimate_cctx_size(size_t src_size, int level)
Estimates peak compression memory for a given block size and level.
int64_t zxc_compress_block(zxc_cctx *cctx, const void *src, size_t src_size, void *dst, size_t dst_capacity, const zxc_compress_opts_t *opts)
Compresses a single block without file framing.
struct zxc_dctx_s zxc_dctx
Opaque reusable decompression context (see zxc_create_dctx).
int64_t zxc_decompress_block_safe(zxc_dctx *dctx, const void *src, const size_t src_size, void *dst, const size_t dst_capacity, const zxc_decompress_opts_t *opts)
Decompresses a single block into an exactly-sized destination.
int64_t zxc_decompress_block(zxc_dctx *dctx, const void *src, size_t src_size, void *dst, size_t dst_capacity, const zxc_decompress_opts_t *opts)
Decompresses a single block produced by zxc_compress_block().
uint64_t zxc_decompress_block_bound(const size_t uncompressed_size)
Minimum dst_capacity zxc_decompress_block() needs for a block of uncompressed_size bytes.
int64_t zxc_decompress(const void *src, const size_t src_size, void *dst, const size_t dst_capacity, const zxc_decompress_opts_t *opts)
Decompresses a complete ZXC archive.
size_t zxc_frame_info_size(void)
Returns sizeof(zxc_frame_info_t) as compiled into the library.
int zxc_get_frame_info(const void *src, size_t src_size, zxc_frame_info_t *info, size_t info_size)
Reads a frame's header and footer, without decoding.
uint64_t zxc_get_decompressed_size(const void *src, const size_t src_size)
Reads the original size from the archive footers, without decoding.
int64_t zxc_compress(const void *src, const size_t src_size, void *dst, const size_t dst_capacity, const zxc_compress_opts_t *opts)
Compresses a buffer into a complete ZXC archive.
int64_t zxc_decompress_inplace(void *buffer, const size_t buffer_capacity, const size_t comp_size, const zxc_decompress_opts_t *opts)
Decompresses inside a single caller-owned buffer.
size_t zxc_decompress_inplace_bound(const void *src, const size_t src_size)
Buffer size required for an in-place decompression of src.
uint32_t zxc_get_dict_id(const void *src, size_t src_size)
Reads the dictionary ID from an archive header, without decoding.
uint64_t zxc_compress_bound(const size_t input_size)
Maximum compressed size for an input of input_size bytes.
int zxc_get_last_frame_info(const void *src, size_t src_size, zxc_frame_info_t *info, size_t info_size)
Reads the last frame of src, without decoding.
zxc_cctx * zxc_create_cctx(const zxc_compress_opts_t *opts)
Creates a reusable compression context.
int64_t zxc_compress_cctx(zxc_cctx *cctx, const void *src, size_t src_size, void *dst, size_t dst_capacity, const zxc_compress_opts_t *opts)
Compresses data using a reusable context.
void zxc_free_cctx(zxc_cctx *cctx)
Frees a compression context and its resources.
zxc_dctx * zxc_create_dctx(void)
Creates a reusable decompression context.
int64_t zxc_decompress_dctx(zxc_dctx *dctx, const void *src, size_t src_size, void *dst, size_t dst_capacity, const zxc_decompress_opts_t *opts)
Decompresses data using a reusable context.
int64_t zxc_decompress_inplace_dctx(zxc_dctx *dctx, void *buffer, const size_t buffer_capacity, const size_t comp_size, const zxc_decompress_opts_t *opts)
In-place decompression with a caller-supplied context.
void zxc_free_dctx(zxc_dctx *dctx)
Frees a decompression context and its resources.
const char * zxc_version_string(void)
Library version string, "MAJOR.MINOR.PATCH".
int zxc_default_level(void)
Default compression level.
int zxc_max_level(void)
Maximum supported compression level.
int zxc_min_level(void)
Minimum supported compression level.
size_t zxc_static_dctx_workspace_size(const size_t block_size)
Exact size of a static decompression workspace.
size_t zxc_static_cctx_workspace_size(const size_t block_size, const int level)
Exact size of a static compression workspace.
zxc_dctx * zxc_init_static_dctx(void *workspace, const size_t workspace_size, const size_t block_size)
Initialises a decompression context inside a caller-supplied workspace.
zxc_cctx * zxc_init_static_cctx(void *workspace, const size_t workspace_size, const zxc_compress_opts_t *opts)
Initialises a compression context inside a caller-supplied workspace.
Options for decompression.
What a frame's header and footer declare, read without decoding.
uint8_t format_version
Format version of the frame.
uint64_t digest
Archive digest; 0 when has_checksum is 0.
uint8_t has_checksum
1 when blocks carry checksums and the footer a digest.
size_t block_size
Block size, 4 KB to 2 MB.
uint64_t decompressed_size
Source bytes the frame decodes to.
uint32_t dict_id
Dictionary the frame needs; 0 for none.
uint8_t has_seek_table
1 when a seek table precedes the footer.
uint64_t compressed_size
Compressed bytes of the frame, footer included.
Platform-specific symbol visibility macros.
Shared option structures for the ZXC compression APIs.