0,0 → 1,53 |
#ifndef _LZMA_ENCODER_H |
#define _LZMA_ENCODER_H |
|
#include "lzma.h" |
#include "RangeCoderBitTree.h" |
|
typedef struct |
{ |
CState State; |
bool Prev1IsChar; |
bool Prev2; |
unsigned PosPrev2; |
unsigned BackPrev2; |
unsigned Price; |
unsigned PosPrev; |
unsigned BackPrev; |
unsigned Backs[kNumRepDistances]; |
} COptimal; |
#define COptimal_MakeAsChar(a) (a)->BackPrev=(unsigned)-1,(a)->Prev1IsChar=false |
#define COptimal_MakeAsShortRep(a) (a)->BackPrev=0,(a)->Prev1IsChar=false |
#define COptimal_IsShortRep(a) ((a)->BackPrev==0) |
|
#define kIfinityPrice 0xFFFFFFF |
#define kNumOpts (1<<12) |
|
typedef CMyBitEncoder CLiteralEncoder2[0x300]; |
typedef struct |
{ |
CLiteralEncoder2* _coders; |
int _numPrevBits; |
int _numPosBits; |
unsigned _posMask; |
} CLiteralEncoder; |
|
typedef struct |
{ |
CMyBitEncoder _choice; |
CMyBitEncoder _choice2; |
NRangeCoder_CBitTreeEncoder _lowCoder[kNumPosStatesEncodingMax]; |
NRangeCoder_CBitTreeEncoder _midCoder[kNumPosStatesEncodingMax]; |
NRangeCoder_CBitTreeEncoder _highCoder; |
} NLength_CEncoder; |
|
typedef struct |
{ |
NLength_CEncoder base; |
unsigned _prices[kNumSymbolsTotal][kNumPosStatesEncodingMax]; |
unsigned _tableSize; |
unsigned _counters[kNumPosStatesEncodingMax]; |
} NLength_CPriceTableEncoder; |
#define CPriceTableEncoder_Init(a,b) NLength_CEncoder_Init(&a.base,b) |
|
#endif |