diff options
author | Yann Collet <yann.collet.73@gmail.com> | 2014-09-13 13:40:35 (GMT) |
---|---|---|
committer | Yann Collet <yann.collet.73@gmail.com> | 2014-09-13 13:40:35 (GMT) |
commit | 6bede08aa42acd3391bb3a2bee4a0fded9363be5 (patch) | |
tree | 12dd71323e362c576fd6a792d3a38ec4457c182c /lz4frame.c | |
parent | 658ab6cfca598b65b017e1ab784703add927ae0d (diff) | |
download | lz4-6bede08aa42acd3391bb3a2bee4a0fded9363be5.zip lz4-6bede08aa42acd3391bb3a2bee4a0fded9363be5.tar.gz lz4-6bede08aa42acd3391bb3a2bee4a0fded9363be5.tar.bz2 |
LZ4F_getFrameInfo() : provides srcSize hint like LZ4F_decompress()
Diffstat (limited to 'lz4frame.c')
-rw-r--r-- | lz4frame.c | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -733,7 +733,9 @@ typedef enum { dstage_getHeader=0, dstage_storeHeader, dstage_decodeHeader, * The objective is to extract header information without starting decompression, typically for allocation purposes. * LZ4F_getFrameInfo() can also be used *after* starting decompression, on a valid LZ4F_decompressionContext_t. * The number of bytes read from srcBuffer will be provided within *srcSizePtr (necessarily <= original value). - * The function result is an error code which can be tested using LZ4F_isError(). + * You are expected to resume decompression from where it stopped (srcBuffer + *srcSizePtr) + * The function result is an hint of the better srcSize to use for next call to LZ4F_decompress. + * or an error code which can be tested using LZ4F_isError(). */ LZ4F_errorCode_t LZ4F_getFrameInfo(LZ4F_decompressionContext_t decompressionContext, LZ4F_frameInfo_t* frameInfoPtr, const void* srcBuffer, size_t* srcSizePtr) { @@ -745,14 +747,15 @@ LZ4F_errorCode_t LZ4F_getFrameInfo(LZ4F_decompressionContext_t decompressionCont if (LZ4F_isError(errorCode)) return errorCode; *srcSizePtr = errorCode; *frameInfoPtr = dctxPtr->frameInfo; + dctxPtr->srcExpect = (BYTE*)srcBuffer + errorCode; dctxPtr->dStage = dstage_getCBlockSize; - return OK_NoError; + return 4; } /* frameInfo already decoded */ *srcSizePtr = 0; *frameInfoPtr = dctxPtr->frameInfo; - return OK_NoError; + return 0; } |