xref: /aosp_15_r20/external/zstd/lib/deprecated/zbuff_decompress.c (revision 01826a4963a0d8a59bc3812d29bdf0fb76416722)
1*01826a49SYabin Cui /*
2*01826a49SYabin Cui  * Copyright (c) Meta Platforms, Inc. and affiliates.
3*01826a49SYabin Cui  * All rights reserved.
4*01826a49SYabin Cui  *
5*01826a49SYabin Cui  * This source code is licensed under both the BSD-style license (found in the
6*01826a49SYabin Cui  * LICENSE file in the root directory of this source tree) and the GPLv2 (found
7*01826a49SYabin Cui  * in the COPYING file in the root directory of this source tree).
8*01826a49SYabin Cui  * You may select, at your option, one of the above-listed licenses.
9*01826a49SYabin Cui  */
10*01826a49SYabin Cui 
11*01826a49SYabin Cui 
12*01826a49SYabin Cui 
13*01826a49SYabin Cui /* *************************************
14*01826a49SYabin Cui *  Dependencies
15*01826a49SYabin Cui ***************************************/
16*01826a49SYabin Cui #define ZSTD_DISABLE_DEPRECATE_WARNINGS  /* suppress warning on ZSTD_initDStream_usingDict */
17*01826a49SYabin Cui #include "../zstd.h"        /* ZSTD_CStream, ZSTD_DStream, ZSTDLIB_API */
18*01826a49SYabin Cui #define ZBUFF_STATIC_LINKING_ONLY
19*01826a49SYabin Cui #include "zbuff.h"
20*01826a49SYabin Cui 
21*01826a49SYabin Cui 
ZBUFF_createDCtx(void)22*01826a49SYabin Cui ZBUFF_DCtx* ZBUFF_createDCtx(void)
23*01826a49SYabin Cui {
24*01826a49SYabin Cui     return ZSTD_createDStream();
25*01826a49SYabin Cui }
26*01826a49SYabin Cui 
ZBUFF_createDCtx_advanced(ZSTD_customMem customMem)27*01826a49SYabin Cui ZBUFF_DCtx* ZBUFF_createDCtx_advanced(ZSTD_customMem customMem)
28*01826a49SYabin Cui {
29*01826a49SYabin Cui     return ZSTD_createDStream_advanced(customMem);
30*01826a49SYabin Cui }
31*01826a49SYabin Cui 
ZBUFF_freeDCtx(ZBUFF_DCtx * zbd)32*01826a49SYabin Cui size_t ZBUFF_freeDCtx(ZBUFF_DCtx* zbd)
33*01826a49SYabin Cui {
34*01826a49SYabin Cui     return ZSTD_freeDStream(zbd);
35*01826a49SYabin Cui }
36*01826a49SYabin Cui 
37*01826a49SYabin Cui 
38*01826a49SYabin Cui /* *** Initialization *** */
39*01826a49SYabin Cui 
ZBUFF_decompressInitDictionary(ZBUFF_DCtx * zbd,const void * dict,size_t dictSize)40*01826a49SYabin Cui size_t ZBUFF_decompressInitDictionary(ZBUFF_DCtx* zbd, const void* dict, size_t dictSize)
41*01826a49SYabin Cui {
42*01826a49SYabin Cui     return ZSTD_initDStream_usingDict(zbd, dict, dictSize);
43*01826a49SYabin Cui }
44*01826a49SYabin Cui 
ZBUFF_decompressInit(ZBUFF_DCtx * zbd)45*01826a49SYabin Cui size_t ZBUFF_decompressInit(ZBUFF_DCtx* zbd)
46*01826a49SYabin Cui {
47*01826a49SYabin Cui     return ZSTD_initDStream(zbd);
48*01826a49SYabin Cui }
49*01826a49SYabin Cui 
50*01826a49SYabin Cui 
51*01826a49SYabin Cui /* *** Decompression *** */
52*01826a49SYabin Cui 
ZBUFF_decompressContinue(ZBUFF_DCtx * zbd,void * dst,size_t * dstCapacityPtr,const void * src,size_t * srcSizePtr)53*01826a49SYabin Cui size_t ZBUFF_decompressContinue(ZBUFF_DCtx* zbd,
54*01826a49SYabin Cui                                 void* dst, size_t* dstCapacityPtr,
55*01826a49SYabin Cui                           const void* src, size_t* srcSizePtr)
56*01826a49SYabin Cui {
57*01826a49SYabin Cui     ZSTD_outBuffer outBuff;
58*01826a49SYabin Cui     ZSTD_inBuffer inBuff;
59*01826a49SYabin Cui     size_t result;
60*01826a49SYabin Cui     outBuff.dst  = dst;
61*01826a49SYabin Cui     outBuff.pos  = 0;
62*01826a49SYabin Cui     outBuff.size = *dstCapacityPtr;
63*01826a49SYabin Cui     inBuff.src  = src;
64*01826a49SYabin Cui     inBuff.pos  = 0;
65*01826a49SYabin Cui     inBuff.size = *srcSizePtr;
66*01826a49SYabin Cui     result = ZSTD_decompressStream(zbd, &outBuff, &inBuff);
67*01826a49SYabin Cui     *dstCapacityPtr = outBuff.pos;
68*01826a49SYabin Cui     *srcSizePtr = inBuff.pos;
69*01826a49SYabin Cui     return result;
70*01826a49SYabin Cui }
71*01826a49SYabin Cui 
72*01826a49SYabin Cui 
73*01826a49SYabin Cui /* *************************************
74*01826a49SYabin Cui *  Tool functions
75*01826a49SYabin Cui ***************************************/
ZBUFF_recommendedDInSize(void)76*01826a49SYabin Cui size_t ZBUFF_recommendedDInSize(void)  { return ZSTD_DStreamInSize(); }
ZBUFF_recommendedDOutSize(void)77*01826a49SYabin Cui size_t ZBUFF_recommendedDOutSize(void) { return ZSTD_DStreamOutSize(); }
78