Classes | Macros | Typedefs | Enumerations | Functions
lz4frame.h File Reference
#include <stddef.h>
Include dependency graph for lz4frame.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  LZ4F_compressOptions_t
 
struct  LZ4F_decompressOptions_t
 
struct  LZ4F_frameInfo_t
 
struct  LZ4F_preferences_t
 

Macros

#define LZ4F_BLOCK_CHECKSUM_SIZE   4
 
#define LZ4F_BLOCK_HEADER_SIZE   4
 
#define LZ4F_CONTENT_CHECKSUM_SIZE   4
 
#define LZ4F_DEPRECATE(x)   x /* no deprecation warning for this compiler */
 
#define LZ4F_HEADER_SIZE_MAX   19
 
#define LZ4F_HEADER_SIZE_MIN   7 /* LZ4 Frame header size can vary, depending on selected parameters */
 
#define LZ4F_INIT_FRAMEINFO   { LZ4F_default, LZ4F_blockLinked, LZ4F_noContentChecksum, LZ4F_frame, 0ULL, 0U, LZ4F_noBlockChecksum } /* v1.8.3+ */
 
#define LZ4F_INIT_PREFERENCES   { LZ4F_INIT_FRAMEINFO, 0, 0u, 0u, { 0u, 0u, 0u } } /* v1.8.3+ */
 
#define LZ4F_MAGIC_SKIPPABLE_START   0x184D2A50U
 
#define LZ4F_MAGICNUMBER   0x184D2204U
 
#define LZ4F_MIN_SIZE_TO_KNOW_HEADER_LENGTH   5
 
#define LZ4F_OBSOLETE_ENUM(x)
 
#define LZ4F_VERSION   100 /* This number can be used to check for an incompatible API breaking change */
 
#define LZ4FLIB_API   LZ4FLIB_VISIBILITY
 
#define LZ4FLIB_VISIBILITY
 

Typedefs

typedef struct LZ4F_cctx_s LZ4F_cctx
 
typedef LZ4F_cctxLZ4F_compressionContext_t
 
typedef struct LZ4F_dctx_s LZ4F_dctx
 
typedef LZ4F_dctxLZ4F_decompressionContext_t
 
typedef size_t LZ4F_errorCode_t
 

Enumerations

enum  LZ4F_blockChecksum_t { LZ4F_noBlockChecksum =0, LZ4F_blockChecksumEnabled }
 
enum  LZ4F_blockMode_t { LZ4F_blockLinked =0, LZ4F_blockIndependent }
 
enum  LZ4F_blockSizeID_t {
  LZ4F_default =0, LZ4F_max64KB =4, LZ4F_max256KB =5, LZ4F_max1MB =6,
  LZ4F_max4MB =7
}
 
enum  LZ4F_contentChecksum_t { LZ4F_noContentChecksum =0, LZ4F_contentChecksumEnabled }
 
enum  LZ4F_frameType_t { LZ4F_frame =0, LZ4F_skippableFrame }
 

Functions

LZ4FLIB_API size_t LZ4F_compressBegin (LZ4F_cctx *cctx, void *dstBuffer, size_t dstCapacity, const LZ4F_preferences_t *prefsPtr)
 
LZ4FLIB_API size_t LZ4F_compressBound (size_t srcSize, const LZ4F_preferences_t *prefsPtr)
 
LZ4FLIB_API size_t LZ4F_compressEnd (LZ4F_cctx *cctx, void *dstBuffer, size_t dstCapacity, const LZ4F_compressOptions_t *cOptPtr)
 
LZ4FLIB_API size_t LZ4F_compressFrame (void *dstBuffer, size_t dstCapacity, const void *srcBuffer, size_t srcSize, const LZ4F_preferences_t *preferencesPtr)
 
LZ4FLIB_API size_t LZ4F_compressFrameBound (size_t srcSize, const LZ4F_preferences_t *preferencesPtr)
 
