Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5098 | clevermous | 1 | #ifndef _LZMA_ENCODER_H |
2 | #define _LZMA_ENCODER_H |
||
3 | |||
4 | #include "lzma.h" |
||
5 | #include "RangeCoderBitTree.h" |
||
6 | |||
7 | typedef struct |
||
8 | { |
||
9 | CState State; |
||
10 | bool Prev1IsChar; |
||
11 | bool Prev2; |
||
12 | unsigned PosPrev2; |
||
13 | unsigned BackPrev2; |
||
14 | unsigned Price; |
||
15 | unsigned PosPrev; |
||
16 | unsigned BackPrev; |
||
17 | unsigned Backs[kNumRepDistances]; |
||
18 | } COptimal; |
||
19 | #define COptimal_MakeAsChar(a) (a)->BackPrev=(unsigned)-1,(a)->Prev1IsChar=false |
||
20 | #define COptimal_MakeAsShortRep(a) (a)->BackPrev=0,(a)->Prev1IsChar=false |
||
21 | #define COptimal_IsShortRep(a) ((a)->BackPrev==0) |
||
22 | |||
23 | #define kIfinityPrice 0xFFFFFFF |
||
24 | #define kNumOpts (1<<12) |
||
25 | |||
26 | typedef CMyBitEncoder CLiteralEncoder2[0x300]; |
||
27 | typedef struct |
||
28 | { |
||
29 | CLiteralEncoder2* _coders; |
||
30 | int _numPrevBits; |
||
31 | int _numPosBits; |
||
32 | unsigned _posMask; |
||
33 | } CLiteralEncoder; |
||
34 | |||
35 | typedef struct |
||
36 | { |
||
37 | CMyBitEncoder _choice; |
||
38 | CMyBitEncoder _choice2; |
||
39 | NRangeCoder_CBitTreeEncoder _lowCoder[kNumPosStatesEncodingMax]; |
||
40 | NRangeCoder_CBitTreeEncoder _midCoder[kNumPosStatesEncodingMax]; |
||
41 | NRangeCoder_CBitTreeEncoder _highCoder; |
||
42 | } NLength_CEncoder; |
||
43 | |||
44 | typedef struct |
||
45 | { |
||
46 | NLength_CEncoder base; |
||
47 | unsigned _prices[kNumSymbolsTotal][kNumPosStatesEncodingMax]; |
||
48 | unsigned _tableSize; |
||
49 | unsigned _counters[kNumPosStatesEncodingMax]; |
||
50 | } NLength_CPriceTableEncoder; |
||
51 | #define CPriceTableEncoder_Init(a,b) NLength_CEncoder_Init(&a.base,b) |
||
52 | |||
53 | #endif12) |