⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lencoder.h

📁 经过项目量产验证的代码.开发环境是sparc+vxworks. 这个LZMA是专门为sparc做的优化压缩,性能是最好的.
💻 H
字号:
// LenCoder.h#ifndef __LENCODER_H#define __LENCODER_H#include "BitTreeCoder.h"const int kLenNumPosStatesBitsMax = 4;const int kLenNumPosStatesMax = (1 << kLenNumPosStatesBitsMax);const int kLenNumPosStatesBitsEncodingMax = 4;const int kLenNumPosStatesEncodingMax = (1 << kLenNumPosStatesBitsEncodingMax);const int kLenNumLowBits = 3;const int kLenNumLowSymbols = 1 << kLenNumLowBits;const int kLenNumMidBits = 3;const int kLenNumMidSymbols = 1 << kLenNumMidBits;const int kLenNumHighBits = 8;const int kLenNumSymbolsTotal = kLenNumLowSymbols + kLenNumMidSymbols + (1 << kLenNumHighBits);const int kLenNumSpecSymbols = kLenNumLowSymbols + kLenNumMidSymbols;class CLenDecoder{  CBitDecoder m_Choice;  CBitTreeDecoder3  m_LowCoder[kLenNumPosStatesMax];  CBitDecoder m_Choice2;  CBitTreeDecoder3  m_MidCoder[kLenNumPosStatesMax];  CBitTreeDecoder8 m_HighCoder;   int m_NumPosStates;public:  void Create(int numPosStates)    { m_NumPosStates = numPosStates; }  void Init()  {    m_Choice.Init();    for (int posState = 0; posState < m_NumPosStates; posState++)    {      m_LowCoder[posState].Init();      m_MidCoder[posState].Init();    }    m_Choice2.Init();    m_HighCoder.Init();  }  int Decode(CRangeDecoder *aRangeDecoder, int posState)  {    if(m_Choice.Decode(aRangeDecoder) == 0)      return m_LowCoder[posState].Decode(aRangeDecoder);    else    {      int symbol = kLenNumLowSymbols;      if(m_Choice2.Decode(aRangeDecoder) == 0)        symbol += m_MidCoder[posState].Decode(aRangeDecoder);      else      {        symbol += kLenNumMidSymbols;        symbol += m_HighCoder.Decode(aRangeDecoder);      }      return symbol;    }  }};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -