12345678910111213141516171819202122232425 |
- /****************************************************************************
- * Contents: 'Carryless rangecoder' by Dmitry Subbotin *
- ****************************************************************************/
- const uint TOP=1 << 24, BOT=1 << 15;
- class RangeCoder
- {
- public:
- void InitDecoder(Unpack *UnpackRead);
- inline int GetCurrentCount();
- inline uint GetCurrentShiftCount(uint SHIFT);
- inline void Decode();
- inline void PutChar(unsigned int c);
- inline unsigned int GetChar();
- uint low, code, range;
- struct SUBRANGE
- {
- uint LowCount, HighCount, scale;
- } SubRange;
- Unpack *UnpackRead;
- };
|