files
kpack_c/lzma_c/LZMAEncoder.h
rgimad 244e5c92f8 lzma_c: no need to rebuild for using in kpack/kerpack, cleanup
Removed samples, converted indentation to spaces, translated to english, added header for exporting functions.
Added is_kerpack argument to lzma_compress() to make it usable either for kpack and kerpack without rebuild
2025-03-22 18:57:47 +03:00

54 lines
1.3 KiB
C

#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