File:  [ELWIX - Embedded LightWeight unIX -] / elwix / tools / oldlzma / SRC / 7zip / Compress / LZMA_Alone / LzmaRam.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 14 09:04:51 2013 UTC (11 years, 2 months ago) by misho
Branches: misho, elwix1_9_mips, MAIN
CVS tags: start, elwix2_8, elwix2_7, elwix2_6, elwix2_3, elwix2_2, HEAD, ELWIX2_7, ELWIX2_6, ELWIX2_5, ELWIX2_2p0
oldlzma needs for uboot

// LzmaRam.h

#ifndef __LzmaRam_h
#define __LzmaRam_h

#include <stdlib.h>
#include "../../../Common/Types.h"

/*
LzmaRamEncode: BCJ + LZMA RAM->RAM compressing.
It uses .lzma format, but it writes one additional byte to .lzma file:
  0: - no filter
  1: - x86(BCJ) filter.

To provide best compression ratio dictionarySize mustbe >= inSize

LzmaRamEncode allocates Data with MyAlloc/BigAlloc functions.
RAM Requirements:
  RamSize = dictionarySize * 9.5 + 6MB + FilterBlockSize 
    FilterBlockSize = 0, if useFilter == false
    FilterBlockSize = inSize, if useFilter == true

  Return code:
    0 - OK
    1 - Unspecified Error
    2 - Memory allocating error
    3 - Output buffer OVERFLOW

If you use SZ_FILTER_AUTO mode, then encoder will use 2 or 3 passes:
  2 passes when FILTER_NO provides better compression.
  3 passes when FILTER_YES provides better compression.
*/

enum ESzFilterMode 
{
  SZ_FILTER_NO,
  SZ_FILTER_YES,
  SZ_FILTER_AUTO
};

int LzmaRamEncode(
    const Byte *inBuffer, size_t inSize, 
    Byte *outBuffer, size_t outSize, size_t *outSizeProcessed, 
    UInt32 dictionarySize, ESzFilterMode filterMode);

#endif


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>