Subversion Repositories Kolibri OS

Rev

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
#endif