1/* lzo1x.h -- public interface of the LZO1X compression algorithm
2
3 This file is part of the LZO real-time data compression library.
4
5 Copyright (C) 1996-2014 Markus Franz Xaver Johannes Oberhumer
6 All Rights Reserved.
7
8 The LZO library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License as
10 published by the Free Software Foundation; either version 2 of
11 the License, or (at your option) any later version.
12
13 The LZO library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with the LZO library; see the file COPYING.
20 If not, write to the Free Software Foundation, Inc.,
21 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22
23 Markus F.X.J. Oberhumer
24 <markus@oberhumer.com>
25 http://www.oberhumer.com/opensource/lzo/
26 */
27
28
29#ifndef __LZO1X_H_INCLUDED
30#define __LZO1X_H_INCLUDED 1
31
32#ifndef __LZOCONF_H_INCLUDED
33#include "lzoconf.h"
34#endif
35
36#ifdef __cplusplus
37extern "C" {
38#endif
39
40
41/***********************************************************************
42//
43************************************************************************/
44
45/* Memory required for the wrkmem parameter.
46 * When the required size is 0, you can also pass a NULL pointer.
47 */
48
49#define LZO1X_MEM_COMPRESS LZO1X_1_MEM_COMPRESS
50#define LZO1X_MEM_DECOMPRESS (0)
51#define LZO1X_MEM_OPTIMIZE (0)
52
53
54/* decompression */
55LZO_EXTERN(int)
56lzo1x_decompress ( const lzo_bytep src, lzo_uint src_len,
57 lzo_bytep dst, lzo_uintp dst_len,
58 lzo_voidp wrkmem /* NOT USED */ );
59
60/* safe decompression with overrun testing */
61LZO_EXTERN(int)
62lzo1x_decompress_safe ( const lzo_bytep src, lzo_uint src_len,
63 lzo_bytep dst, lzo_uintp dst_len,
64 lzo_voidp wrkmem /* NOT USED */ );
65
66
67/***********************************************************************
68//
69************************************************************************/
70
71#define LZO1X_1_MEM_COMPRESS ((lzo_uint32_t) (16384L * lzo_sizeof_dict_t))
72
73LZO_EXTERN(int)
74lzo1x_1_compress ( const lzo_bytep src, lzo_uint src_len,
75 lzo_bytep dst, lzo_uintp dst_len,
76 lzo_voidp wrkmem );
77
78
79/***********************************************************************
80// special compressor versions
81************************************************************************/
82
83/* this version needs only 8 KiB work memory */
84#define LZO1X_1_11_MEM_COMPRESS ((lzo_uint32_t) (2048L * lzo_sizeof_dict_t))
85
86LZO_EXTERN(int)
87lzo1x_1_11_compress ( const lzo_bytep src, lzo_uint src_len,
88 lzo_bytep dst, lzo_uintp dst_len,
89 lzo_voidp wrkmem );
90
91
92/* this version needs 16 KiB work memory */
93#define LZO1X_1_12_MEM_COMPRESS ((lzo_uint32_t) (4096L * lzo_sizeof_dict_t))
94
95LZO_EXTERN(int)
96lzo1x_1_12_compress ( const lzo_bytep src, lzo_uint src_len,
97 lzo_bytep dst, lzo_uintp dst_len,
98 lzo_voidp wrkmem );
99
100
101/* use this version if you need a little more compression speed */
102#define LZO1X_1_15_MEM_COMPRESS ((lzo_uint32_t) (32768L * lzo_sizeof_dict_t))
103
104LZO_EXTERN(int)
105lzo1x_1_15_compress ( const lzo_bytep src, lzo_uint src_len,
106 lzo_bytep dst, lzo_uintp dst_len,
107 lzo_voidp wrkmem );
108
109
110/***********************************************************************
111// better compression ratio at the cost of more memory and time
112************************************************************************/
113
114#define LZO1X_999_MEM_COMPRESS ((lzo_uint32_t) (14 * 16384L * sizeof(short)))
115
116LZO_EXTERN(int)
117lzo1x_999_compress ( const lzo_bytep src, lzo_uint src_len,
118 lzo_bytep dst, lzo_uintp dst_len,
119 lzo_voidp wrkmem );
120
121
122/***********************************************************************
123//
124************************************************************************/
125
126LZO_EXTERN(int)
127lzo1x_999_compress_dict ( const lzo_bytep src, lzo_uint src_len,
128 lzo_bytep dst, lzo_uintp dst_len,
129 lzo_voidp wrkmem,
130 const lzo_bytep dict, lzo_uint dict_len );
131
132LZO_EXTERN(int)
133lzo1x_999_compress_level ( const lzo_bytep src, lzo_uint src_len,
134 lzo_bytep dst, lzo_uintp dst_len,
135 lzo_voidp wrkmem,
136 const lzo_bytep dict, lzo_uint dict_len,
137 lzo_callback_p cb,
138 int compression_level );
139
140LZO_EXTERN(int)
141lzo1x_decompress_dict_safe ( const lzo_bytep src, lzo_uint src_len,
142 lzo_bytep dst, lzo_uintp dst_len,
143 lzo_voidp wrkmem /* NOT USED */,
144 const lzo_bytep dict, lzo_uint dict_len );
145
146
147/***********************************************************************
148// optimize a compressed data block
149************************************************************************/
150
151LZO_EXTERN(int)
152lzo1x_optimize ( lzo_bytep src, lzo_uint src_len,
153 lzo_bytep dst, lzo_uintp dst_len,
154 lzo_voidp wrkmem /* NOT USED */ );
155
156
157
158#ifdef __cplusplus
159} /* extern "C" */
160#endif
161
162#endif /* already included */
163
164
165/* vim:set ts=4 sw=4 et: */
166