Lines Matching defs:rc
1425 struct rc_dec rc;
1587 static void rc_reset(struct rc_dec *rc)
1589 rc->range = (uint32_t)-1;
1590 rc->code = 0;
1591 rc->init_bytes_left = RC_INIT_BYTES;
1595 * Read the first five initial bytes into rc->code if they haven't been
1598 static int rc_read_init(struct rc_dec *rc, struct xz_buf *b)
1600 while (rc->init_bytes_left > 0) {
1603 rc->code = (rc->code << 8) + b->in[b->in_pos++];
1604 --rc->init_bytes_left;
1611 static inline int rc_limit_exceeded(const struct rc_dec *rc)
1613 return rc->in_pos > rc->in_limit;
1620 static inline int rc_is_finished(const struct rc_dec *rc)
1622 return rc->code == 0;
1626 static inline void rc_normalize(struct rc_dec *rc)
1628 if (rc->range < RC_TOP_VALUE) {
1629 rc->range <<= RC_SHIFT_BITS;
1630 rc->code = (rc->code << RC_SHIFT_BITS) + rc->in[rc->in_pos++];
1645 static inline int rc_bit(struct rc_dec *rc, uint16_t *prob)
1650 rc_normalize(rc);
1651 bound = (rc->range >> RC_BIT_MODEL_TOTAL_BITS) * *prob;
1652 if (rc->code < bound) {
1653 rc->range = bound;
1657 rc->range -= bound;
1658 rc->code -= bound;
1667 static inline uint32_t rc_bittree(struct rc_dec *rc,
1673 if (rc_bit(rc, &probs[symbol]))
1683 static inline void rc_bittree_reverse(struct rc_dec *rc,
1691 if (rc_bit(rc, &probs[symbol])) {
1701 static inline void rc_direct(struct rc_dec *rc, uint32_t *dest, uint32_t limit)
1706 rc_normalize(rc);
1707 rc->range >>= 1;
1708 rc->code -= rc->range;
1709 mask = (uint32_t)0 - (rc->code >> 31);
1710 rc->code += rc->range & mask;
1741 symbol = rc_bittree(&s->rc, probs, 0x100);
1752 if (rc_bit(&s->rc, &probs[i])) {
1773 if (!rc_bit(&s->rc, &l->choice)) {
1778 if (!rc_bit(&s->rc, &l->choice2)) {
1790 s->lzma.len += rc_bittree(&s->rc, probs, limit) - limit;
1809 dist_slot = rc_bittree(&s->rc, probs, DIST_SLOTS) - DIST_SLOTS;
1821 rc_bittree_reverse(&s->rc, probs,
1824 rc_direct(&s->rc, &s->lzma.rep0, limit - ALIGN_BITS);
1826 rc_bittree_reverse(&s->rc, s->lzma.dist_align,
1840 if (!rc_bit(&s->rc, &s->lzma.is_rep0[s->lzma.state])) {
1841 if (!rc_bit(&s->rc, &s->lzma.is_rep0_long[
1848 if (!rc_bit(&s->rc, &s->lzma.is_rep1[s->lzma.state])) {
1851 if (!rc_bit(&s->rc, &s->lzma.is_rep2[s->lzma.state])) {
1885 while (dict_has_space(&s->dict) && !rc_limit_exceeded(&s->rc)) {
1888 if (!rc_bit(&s->rc, &s->lzma.is_match[
1892 if (rc_bit(&s->rc, &s->lzma.is_rep[s->lzma.state]))
1906 rc_normalize(&s->rc);
1939 rc_reset(&s->rc);
1983 * The LZMA decoder assumes that if the input limit (s->rc.in_limit) hasn't
2013 s->rc.in_limit = s->temp.size + tmp;
2019 s->rc.in_limit = s->temp.size + tmp - LZMA_IN_REQUIRED;
2022 s->rc.in = s->temp.buf;
2023 s->rc.in_pos = 0;
2025 if (!lzma_main(s) || s->rc.in_pos > s->temp.size + tmp)
2028 s->lzma2.compressed -= s->rc.in_pos;
2030 if (s->rc.in_pos < s->temp.size) {
2031 s->temp.size -= s->rc.in_pos;
2032 memmove(s->temp.buf, s->temp.buf + s->rc.in_pos,
2037 b->in_pos += s->rc.in_pos - s->temp.size;
2043 s->rc.in = b->in;
2044 s->rc.in_pos = b->in_pos;
2047 s->rc.in_limit = b->in_pos + s->lzma2.compressed;
2049 s->rc.in_limit = b->in_size - LZMA_IN_REQUIRED;
2054 in_avail = s->rc.in_pos - b->in_pos;
2058 b->in_pos = s->rc.in_pos;
2197 if (!rc_read_init(&s->rc, b))
2223 || !rc_is_finished(&s->rc))
2226 rc_reset(&s->rc);