Exemple #1
0
        public void Encode(BinaryCoder enc, uint value)
        {
            ++value;

            int magnitude = 0;

            while (value >= (2u << magnitude))
            {
                ++magnitude;
            }
            m_magnitude.Encode(enc, magnitude);

            uint mask = (uint)(magnitude == 0 ? 1u << (magnitude - 1) : 0);

            if (mask != 0)
            {
                int top = (magnitude < MAX_TOP) ? magnitude : MAX_TOP;
                m_bitPositions[top].Encode(enc, ((value & mask) != 0) ? 1:0);

                mask >>= 1;
                while (mask != 0)
                {
                    int bit = (value & mask) != 0 ? 1 : 0;
                    enc.Encode(bit, CoderConstants.PROB_MAX / 2);
                    mask >>= 1;
                }
            }
        }
Exemple #2
0
 public void Encode(BinaryCoder enc, int bit)
 {
     enc.Encode(bit, m_prob);
     Adapt(bit);
 }