LZ4FLIB_API int LZ4F_compressionLevel_max (void)
 
LZ4FLIB_API size_t LZ4F_compressUpdate (LZ4F_cctx *cctx, void *dstBuffer, size_t dstCapacity, const void *srcBuffer, size_t srcSize, const LZ4F_compressOptions_t *cOptPtr)
 
LZ4FLIB_API LZ4F_errorCode_t LZ4F_createCompressionContext (LZ4F_cctx **cctxPtr, unsigned version)
 
LZ4FLIB_API LZ4F_errorCode_t LZ4F_createDecompressionContext (LZ4F_dctx **dctxPtr, unsigned version)
 
LZ4FLIB_API size_t LZ4F_decompress (LZ4F_dctx *dctx, void *dstBuffer, size_t *dstSizePtr, const void *srcBuffer, size_t *srcSizePtr, const LZ4F_decompressOptions_t *dOptPtr)
 
LZ4FLIB_API size_t LZ4F_flush (LZ4F_cctx *cctx, void *dstBuffer, size_t dstCapacity, const LZ4F_compressOptions_t *cOptPtr)
 
LZ4FLIB_API LZ4F_errorCode_t LZ4F_freeCompressionContext (LZ4F_cctx *cctx)
 
LZ4FLIB_API LZ4F_errorCode_t LZ4F_freeDecompressionContext (LZ4F_dctx *dctx)
 
const LZ4FLIB_API char * LZ4F_getErrorName (LZ4F_errorCode_t code)
 
LZ4FLIB_API size_t LZ4F_getFrameInfo (LZ4F_dctx *dctx, LZ4F_frameInfo_t *frameInfoPtr, const void *srcBuffer, size_t *srcSizePtr)
 
LZ4FLIB_API unsigned LZ4F_getVersion (void)
 
LZ4FLIB_API size_t LZ4F_headerSize (const void *src, size_t srcSize)
 
LZ4FLIB_API unsigned LZ4F_isError (LZ4F_errorCode_t code)
 
LZ4FLIB_API void LZ4F_resetDecompressionContext (LZ4F_dctx *dctx)
 

Macro Definition Documentation

◆ LZ4F_BLOCK_CHECKSUM_SIZE

#define LZ4F_BLOCK_CHECKSUM_SIZE   4

Definition at line 273 of file lz4frame.h.

◆ LZ4F_BLOCK_HEADER_SIZE

#define LZ4F_BLOCK_HEADER_SIZE   4

Definition at line 270 of file lz4frame.h.

◆ LZ4F_CONTENT_CHECKSUM_SIZE

#define LZ4F_CONTENT_CHECKSUM_SIZE   4

Definition at line 276 of file lz4frame.h.

◆ LZ4F_DEPRECATE

#define LZ4F_DEPRECATE (   x)    x /* no deprecation warning for this compiler */

Definition at line 95 of file lz4frame.h.

◆ LZ4F_HEADER_SIZE_MAX

#define LZ4F_HEADER_SIZE_MAX   19

Definition at line 267 of file lz4frame.h.

◆ LZ4F_HEADER_SIZE_MIN

#define LZ4F_HEADER_SIZE_MIN   7 /* LZ4 Frame header size can vary, depending on selected parameters */

Definition at line 266 of file lz4frame.h.

◆ LZ4F_INIT_FRAMEINFO

#define LZ4F_INIT_FRAMEINFO   { LZ4F_default, LZ4F_blockLinked, LZ4F_noContentChecksum, LZ4F_frame, 0ULL, 0U, LZ4F_noBlockChecksum } /* v1.8.3+ */

Definition at line 185 of file lz4frame.h.

◆ LZ4F_INIT_PREFERENCES

#define LZ4F_INIT_PREFERENCES   { LZ4F_INIT_FRAMEINFO, 0, 0u, 0u, { 0u, 0u, 0u } } /* v1.8.3+ */

