lzo1x.h revision 76d05dc695b06c4e987bb8078f78032441e1430c
176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* lzo1x.h -- public interface of the LZO1X compression algorithm 276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman This file is part of the LZO real-time data compression library. 476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Copyright (C) 1996-2014 Markus Franz Xaver Johannes Oberhumer 676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman All Rights Reserved. 776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman The LZO library is free software; you can redistribute it and/or 976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman modify it under the terms of the GNU General Public License as 1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman published by the Free Software Foundation; either version 2 of 1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman the License, or (at your option) any later version. 1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman The LZO library is distributed in the hope that it will be useful, 1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman but WITHOUT ANY WARRANTY; without even the implied warranty of 1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman GNU General Public License for more details. 1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman You should have received a copy of the GNU General Public License 1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman along with the LZO library; see the file COPYING. 2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman If not, write to the Free Software Foundation, Inc., 2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Markus F.X.J. Oberhumer 2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman <markus@oberhumer.com> 2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman http://www.oberhumer.com/opensource/lzo/ 2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef __LZO1X_H_INCLUDED 3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define __LZO1X_H_INCLUDED 1 3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef __LZOCONF_H_INCLUDED 3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include "lzoconf.h" 3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif 3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifdef __cplusplus 3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanextern "C" { 3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif 3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/*********************************************************************** 4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman************************************************************************/ 4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Memory required for the wrkmem parameter. 4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * When the required size is 0, you can also pass a NULL pointer. 4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define LZO1X_MEM_COMPRESS LZO1X_1_MEM_COMPRESS 5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define LZO1X_MEM_DECOMPRESS (0) 5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define LZO1X_MEM_OPTIMIZE (0) 5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* decompression */ 5576d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanLZO_EXTERN(int) 5676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanlzo1x_decompress ( const lzo_bytep src, lzo_uint src_len, 5776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_bytep dst, lzo_uintp dst_len, 5876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_voidp wrkmem /* NOT USED */ ); 5976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 6076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* safe decompression with overrun testing */ 6176d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanLZO_EXTERN(int) 6276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanlzo1x_decompress_safe ( const lzo_bytep src, lzo_uint src_len, 6376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_bytep dst, lzo_uintp dst_len, 6476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_voidp wrkmem /* NOT USED */ ); 6576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 6676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 6776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/*********************************************************************** 6876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 6976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman************************************************************************/ 7076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 7176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define LZO1X_1_MEM_COMPRESS ((lzo_uint32_t) (16384L * lzo_sizeof_dict_t)) 7276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 7376d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanLZO_EXTERN(int) 7476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanlzo1x_1_compress ( const lzo_bytep src, lzo_uint src_len, 7576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_bytep dst, lzo_uintp dst_len, 7676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_voidp wrkmem ); 7776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 7876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 7976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/*********************************************************************** 8076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// special compressor versions 8176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman************************************************************************/ 8276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 8376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* this version needs only 8 KiB work memory */ 8476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define LZO1X_1_11_MEM_COMPRESS ((lzo_uint32_t) (2048L * lzo_sizeof_dict_t)) 8576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 8676d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanLZO_EXTERN(int) 8776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanlzo1x_1_11_compress ( const lzo_bytep src, lzo_uint src_len, 8876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_bytep dst, lzo_uintp dst_len, 8976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_voidp wrkmem ); 9076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 9176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 9276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* this version needs 16 KiB work memory */ 9376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define LZO1X_1_12_MEM_COMPRESS ((lzo_uint32_t) (4096L * lzo_sizeof_dict_t)) 9476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 9576d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanLZO_EXTERN(int) 9676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanlzo1x_1_12_compress ( const lzo_bytep src, lzo_uint src_len, 9776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_bytep dst, lzo_uintp dst_len, 9876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_voidp wrkmem ); 9976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 10076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 10176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* use this version if you need a little more compression speed */ 10276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define LZO1X_1_15_MEM_COMPRESS ((lzo_uint32_t) (32768L * lzo_sizeof_dict_t)) 10376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 10476d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanLZO_EXTERN(int) 10576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanlzo1x_1_15_compress ( const lzo_bytep src, lzo_uint src_len, 10676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_bytep dst, lzo_uintp dst_len, 10776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_voidp wrkmem ); 10876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 10976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 11076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/*********************************************************************** 11176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// better compression ratio at the cost of more memory and time 11276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman************************************************************************/ 11376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 11476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define LZO1X_999_MEM_COMPRESS ((lzo_uint32_t) (14 * 16384L * sizeof(short))) 11576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 11676d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanLZO_EXTERN(int) 11776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanlzo1x_999_compress ( const lzo_bytep src, lzo_uint src_len, 11876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_bytep dst, lzo_uintp dst_len, 11976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_voidp wrkmem ); 12076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 12176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 12276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/*********************************************************************** 12376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 12476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman************************************************************************/ 12576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 12676d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanLZO_EXTERN(int) 12776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanlzo1x_999_compress_dict ( const lzo_bytep src, lzo_uint src_len, 12876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_bytep dst, lzo_uintp dst_len, 12976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_voidp wrkmem, 13076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman const lzo_bytep dict, lzo_uint dict_len ); 13176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 13276d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanLZO_EXTERN(int) 13376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanlzo1x_999_compress_level ( const lzo_bytep src, lzo_uint src_len, 13476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_bytep dst, lzo_uintp dst_len, 13576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_voidp wrkmem, 13676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman const lzo_bytep dict, lzo_uint dict_len, 13776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_callback_p cb, 13876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman int compression_level ); 13976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 14076d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanLZO_EXTERN(int) 14176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanlzo1x_decompress_dict_safe ( const lzo_bytep src, lzo_uint src_len, 14276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_bytep dst, lzo_uintp dst_len, 14376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_voidp wrkmem /* NOT USED */, 14476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman const lzo_bytep dict, lzo_uint dict_len ); 14576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 14676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 14776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/*********************************************************************** 14876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// optimize a compressed data block 14976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman************************************************************************/ 15076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 15176d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanLZO_EXTERN(int) 15276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanlzo1x_optimize ( lzo_bytep src, lzo_uint src_len, 15376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_bytep dst, lzo_uintp dst_len, 15476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman lzo_voidp wrkmem /* NOT USED */ ); 15576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 15676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 15776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 15876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifdef __cplusplus 15976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} /* extern "C" */ 16076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif 16176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 16276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif /* already included */ 16376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 16476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 16576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* vim:set ts=4 et: */ 166