misc/libphysfs/lzma/CPP/7zip/Compress/RangeCoder/RangeCoderOpt.h
branchui-scaling
changeset 15283 c4fd2813b127
parent 13390 0135e64c6c66
parent 15279 7ab5cf405686
child 15663 d92eeb468dad
equal deleted inserted replaced
13390:0135e64c6c66 15283:c4fd2813b127
     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