void Encode(TRangeEncoder rangeEncoder, int symbol) { int m, bitIndex, bit; m = 1; for (bitIndex = NumBitLevels - 1; bitIndex >= 0; bitIndex--) { bit = (symbol >> bitIndex) & 1; rangeEncoder.Encode(Models, m, bit); m = (m << 1) | bit; } }
void ReverseEncode(TRangeEncoder rangeEncoder, int symbol) { int m, i, bit; m = 1; for (i = 0; i < NumBitLevels; i++) { bit = symbol & 1; rangeEncoder.Encode(Models, m, bit); m = (m << 1) | bit; symbol = symbol >> 1; } }
public static void ReverseEncode(short[] Models, int startIndex, TRangeEncoder rangeEncoder, int NumBitLevels, int symbol) { int m, i, bit; m = 1; for (i = 0; i < NumBitLevels; i++) { bit = symbol & 1; rangeEncoder.Encode(Models, startIndex + m, bit); m = (m << 1) | bit; symbol = symbol >> 1; } }
static URangeEncoder() { RangeEncoder = new TRangeEncoder(); }