"Fossies" - the Fresh Open Source Software Archive

Member "UXP-2019.06.08/other-licenses/7zstub/src/C/Lzma86.h" (8 Jun 2019, 3266 Bytes) of package /linux/www/UXP-2019.06.08.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 /* Lzma86.h -- LZMA + x86 (BCJ) Filter
    2 2013-01-18 : Igor Pavlov : Public domain */
    3 
    4 #ifndef __LZMA86_H
    5 #define __LZMA86_H
    6 
    7 #include "7zTypes.h"
    8 
    9 EXTERN_C_BEGIN
   10 
   11 #define LZMA86_SIZE_OFFSET (1 + 5)
   12 #define LZMA86_HEADER_SIZE (LZMA86_SIZE_OFFSET + 8)
   13 
   14 /*
   15 It's an example for LZMA + x86 Filter use.
   16 You can use .lzma86 extension, if you write that stream to file.
   17 .lzma86 header adds one additional byte to standard .lzma header.
   18 .lzma86 header (14 bytes):
   19   Offset Size  Description
   20     0     1    = 0 - no filter, pure LZMA
   21                = 1 - x86 filter + LZMA
   22     1     1    lc, lp and pb in encoded form
   23     2     4    dictSize (little endian)
   24     6     8    uncompressed size (little endian)
   25 
   26 
   27 Lzma86_Encode
   28 -------------
   29 level - compression level: 0 <= level <= 9, the default value for "level" is 5.
   30 
   31 dictSize - The dictionary size in bytes. The maximum value is
   32         128 MB = (1 << 27) bytes for 32-bit version
   33           1 GB = (1 << 30) bytes for 64-bit version
   34      The default value is 16 MB = (1 << 24) bytes, for level = 5.
   35      It's recommended to use the dictionary that is larger than 4 KB and
   36      that can be calculated as (1 << N) or (3 << N) sizes.
   37      For better compression ratio dictSize must be >= inSize.
   38 
   39 filterMode:
   40     SZ_FILTER_NO   - no Filter
   41     SZ_FILTER_YES  - x86 Filter
   42     SZ_FILTER_AUTO - it tries both alternatives to select best.
   43               Encoder will use 2 or 3 passes:
   44               2 passes when FILTER_NO provides better compression.
   45               3 passes when FILTER_YES provides better compression.
   46 
   47 Lzma86Encode allocates Data with MyAlloc functions.
   48 RAM Requirements for compressing:
   49   RamSize = dictionarySize * 11.5 + 6MB + FilterBlockSize
   50       filterMode     FilterBlockSize
   51      SZ_FILTER_NO         0
   52      SZ_FILTER_YES      inSize
   53      SZ_FILTER_AUTO     inSize
   54 
   55 
   56 Return code:
   57   SZ_OK               - OK
   58   SZ_ERROR_MEM        - Memory allocation error
   59   SZ_ERROR_PARAM      - Incorrect paramater
   60   SZ_ERROR_OUTPUT_EOF - output buffer overflow
   61   SZ_ERROR_THREAD     - errors in multithreading functions (only for Mt version)
   62 */
   63 
   64 enum ESzFilterMode
   65 {
   66   SZ_FILTER_NO,
   67   SZ_FILTER_YES,
   68   SZ_FILTER_AUTO
   69 };
   70 
   71 SRes Lzma86_Encode(Byte *dest, size_t *destLen, const Byte *src, size_t srcLen,
   72     int level, UInt32 dictSize, int filterMode);
   73 
   74 
   75 /*
   76 Lzma86_GetUnpackSize:
   77   In:
   78     src      - input data
   79     srcLen   - input data size
   80   Out:
   81     unpackSize - size of uncompressed stream
   82   Return code:
   83     SZ_OK               - OK
   84     SZ_ERROR_INPUT_EOF  - Error in headers
   85 */
   86 
   87 SRes Lzma86_GetUnpackSize(const Byte *src, SizeT srcLen, UInt64 *unpackSize);
   88 
   89 /*
   90 Lzma86_Decode:
   91   In:
   92     dest     - output data
   93     destLen  - output data size
   94     src      - input data
   95     srcLen   - input data size
   96   Out:
   97     destLen  - processed output size
   98     srcLen   - processed input size
   99   Return code:
  100     SZ_OK           - OK
  101     SZ_ERROR_DATA  - Data error
  102     SZ_ERROR_MEM   - Memory allocation error
  103     SZ_ERROR_UNSUPPORTED - unsupported file
  104     SZ_ERROR_INPUT_EOF - it needs more bytes in input buffer
  105 */
  106 
  107 SRes Lzma86_Decode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen);
  108 
  109 EXTERN_C_END
  110 
  111 #endif