Definition at line 200 of file lz4frame.h.

◆ LZ4F_MAGIC_SKIPPABLE_START

#define LZ4F_MAGIC_SKIPPABLE_START   0x184D2A50U

Definition at line 388 of file lz4frame.h.

◆ LZ4F_MAGICNUMBER

#define LZ4F_MAGICNUMBER   0x184D2204U

Definition at line 387 of file lz4frame.h.

◆ LZ4F_MIN_SIZE_TO_KNOW_HEADER_LENGTH

#define LZ4F_MIN_SIZE_TO_KNOW_HEADER_LENGTH   5

Definition at line 389 of file lz4frame.h.

◆ LZ4F_OBSOLETE_ENUM

#define LZ4F_OBSOLETE_ENUM (   x)

Definition at line 116 of file lz4frame.h.

◆ LZ4F_VERSION

#define LZ4F_VERSION   100 /* This number can be used to check for an incompatible API breaking change */

Definition at line 242 of file lz4frame.h.

◆ LZ4FLIB_API

#define LZ4FLIB_API   LZ4FLIB_VISIBILITY

Definition at line 84 of file lz4frame.h.

◆ LZ4FLIB_VISIBILITY

#define LZ4FLIB_VISIBILITY

Introduction

lz4frame.h implements LZ4 frame specification: see doc/lz4_Frame_format.md . LZ4 Frames are compatible with lz4 CLI, and designed to be interoperable with any system.

Definition at line 76 of file lz4frame.h.

Typedef Documentation

◆ LZ4F_cctx

typedef struct LZ4F_cctx_s LZ4F_cctx

Definition at line 232 of file lz4frame.h.

◆ LZ4F_compressionContext_t

Definition at line 233 of file lz4frame.h.

◆ LZ4F_dctx

typedef struct LZ4F_dctx_s LZ4F_dctx

Definition at line 354 of file lz4frame.h.

◆ LZ4F_decompressionContext_t

Definition at line 355 of file lz4frame.h.

◆ LZ4F_errorCode_t

typedef size_t LZ4F_errorCode_t

Definition at line 103 of file lz4frame.h.

Enumeration Type Documentation

◆ LZ4F_blockChecksum_t

Enumerator
LZ4F_noBlockChecksum 
LZ4F_blockChecksumEnabled 

Definition at line 152 of file lz4frame.h.

◆ LZ4F_blockMode_t

Enumerator
LZ4F_blockLinked 
LZ4F_blockIndependent 

Definition at line 138 of file lz4frame.h.

◆ LZ4F_blockSizeID_t

Enumerator
LZ4F_default 
LZ4F_max64KB 
LZ4F_max256KB 
LZ4F_max1MB 
LZ4F_max4MB 

Definition at line 123 of file lz4frame.h.

◆ LZ4F_contentChecksum_t

Enumerator
LZ4F_noContentChecksum 
LZ4F_contentChecksumEnabled 

Definition at line 145 of file lz4frame.h.

◆ LZ4F_frameType_t

Enumerator
LZ4F_frame 
LZ4F_skippableFrame 

Definition at line 157 of file lz4frame.h.

Function Documentation

◆ LZ4F_compressBegin()

LZ4FLIB_API size_t LZ4F_compressBegin ( LZ4F_cctx cctxPtr,
void *  dstBuffer,
size_t  dstCapacity,
const LZ4F_preferences_t preferencesPtr 
)

LZ4F_compressBegin() : will write the frame header into dstBuffer. dstCapacity must be >= LZ4F_HEADER_SIZE_MAX bytes. prefsPtr is optional : you can provide NULL as argument, all preferences will then be set to default.

Returns
: number of bytes written into dstBuffer for the header or an error code (which can be tested using LZ4F_isError())

