equal
deleted
inserted
replaced
1 // LzmaRam.h |
|
2 |
|
3 #ifndef __LzmaRam_h |
|
4 #define __LzmaRam_h |
|
5 |
|
6 #include <stdlib.h> |
|
7 #include "../../../Common/Types.h" |
|
8 |
|
9 /* |
|
10 LzmaRamEncode: BCJ + LZMA RAM->RAM compressing. |
|
11 It uses .lzma format, but it writes one additional byte to .lzma file: |
|
12 0: - no filter |
|
13 1: - x86(BCJ) filter. |
|
14 |
|
15 To provide best compression ratio dictionarySize mustbe >= inSize |
|
16 |
|
17 LzmaRamEncode allocates Data with MyAlloc/BigAlloc functions. |
|
18 RAM 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 |
|
29 If 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 |
|
34 enum ESzFilterMode |
|
35 { |
|
36 SZ_FILTER_NO, |
|
37 SZ_FILTER_YES, |
|
38 SZ_FILTER_AUTO |
|
39 }; |
|
40 |
|
41 int 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 |
|