Home | History | Annotate | Download | only in legacy

Lines Matching defs:zbc

3326     ZBUFF_DCtx* zbc = (ZBUFF_DCtx*)malloc(sizeof(ZBUFF_DCtx));
3327 if (zbc==NULL) return NULL;
3328 memset(zbc, 0, sizeof(*zbc));
3329 zbc->zc = ZSTD_createDCtx();
3330 zbc->stage = ZBUFFds_init;
3331 return zbc;
3334 static size_t ZBUFF_freeDCtx(ZBUFF_DCtx* zbc)
3336 if (zbc==NULL) return 0; /* support free on null */
3337 ZSTD_freeDCtx(zbc->zc);
3338 free(zbc->inBuff);
3339 free(zbc->outBuff);
3340 free(zbc);
3347 static size_t ZBUFF_decompressInit(ZBUFF_DCtx* zbc)
3349 zbc->stage = ZBUFFds_readHeader;
3350 zbc->hPos = zbc->inPos = zbc->outStart = zbc->outEnd = zbc->dictSize = 0;
3351 return ZSTD_resetDCtx(zbc->zc);
3355 static size_t ZBUFF_decompressWithDictionary(ZBUFF_DCtx* zbc, const void* src, size_t srcSize)
3357 zbc->dict = (const char*)src;
3358 zbc->dictSize = srcSize;
3373 static size_t ZBUFF_decompressContinue(ZBUFF_DCtx* zbc, void* dst, size_t* maxDstSizePtr, const void* src, size_t* srcSizePtr)
3386 switch(zbc->stage)
3395 { size_t const headerSize = ZSTD_getFrameParams(&(zbc->params), src, *srcSizePtr);
3399 memcpy(zbc->headerBuffer+zbc->hPos, src, *srcSizePtr);
3400 zbc->hPos += *srcSizePtr;
3402 zbc->stage = ZBUFFds_loadHeader;
3403 return headerSize - zbc->hPos;
3405 zbc->stage = ZBUFFds_decodeHeader;
3412 zbc->headerBuffer + zbc->hPos, ZSTD_frameHeaderSize_max - zbc->hPos,
3414 zbc->hPos += headerSize;
3416 headerSize = ZSTD_getFrameParams(&(zbc->params), zbc->headerBuffer, zbc->hPos);
3421 return headerSize - zbc->hPos;
3427 { size_t const neededOutSize = (size_t)1 << zbc->params.windowLog;
3429 if (zbc->inBuffSize < neededInSize) {
3430 free(zbc->inBuff);
3431 zbc->inBuffSize = neededInSize;
3432 zbc->inBuff = (char*)malloc(neededInSize);
3433 if (zbc->inBuff == NULL) return ERROR(memory_allocation);
3435 if (zbc->outBuffSize < neededOutSize) {
3436 free(zbc->outBuff);
3437 zbc->outBuffSize = neededOutSize;
3438 zbc->outBuff = (char*)malloc(neededOutSize);
3439 if (zbc->outBuff == NULL) return ERROR(memory_allocation);
3441 if (zbc->dictSize)
3442 ZSTD_decompress_insertDictionary(zbc->zc, zbc->dict, zbc->dictSize);
3443 if (zbc->hPos) {
3445 memcpy(zbc->inBuff, zbc->headerBuffer, zbc->hPos);
3446 zbc->inPos = zbc->hPos;
3447 zbc->hPos = 0;
3448 zbc->stage = ZBUFFds_load;
3451 zbc->stage = ZBUFFds_read;
3455 size_t neededInSize = ZSTD_nextSrcSizeToDecompress(zbc->zc);
3458 zbc->stage = ZBUFFds_init;
3465 size_t decodedSize = ZSTD_decompressContinue(zbc->zc,
3466 zbc->outBuff + zbc->outStart, zbc->outBuffSize - zbc->outStart,
3471 zbc->outEnd = zbc->outStart + decodedSize;
3472 zbc->stage = ZBUFFds_flush;
3476 zbc->stage = ZBUFFds_load;
3481 size_t neededInSize = ZSTD_nextSrcSizeToDecompress(zbc->zc);
3482 size_t toLoad = neededInSize - zbc->inPos; /* should always be <= remaining space within inBuff */
3484 if (toLoad > zbc->inBuffSize - zbc->inPos) return ERROR(corruption_detected); /* should never happen */
3485 loadedSize = ZBUFF_limitCopy(zbc->inBuff + zbc->inPos, toLoad, ip, iend-ip);
3487 zbc->inPos += loadedSize;
3490 size_t decodedSize = ZSTD_decompressContinue(zbc->zc,
3491 zbc->outBuff + zbc->outStart, zbc->outBuffSize - zbc->outStart,
3492 zbc->inBuff, neededInSize);
3494 zbc->inPos = 0; /* input is consumed */
3495 if (!decodedSize) { zbc->stage = ZBUFFds_read; break; } /* this was just a header */
3496 zbc->outEnd = zbc->outStart + decodedSize;
3497 zbc->stage = ZBUFFds_flush;
3504 size_t toFlushSize = zbc->outEnd - zbc->outStart;
3505 size_t flushedSize = ZBUFF_limitCopy(op, oend-op, zbc->outBuff + zbc->outStart, toFlushSize);
3507 zbc->outStart += flushedSize;
3510 zbc->stage = ZBUFFds_read;
3511 if (zbc->outStart + BLOCKSIZE > zbc->outBuffSize)
3512 zbc->outStart = zbc->outEnd = 0;
3527 size_t nextSrcSizeHint = ZSTD_nextSrcSizeToDecompress(zbc->zc);
3529 nextSrcSizeHint -= zbc->inPos; /* already loaded*/