LZ4F_compressBegin() : init streaming compression AND writes frame header into @dstBuffer. @dstCapacity must be >= LZ4F_HEADER_SIZE_MAX bytes. @preferencesPtr can be NULL, in which case default parameters are selected.

Returns
: number of bytes written into dstBuffer for the header or an error code (can be tested using LZ4F_isError())

Definition at line 795 of file lz4frame.c.

◆ LZ4F_compressBound()

LZ4FLIB_API size_t LZ4F_compressBound ( size_t  srcSize,
const LZ4F_preferences_t prefsPtr 
)

LZ4F_compressBound() : Provides minimum dstCapacity required to guarantee success of LZ4F_compressUpdate(), given a srcSize and preferences, for a worst case scenario. When srcSize==0, LZ4F_compressBound() provides an upper bound for LZ4F_flush() and LZ4F_compressEnd() instead. Note that the result is only valid for a single invocation of LZ4F_compressUpdate(). When invoking LZ4F_compressUpdate() multiple times, if the output buffer is gradually filled up instead of emptied and re-used from its start, one must check if there is enough remaining capacity before each invocation, using LZ4F_compressBound().

Returns
is always the same for a srcSize and prefsPtr. prefsPtr is optional : when NULL is provided, preferences will be set to cover worst case scenario. tech details :
if automatic flushing is not enabled, includes the possibility that internal buffer might already be filled by up to (blockSize-1) bytes. It also includes frame footer (ending + checksum), since it might be generated by LZ4F_compressEnd().
doesn't include frame header, as it was already generated by LZ4F_compressBegin().

Definition at line 809 of file lz4frame.c.

◆ LZ4F_compressEnd()

LZ4FLIB_API size_t LZ4F_compressEnd ( LZ4F_cctx cctxPtr,
void *  dstBuffer,
size_t  dstCapacity,
const LZ4F_compressOptions_t compressOptionsPtr 
)

LZ4F_compressEnd() : To properly finish an LZ4 frame, invoke LZ4F_compressEnd(). It will flush whatever data remained within cctx (like LZ4_flush()) and properly finalize the frame, with an endMark and a checksum. cOptPtr is optional : NULL can be provided, in which case all options will be set to default.

Returns
: nb of bytes written into dstBuffer, necessarily >= 4 (endMark), or an error code if it fails (which can be tested using LZ4F_isError()) Note : LZ4F_compressEnd() is guaranteed to be successful when dstCapacity >= LZ4F_compressBound(0, prefsPtr). A successful call to LZ4F_compressEnd() makes cctx available again for another compression task.

LZ4F_compressEnd() : When you want to properly finish the compressed frame, just call LZ4F_compressEnd(). It will flush whatever data remained within compressionContext (like LZ4_flush()) but also properly finalize the frame, with an endMark and an (optional) checksum. LZ4F_compressOptions_t structure is optional : you can provide NULL as argument.

Returns
: the number of bytes written into dstBuffer (necessarily >= 4 (endMark size)) or an error code if it fails (can be tested using LZ4F_isError()) The context can then be used again to compress a new frame, starting with LZ4F_compressBegin().

Definition at line 1151 of file lz4frame.c.

◆ LZ4F_compressFrame()

LZ4FLIB_API size_t LZ4F_compressFrame ( void *  dstBuffer,
size_t  dstCapacity,
const void *  srcBuffer,
size_t  srcSize,
const LZ4F_preferences_t preferencesPtr 
)

LZ4F_compressFrame() : Compress an entire srcBuffer into a valid LZ4 frame. dstCapacity MUST be >= LZ4F_compressFrameBound(srcSize, preferencesPtr). The LZ4F_preferences_t structure is optional : you can provide NULL as argument. All preferences will be set to default.

Returns
: number of bytes written into dstBuffer. or an error code if it fails (can be tested using LZ4F_isError())

