1// LzmaRam.h 2 3#ifndef __LzmaRam_h 4#define __LzmaRam_h 5 6#include <stdlib.h> 7#include "../../../Common/Types.h" 8 9/* 10LzmaRamEncode: BCJ + LZMA RAM->RAM compressing. 11It uses .lzma format, but it writes one additional byte to .lzma file: 12 0: - no filter 13 1: - x86(BCJ) filter. 14 15To provide best compression ratio dictionarySize mustbe >= inSize 16 17LzmaRamEncode allocates Data with MyAlloc/BigAlloc functions. 18RAM Requirements: 19 RamSize = dictionarySize * 9.5 + 6MB + FilterBlockSize 20 FilterBlockSize = 0, if useFilter == false 21 FilterBlockSize = inSize, if useFilter == true 22 23 Return code: 24 0 - OK 25 1 - Unspecified Error 26 2 - Memory allocating error 27 3 - Output buffer OVERFLOW 28 29If you use SZ_FILTER_AUTO mode, then encoder will use 2 or 3 passes: 30 2 passes when FILTER_NO provides better compression. 31 3 passes when FILTER_YES provides better compression. 32*/ 33 34enum ESzFilterMode 35{ 36 SZ_FILTER_NO, 37 SZ_FILTER_YES, 38 SZ_FILTER_AUTO 39}; 40 41int LzmaRamEncode( 42 const Byte *inBuffer, size_t inSize, 43 Byte *outBuffer, size_t outSize, size_t *outSizeProcessed, 44 UInt32 dictionarySize, ESzFilterMode filterMode); 45 46#endif 47