size_t ZSTD_seekable_endFrame(ZSTD_seekable_CStream* zcs, ZSTD_outBuffer* output) { size_t const prevOutPos = output->pos; /* end the frame */ size_t ret = ZSTD_endStream(zcs->cstream, output); zcs->frameCSize += output->pos - prevOutPos; /* need to flush before doing the rest */ if (ret) return ret; /* frame done */ /* store the frame data for later */ ret = ZSTD_seekable_logFrame( &zcs->framelog, zcs->frameCSize, zcs->frameDSize, zcs->framelog.checksumFlag ? XXH64_digest(&zcs->xxhState) & 0xFFFFFFFFU : 0); if (ret) return ret; /* reset for the next frame */ zcs->frameCSize = 0; zcs->frameDSize = 0; ZSTD_resetCStream(zcs->cstream, 0); if (zcs->framelog.checksumFlag) XXH64_reset(&zcs->xxhState, 0); return 0; }
/* ZSTDMT_resetCStream() : * pledgedSrcSize is optional and can be zero == unknown */ size_t ZSTDMT_resetCStream(ZSTDMT_CCtx* zcs, unsigned long long pledgedSrcSize) { if (zcs->nbThreads==1) return ZSTD_resetCStream(zcs->cstream, pledgedSrcSize); return ZSTDMT_initCStream_internal(zcs, NULL, 0, 0, zcs->params, pledgedSrcSize); }