Annotation of elwix/tools/oldlzma/SRC/7zip/Compress/RangeCoder/RangeCoderOpt.h, revision 1.1
1.1 ! misho 1: // Compress/RangeCoder/RangeCoderOpt.h
! 2:
! 3: #ifndef __COMPRESS_RANGECODER_OPT_H
! 4: #define __COMPRESS_RANGECODER_OPT_H
! 5:
! 6: #define RC_INIT_VAR \
! 7: UInt32 range = rangeDecoder->Range; \
! 8: UInt32 code = rangeDecoder->Code;
! 9:
! 10: #define RC_FLUSH_VAR \
! 11: rangeDecoder->Range = range; \
! 12: rangeDecoder->Code = code;
! 13:
! 14: #define RC_NORMALIZE \
! 15: if (range < NCompress::NRangeCoder::kTopValue) \
! 16: { code = (code << 8) | rangeDecoder->Stream.ReadByte(); range <<= 8; }
! 17:
! 18: #define RC_GETBIT2(numMoveBits, prob, mi, A0, A1) \
! 19: { UInt32 bound = (range >> NCompress::NRangeCoder::kNumBitModelTotalBits) * prob; \
! 20: if (code < bound) \
! 21: { A0; range = bound; \
! 22: prob += (NCompress::NRangeCoder::kBitModelTotal - prob) >> numMoveBits; \
! 23: mi <<= 1; } \
! 24: else \
! 25: { A1; range -= bound; code -= bound; prob -= (prob) >> numMoveBits; \
! 26: mi = (mi + mi) + 1; }} \
! 27: RC_NORMALIZE
! 28:
! 29: #define RC_GETBIT(numMoveBits, prob, mi) RC_GETBIT2(numMoveBits, prob, mi, ; , ;)
! 30:
! 31: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>