LZ4F_compressFrame() : Compress an entire srcBuffer into a valid LZ4 frame, in a single step. dstBuffer MUST be >= LZ4F_compressFrameBound(srcSize, preferencesPtr). The LZ4F_preferences_t structure is optional : you can provide NULL as argument. All preferences will be set to default.

Returns
: number of bytes written into dstBuffer. or an error code if it fails (can be tested using LZ4F_isError())

Definition at line 475 of file lz4frame.c.

◆ LZ4F_compressFrameBound()

LZ4FLIB_API size_t LZ4F_compressFrameBound ( size_t  srcSize,
const LZ4F_preferences_t preferencesPtr 
)

LZ4F_compressFrameBound() : Returns the maximum possible compressed size with LZ4F_compressFrame() given srcSize and preferences. preferencesPtr is optional. It can be replaced by NULL, in which case, the function will assume default preferences. Note : this result is only usable with LZ4F_compressFrame(). It may also be relevant to LZ4F_compressUpdate() only if no flush() operation is ever performed.

Definition at line 398 of file lz4frame.c.

◆ LZ4F_compressionLevel_max()

LZ4FLIB_API int LZ4F_compressionLevel_max ( void  )

Definition at line 323 of file lz4frame.c.

◆ LZ4F_compressUpdate()

LZ4FLIB_API size_t LZ4F_compressUpdate ( LZ4F_cctx cctxPtr,
void *  dstBuffer,
size_t  dstCapacity,
const void *  srcBuffer,
size_t  srcSize,
const LZ4F_compressOptions_t compressOptionsPtr 
)

LZ4F_compressUpdate() : LZ4F_compressUpdate() can be called repetitively to compress as much data as necessary. Important rule: dstCapacity MUST be large enough to ensure operation success even in worst case situations. This value is provided by LZ4F_compressBound(). If this condition is not respected, LZ4F_compress() will fail (result is an errorCode). After an error, the state is left in a UB state, and must be re-initialized or freed. If previously an uncompressed block was written, buffered data is flushed before appending compressed data is continued. cOptPtr is optional : NULL can be provided, in which case all options are set to default.

Returns
: number of bytes written into dstBuffer (it can be zero, meaning input data was just buffered). or an error code if it fails (which can be tested using LZ4F_isError())

LZ4F_compressUpdate() : LZ4F_compressUpdate() can be called repetitively to compress as much data as necessary. When successful, the function always entirely consumes @srcBuffer. src data is either buffered or compressed into @dstBuffer. If previously an uncompressed block was written, buffered data is flushed before appending compressed data is continued. @dstCapacity MUST be >= LZ4F_compressBound(srcSize, preferencesPtr). @compressOptionsPtr is optional : provide NULL to mean "default".

Returns
: the number of bytes written into dstBuffer. It can be zero, meaning input data was just buffered. or an error code if it fails (which can be tested using LZ4F_isError()) After an error, the state is left in a UB state, and must be re-initialized.

Definition at line 1060 of file lz4frame.c.

◆ LZ4F_createCompressionContext()

LZ4FLIB_API LZ4F_errorCode_t LZ4F_createCompressionContext ( LZ4F_cctx **  LZ4F_compressionContextPtr,
unsigned  version 
)

LZ4F_createCompressionContext() : The first thing to do is to create a compressionContext object, which will keep track of operation state during streaming compression. This is achieved using LZ4F_createCompressionContext(), which takes as argument a version, and a pointer to LZ4F_cctx*, to write the resulting pointer into.

Version
provided MUST be LZ4F_VERSION. It is intended to track potential version mismatch, notably when using DLL. The function provides a pointer to a fully allocated LZ4F_cctx object. @cctxPtr MUST be != NULL. If
Returns
!= zero, context creation failed. A created compression context can be employed multiple times for consecutive streaming operations. Once all streaming compression jobs are completed, the state object can be released using LZ4F_freeCompressionContext(). Note1 : LZ4F_freeCompressionContext() is always successful. Its return value can be ignored. Note2 : LZ4F_freeCompressionContext() works fine with NULL input pointers (do nothing).

