Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  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
  54.