Lines Matching defs:rc

271 	struct rc_dec rc;
437 static void rc_reset(struct rc_dec *rc)
439 rc->range = (uint32_t)-1;
440 rc->code = 0;
441 rc->init_bytes_left = RC_INIT_BYTES;
445 * Read the first five initial bytes into rc->code if they haven't been
448 static bool rc_read_init(struct rc_dec *rc, struct xz_buf *b)
450 while (rc->init_bytes_left > 0) {
454 rc->code = (rc->code << 8) + b->in[b->in_pos++];
455 --rc->init_bytes_left;
462 static inline bool rc_limit_exceeded(const struct rc_dec *rc)
464 return rc->in_pos > rc->in_limit;
471 static inline bool rc_is_finished(const struct rc_dec *rc)
473 return rc->code == 0;
477 static __always_inline void rc_normalize(struct rc_dec *rc)
479 if (rc->range < RC_TOP_VALUE) {
480 rc->range <<= RC_SHIFT_BITS;
481 rc->code = (rc->code << RC_SHIFT_BITS) + rc->in[rc->in_pos++];
496 static __always_inline int rc_bit(struct rc_dec *rc, uint16_t *prob)
501 rc_normalize(rc);
502 bound = (rc->range >> RC_BIT_MODEL_TOTAL_BITS) * *prob;
503 if (rc->code < bound) {
504 rc->range = bound;
508 rc->range -= bound;
509 rc->code -= bound;
519 struct rc_dec *rc, uint16_t *probs, uint32_t limit)
524 if (rc_bit(rc, &probs[symbol]))
534 static __always_inline void rc_bittree_reverse(struct rc_dec *rc,
541 if (rc_bit(rc, &probs[symbol])) {
552 struct rc_dec *rc, uint32_t *dest, uint32_t limit)
557 rc_normalize(rc);
558 rc->range >>= 1;
559 rc->code -= rc->range;
560 mask = (uint32_t)0 - (rc->code >> 31);
561 rc->code += rc->range & mask;
592 symbol = rc_bittree(&s->rc, probs, 0x100);
603 if (rc_bit(&s->rc, &probs[i])) {
624 if (!rc_bit(&s->rc, &l->choice)) {
629 if (!rc_bit(&s->rc, &l->choice2)) {
641 s->lzma.len += rc_bittree(&s->rc, probs, limit) - limit;
660 dist_slot = rc_bittree(&s->rc, probs, DIST_SLOTS) - DIST_SLOTS;
672 rc_bittree_reverse(&s->rc, probs,
675 rc_direct(&s->rc, &s->lzma.rep0, limit - ALIGN_BITS);
677 rc_bittree_reverse(&s->rc, s->lzma.dist_align,
691 if (!rc_bit(&s->rc, &s->lzma.is_rep0[s->lzma.state])) {
692 if (!rc_bit(&s->rc, &s->lzma.is_rep0_long[
699 if (!rc_bit(&s->rc, &s->lzma.is_rep1[s->lzma.state])) {
702 if (!rc_bit(&s->rc, &s->lzma.is_rep2[s->lzma.state])) {
736 while (dict_has_space(&s->dict) && !rc_limit_exceeded(&s->rc)) {
739 if (!rc_bit(&s->rc, &s->lzma.is_match[
743 if (rc_bit(&s->rc, &s->lzma.is_rep[s->lzma.state]))
757 rc_normalize(&s->rc);
790 rc_reset(&s->rc);
834 * The LZMA decoder assumes that if the input limit (s->rc.in_limit) hasn't
864 s->rc.in_limit = s->temp.size + tmp;
870 s->rc.in_limit = s->temp.size + tmp - LZMA_IN_REQUIRED;
873 s->rc.in = s->temp.buf;
874 s->rc.in_pos = 0;
876 if (!lzma_main(s) || s->rc.in_pos > s->temp.size + tmp)
879 s->lzma2.compressed -= s->rc.in_pos;
881 if (s->rc.in_pos < s->temp.size) {
882 s->temp.size -= s->rc.in_pos;
883 memmove(s->temp.buf, s->temp.buf + s->rc.in_pos,
888 b->in_pos += s->rc.in_pos - s->temp.size;
894 s->rc.in = b->in;
895 s->rc.in_pos = b->in_pos;
898 s->rc.in_limit = b->in_pos + s->lzma2.compressed;
900 s->rc.in_limit = b->in_size - LZMA_IN_REQUIRED;
905 in_avail = s->rc.in_pos - b->in_pos;
910 b->in_pos = s->rc.in_pos;
1049 if (!rc_read_init(&s->rc, b))
1075 || !rc_is_finished(&s->rc))
1078 rc_reset(&s->rc);