LZ4F_createCompressionContext() : The first thing to do is to create a compressionContext object, which will be used in all compression operations. This is achieved using LZ4F_createCompressionContext(), which takes as argument a version and an LZ4F_preferences_t structure. The version provided MUST be LZ4F_VERSION. It is intended to track potential incompatible differences between different binaries. The function will provide a pointer to an allocated LZ4F_compressionContext_t object. If the result LZ4F_errorCode_t is not OK_NoError, there was an error during context creation. Object can release its memory using LZ4F_freeCompressionContext();

Definition at line 608 of file lz4frame.c.

◆ LZ4F_createDecompressionContext()

LZ4FLIB_API LZ4F_errorCode_t LZ4F_createDecompressionContext ( LZ4F_dctx **  LZ4F_decompressionContextPtr,
unsigned  versionNumber 
)

LZ4F_createDecompressionContext() : Create an LZ4F_dctx object, to track all decompression operations.

Version
provided MUST be LZ4F_VERSION. @dctxPtr MUST be valid. The function fills @dctxPtr with the value of a pointer to an allocated and initialized LZ4F_dctx object. The
Returns
is an errorCode, which can be tested using LZ4F_isError(). dctx memory can be released using LZ4F_freeDecompressionContext(); Result of LZ4F_freeDecompressionContext() indicates current state of decompressionContext when being released. That is, it should be == 0 if decompression has been completed fully and correctly.

LZ4F_createDecompressionContext() : Create a decompressionContext object, which will track all decompression operations. Provides a pointer to a fully allocated and initialized LZ4F_decompressionContext object. Object can later be released using LZ4F_freeDecompressionContext().

Returns
: if != 0, there was an error during context creation.

Definition at line 1247 of file lz4frame.c.

◆ LZ4F_decompress()

LZ4FLIB_API size_t LZ4F_decompress ( LZ4F_dctx dctx,
void *  dstBuffer,
size_t *  dstSizePtr,
const void *  srcBuffer,
size_t *  srcSizePtr,
const LZ4F_decompressOptions_t decompressOptionsPtr 
)

LZ4F_decompress() : Call this function repetitively to regenerate data compressed in srcBuffer.

The function requires a valid dctx state. It will read up to *srcSizePtr bytes from srcBuffer, and decompress data into dstBuffer, of capacity *dstSizePtr.

The nb of bytes consumed from srcBuffer will be written into *srcSizePtr (necessarily <= original value). The nb of bytes decompressed into dstBuffer will be written into *dstSizePtr (necessarily <= original value).

The function does not necessarily read all input bytes, so always check value in *srcSizePtr. Unconsumed source data must be presented again in subsequent invocations.

dstBuffer can freely change between each consecutive function invocation. dstBuffer content will be overwritten.

Returns
: an hint of how many srcSize bytes LZ4F_decompress() expects for next call. Schematically, it's the size of the current (or remaining) compressed block + header of next block. Respecting the hint provides some small speed benefit, because it skips intermediate buffers. This is just a hint though, it's always possible to provide any srcSize.

When a frame is fully decoded,

Returns
will be 0 (no more data expected). When provided with more bytes than necessary to decode a frame, LZ4F_decompress() will stop reading exactly at end of current frame, and
0.

If decompression failed,

Returns
is an error code, which can be tested using LZ4F_isError(). After a decompression error, the dctx context is not resumable. Use LZ4F_resetDecompressionContext() to return to clean state.

After a frame is fully decoded, dctx can be used again to decompress another frame.

LZ4F_decompress() : Call this function repetitively to regenerate compressed data in srcBuffer. The function will attempt to decode up to *srcSizePtr bytes from srcBuffer into dstBuffer of capacity *dstSizePtr.

The number of bytes regenerated into dstBuffer will be provided within *dstSizePtr (necessarily <= original value).

