mirror of
https://git.tukaani.org/xz.git
synced 2024-04-04 12:36:23 +02:00
Added api/lzma/easy.h. I had forgot to add this to the
git repo. Thanks to Stephan Kulow.
This commit is contained in:
parent
288b232f54
commit
4c7ad179c7
1 changed files with 174 additions and 0 deletions
174
src/liblzma/api/lzma/easy.h
Normal file
174
src/liblzma/api/lzma/easy.h
Normal file
|
@ -0,0 +1,174 @@
|
||||||
|
/**
|
||||||
|
* \file lzma/easy.h
|
||||||
|
* \brief Easy to use encoder initialization
|
||||||
|
*
|
||||||
|
* \author Copyright (C) 1999-2006 Igor Pavlov
|
||||||
|
* \author Copyright (C) 2008 Lasse Collin
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LZMA_H_INTERNAL
|
||||||
|
# error Never include this file directly. Use <lzma.h> instead.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Compression level names for lzma_easy_* functions
|
||||||
|
*
|
||||||
|
* At the moment, all the compression levels support LZMA_SYNC_FLUSH.
|
||||||
|
* In future there may be levels that don't support LZMA_SYNC_FLUSH.
|
||||||
|
* However, the LZMA_SYNC_FLUSH support won't be removed from the
|
||||||
|
* existing compression levels.
|
||||||
|
*
|
||||||
|
* \note If liblzma is built without encoder support, or with some
|
||||||
|
* filters disabled, some of the compression levels may be
|
||||||
|
* unsupported. In that case, the initialization functions
|
||||||
|
* will return LZMA_HEADER_ERROR.
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
|
LZMA_EASY_COPY,
|
||||||
|
/**<
|
||||||
|
* No compression; the data is just wrapped into .lzma
|
||||||
|
* container.
|
||||||
|
*/
|
||||||
|
|
||||||
|
LZMA_EASY_LZMA_1,
|
||||||
|
/**<
|
||||||
|
* LZMA filter with fast compression (fast in terms of LZMA).
|
||||||
|
* If you are interested in the exact options used, see
|
||||||
|
* lzma_preset_lzma[0]. Note that the exact options may
|
||||||
|
* change between liblzma versions.
|
||||||
|
*
|
||||||
|
* At the moment, the command line tool uses these settings
|
||||||
|
* when `lzma -1' is used. In future, the command line tool
|
||||||
|
* may default to some more complex way to determine the
|
||||||
|
* settings used e.g. the type of files being compressed.
|
||||||
|
*
|
||||||
|
* LZMA_EASY_LZMA_2 is equivalent to lzma_preset_lzma[1]
|
||||||
|
* and so on.
|
||||||
|
*/
|
||||||
|
|
||||||
|
LZMA_EASY_LZMA_2,
|
||||||
|
LZMA_EASY_LZMA_3,
|
||||||
|
LZMA_EASY_LZMA_4,
|
||||||
|
LZMA_EASY_LZMA_5,
|
||||||
|
LZMA_EASY_LZMA_6,
|
||||||
|
LZMA_EASY_LZMA_7,
|
||||||
|
LZMA_EASY_LZMA_8,
|
||||||
|
LZMA_EASY_LZMA_9,
|
||||||
|
} lzma_easy_level;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Default compression level for Data Blocks
|
||||||
|
*
|
||||||
|
* Data Blocks contain the actual compressed data. It's not straightforward
|
||||||
|
* to recommend a default level, because in some cases keeping the resource
|
||||||
|
* usage relatively low is more important that getting the maximum
|
||||||
|
* compression ratio.
|
||||||
|
*/
|
||||||
|
#define LZMA_EASY_DEFAULT LZMA_EASY_LZMA_7
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Default compression level for Metadata Blocks
|
||||||
|
*
|
||||||
|
* Metadata Blocks are present only in Multi-Block Streams. Metadata Blocks
|
||||||
|
* contain the Extra Records (if any) and some book-keeping data that is
|
||||||
|
* used by decoders.
|
||||||
|
*/
|
||||||
|
#define LZMA_EASY_METADATA_DEFAULT LZMA_EASY_LZMA_3
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Calculates rough memory requirements of a compression level
|
||||||
|
*
|
||||||
|
* This function is a wrapper for lzma_memory_usage(), which is declared
|
||||||
|
* in lzma/filter.h.
|
||||||
|
*
|
||||||
|
* \return Approximate memory usage of the encoder with the given
|
||||||
|
* compression level in mebibytes (value * 1024 * 1024 bytes).
|
||||||
|
* On error (e.g. compression level is not supported),
|
||||||
|
* UINT32_MAX is returned.
|
||||||
|
*/
|
||||||
|
extern uint32_t lzma_easy_memory_usage(lzma_easy_level level);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Initializes Single-Block .lzma Stream encoder
|
||||||
|
*
|
||||||
|
* This function is intended for those who just want to use the basic LZMA
|
||||||
|
* features (that is, most developers out there). Lots of assumptions are
|
||||||
|
* made, which are correct for most situations or at least good enough.
|
||||||
|
*
|
||||||
|
* \param strm Pointer to lzma_stream that is at least initialized
|
||||||
|
* with LZMA_STREAM_INIT.
|
||||||
|
* \param level Compression level to use. This selects a set of
|
||||||
|
* compression settings from a list of compression
|
||||||
|
* presets.
|
||||||
|
*
|
||||||
|
* \return - LZMA_OK: Initialization succeeded. Use lzma_code() to
|
||||||
|
* encode your data.
|
||||||
|
* - LZMA_MEM_ERROR: Memory allocation failed. All memory
|
||||||
|
* previously allocated for *strm is now freed.
|
||||||
|
* - LZMA_HEADER_ERROR: The given compression level is not
|
||||||
|
* supported by this build of liblzma.
|
||||||
|
*
|
||||||
|
* If initialization succeeds, use lzma_code() to do the actual encoding.
|
||||||
|
* Valid values for `action' (the second argument of lzma_code()) are
|
||||||
|
* LZMA_RUN, LZMA_SYNC_FLUSH, and LZMA_FINISH. In future, there may be
|
||||||
|
* compression levels that don't support LZMA_SYNC_FLUSH.
|
||||||
|
*/
|
||||||
|
extern lzma_ret lzma_easy_encoder_single(
|
||||||
|
lzma_stream *strm, lzma_easy_level level);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Initializes Multi-Block .lzma Stream encoder
|
||||||
|
*
|
||||||
|
* If you want to be able to store Extra Records or want to be able to use
|
||||||
|
* LZMA_FULL_FLUSH, you need to create a Multi-Block Stream.
|
||||||
|
*
|
||||||
|
* \param strm Pointer to lzma_stream that is at least initialized
|
||||||
|
* with LZMA_STREAM_INIT.
|
||||||
|
* \param level Compression level to use for the data being encoded.
|
||||||
|
* \param metadata_level
|
||||||
|
* Compression level to use for Metadata Blocks.
|
||||||
|
* Metadata Blocks contain the Extra Records (if any)
|
||||||
|
* and some book-keeping data that is used by decoders.
|
||||||
|
* \param header Pointer to a list of Extra Records to be stored to
|
||||||
|
* the Header Metadata Block. Set this to NULL to omit
|
||||||
|
* Header Metadata Block completely. The list must be
|
||||||
|
* kept available until the encoding has finished.
|
||||||
|
* \param footer Pointer to a list of Extra Records to be stored to
|
||||||
|
* the Footer Metadata Block. Set this to NULL if you
|
||||||
|
* don't want to store any Extra Records (the Footer
|
||||||
|
* Metadata Block will still be written for other
|
||||||
|
* reasons.) The list must be kept available until
|
||||||
|
* the encoding has finished.
|
||||||
|
*
|
||||||
|
* \return - LZMA_OK: Initialization succeeded. Use lzma_code() to
|
||||||
|
* encode your data.
|
||||||
|
* - LZMA_MEM_ERROR: Memory allocation failed. All memory
|
||||||
|
* previously allocated for *strm is now freed.
|
||||||
|
* - LZMA_HEADER_ERROR: The given compression level is not
|
||||||
|
* supported by this build of liblzma.
|
||||||
|
*
|
||||||
|
* If initialization succeeds, use lzma_code() to do the actual encoding.
|
||||||
|
* Valid values for `action' (the second argument of lzma_code()) are
|
||||||
|
* LZMA_RUN, LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, and LZMA_FINISH. In future,
|
||||||
|
* there may be compression levels that don't support LZMA_SYNC_FLUSH.
|
||||||
|
* LZMA_FULL_FLUSH will always work with all compression levels.
|
||||||
|
*/
|
||||||
|
extern lzma_ret lzma_easy_encoder_multi(lzma_stream *strm,
|
||||||
|
lzma_easy_level level, lzma_easy_level metadata_level,
|
||||||
|
const lzma_extra *header, const lzma_extra *footer);
|
Loading…
Reference in a new issue