The number of bytes effectively read from srcBuffer will be provided within *srcSizePtr (necessarily <= original value). If number of bytes read is < number of bytes provided, then decompression operation is not complete. Remaining data will have to be presented again in a subsequent invocation.

The function result is an hint of the better srcSize to use for next call to LZ4F_decompress. Schematically, it's the size of the current (or remaining) compressed block + header of next block. Respecting the hint provides a small boost to performance, since it allows less buffer shuffling. Note that this is just a hint, and it's always possible to any srcSize value. When a frame is fully decoded,

Returns
will be 0. If decompression failed,
is an error code which can be tested using LZ4F_isError().

Definition at line 1556 of file lz4frame.c.

◆ LZ4F_flush()

LZ4FLIB_API size_t LZ4F_flush ( LZ4F_cctx cctxPtr,
void *  dstBuffer,
size_t  dstCapacity,
const LZ4F_compressOptions_t compressOptionsPtr 
)

LZ4F_flush() : When data must be generated and sent immediately, without waiting for a block to be completely filled, it's possible to call LZ4_flush(). It will immediately compress any data buffered within cctx. dstCapacity must be large enough to ensure the operation will be successful. cOptPtr is optional : it's possible to provide NULL, all options will be set to default.

Returns
: nb of bytes written into dstBuffer (can be zero, when there is no data stored within cctx) or an error code if it fails (which can be tested using LZ4F_isError()) Note : LZ4F_flush() is guaranteed to be successful when dstCapacity >= LZ4F_compressBound(0, prefsPtr).

LZ4F_flush() : When compressed data must be sent immediately, without waiting for a block to be filled, invoke LZ4_flush(), which will immediately compress any remaining data stored within LZ4F_cctx. The result of the function is the number of bytes written into dstBuffer. It can be zero, this means there was no data left within LZ4F_cctx. The function outputs an error code if it fails (can be tested using LZ4F_isError()) LZ4F_compressOptions_t* is optional. NULL is a valid argument.

Definition at line 1104 of file lz4frame.c.

◆ LZ4F_freeCompressionContext()

LZ4FLIB_API LZ4F_errorCode_t LZ4F_freeCompressionContext ( LZ4F_cctx cctx)

Definition at line 620 of file lz4frame.c.

◆ LZ4F_freeDecompressionContext()

LZ4FLIB_API LZ4F_errorCode_t LZ4F_freeDecompressionContext ( LZ4F_dctx dctx)

Definition at line 1259 of file lz4frame.c.

◆ LZ4F_getErrorName()

const LZ4FLIB_API char* LZ4F_getErrorName ( LZ4F_errorCode_t  code)

return error code string; for debugging

Definition at line 295 of file lz4frame.c.

◆ LZ4F_getFrameInfo()

LZ4FLIB_API size_t LZ4F_getFrameInfo ( LZ4F_dctx dctx,
LZ4F_frameInfo_t frameInfoPtr,
const void *  srcBuffer,
size_t *  srcSizePtr 
)

LZ4F_getFrameInfo() : This function extracts frame parameters (max blockSize, dictID, etc.). Its usage is optional: user can also invoke LZ4F_decompress() directly.

Extracted information will fill an existing LZ4F_frameInfo_t structure. This can be useful for allocation and dictionary identification purposes.

LZ4F_getFrameInfo() can work in the following situations :

1) At the beginning of a new frame, before any invocation of LZ4F_decompress(). It will decode header from srcBuffer, consuming the header and starting the decoding process.

Input size must be large enough to contain the full frame header. Frame header size can be known beforehand by LZ4F_headerSize(). Frame header size is variable, but is guaranteed to be >= LZ4F_HEADER_SIZE_MIN bytes, and not more than <= LZ4F_HEADER_SIZE_MAX bytes. Hence, blindly providing LZ4F_HEADER_SIZE_MAX bytes or more will always work. It's allowed to provide more input data than the header size, LZ4F_getFrameInfo() will only consume the header.

If input size is not large enough, aka if it's smaller than header size, function will fail and return an error code.

2) After decoding has been started, it's possible to invoke LZ4F_getFrameInfo() anytime to extract already decoded frame parameters stored within dctx.

Note that, if decoding has barely started, and not yet read enough information to decode the header, LZ4F_getFrameInfo() will fail.

The number of bytes consumed from srcBuffer will be updated in *srcSizePtr (necessarily <= original value). LZ4F_getFrameInfo() only consumes bytes when decoding has not yet started, and when decoding the header has been successful. Decompression must then resume from (srcBuffer + *srcSizePtr).

Returns
: a hint about how many srcSize bytes LZ4F_decompress() expects for next call, or an error code which can be tested using LZ4F_isError(). note 1 : in case of error, dctx is not modified. Decoding operation can resume from beginning safely. note 2 : frame parameters are copied into an already allocated LZ4F_frameInfo_t structure.

LZ4F_getFrameInfo() : This function extracts frame parameters (max blockSize, frame checksum, etc.). Usage is optional. Objective is to provide relevant information for allocation purposes. This function works in 2 situations :

  • At the beginning of a new frame, in which case it will decode this information from srcBuffer, and start the decoding process. Amount of input data provided must be large enough to successfully decode the frame header. A header size is variable, but is guaranteed to be <= LZ4F_HEADER_SIZE_MAX bytes. It's possible to provide more input data than this minimum.
  • After decoding has been started. In which case, no input is read, frame parameters are extracted from dctx. The number of bytes consumed from srcBuffer will be updated within *srcSizePtr (necessarily <= original value). Decompression must resume from (srcBuffer + *srcSizePtr).
    Returns
    : an hint about how many srcSize bytes LZ4F_decompress() expects for next call, or an error code which can be tested using LZ4F_isError() note 1 : in case of error, dctx is not modified. Decoding operations can resume from where they stopped. note 2 : frame parameters are copied into an already allocated LZ4F_frameInfo_t structure.

Definition at line 1428 of file lz4frame.c.

◆ LZ4F_getVersion()

LZ4FLIB_API unsigned LZ4F_getVersion ( void  )

Definition at line 321 of file lz4frame.c.

◆ LZ4F_headerSize()

LZ4FLIB_API size_t LZ4F_headerSize ( const void *  src,
size_t  srcSize 
)

LZ4F_headerSize() : v1.9.0+ Provide the header size of a frame starting at src. srcSize must be >= LZ4F_MIN_SIZE_TO_KNOW_HEADER_LENGTH, which is enough to decode the header length.

Returns
: size of frame header or an error code, which can be tested using LZ4F_isError() note : Frame header size is variable, but is guaranteed to be >= LZ4F_HEADER_SIZE_MIN bytes, and <= LZ4F_HEADER_SIZE_MAX bytes.

LZ4F_headerSize() :

Returns
: size of frame header or an error code, which can be tested using LZ4F_isError()

Definition at line 1387 of file lz4frame.c.

◆ LZ4F_isError()

LZ4FLIB_API unsigned LZ4F_isError ( LZ4F_errorCode_t  code)

tells when a function result is an error code

Definition at line 290 of file lz4frame.c.

◆ LZ4F_resetDecompressionContext()

LZ4FLIB_API void LZ4F_resetDecompressionContext ( LZ4F_dctx dctx)

LZ4F_resetDecompressionContext() : added in v1.8.0 In case of an error, the context is left in "undefined" state. In which case, it's necessary to reset it, before re-using it. This method can also be used to abruptly stop any unfinished decompression, and start a new one using same context resources.

Definition at line 1274 of file lz4frame.c.



plotjuggler
Author(s): Davide Faconti
autogenerated on Mon Nov 11 2024 03:23:49