Lines Matching refs:coder

81 fill_window(lzma_coder *coder, const lzma_allocator *allocator,  in fill_window()  argument
85 assert(coder->mf.read_pos <= coder->mf.write_pos); in fill_window()
88 if (coder->mf.read_pos >= coder->mf.size - coder->mf.keep_size_after) in fill_window()
89 move_window(&coder->mf); in fill_window()
94 size_t write_pos = coder->mf.write_pos; in fill_window()
96 if (coder->next.code == NULL) { in fill_window()
98 lzma_bufcpy(in, in_pos, in_size, coder->mf.buffer, in fill_window()
99 &write_pos, coder->mf.size); in fill_window()
105 ret = coder->next.code(coder->next.coder, allocator, in fill_window()
107 coder->mf.buffer, &write_pos, in fill_window()
108 coder->mf.size, action); in fill_window()
111 coder->mf.write_pos = write_pos; in fill_window()
117 memzero(coder->mf.buffer + write_pos, LZMA_MEMCMPLEN_EXTRA); in fill_window()
126 coder->mf.action = action; in fill_window()
127 coder->mf.read_limit = coder->mf.write_pos; in fill_window()
129 } else if (coder->mf.write_pos > coder->mf.keep_size_after) { in fill_window()
133 coder->mf.read_limit = coder->mf.write_pos in fill_window()
134 - coder->mf.keep_size_after; in fill_window()
138 if (coder->mf.pending > 0 in fill_window()
139 && coder->mf.read_pos < coder->mf.read_limit) { in fill_window()
142 const uint32_t pending = coder->mf.pending; in fill_window()
143 coder->mf.pending = 0; in fill_window()
147 assert(coder->mf.read_pos >= pending); in fill_window()
148 coder->mf.read_pos -= pending; in fill_window()
152 coder->mf.skip(&coder->mf, pending); in fill_window()
166 lzma_coder *coder = coder_ptr; in lz_encode() local
171 if (coder->mf.action == LZMA_RUN && coder->mf.read_pos in lz_encode()
172 >= coder->mf.read_limit) in lz_encode()
173 return_if_error(fill_window(coder, allocator, in lz_encode()
177 const lzma_ret ret = coder->lz.code(coder->lz.coder, in lz_encode()
178 &coder->mf, out, out_pos, out_size); in lz_encode()
183 coder->mf.action = LZMA_RUN; in lz_encode()
488 lzma_coder *coder = coder_ptr; in lz_encoder_end() local
490 lzma_next_end(&coder->next, allocator); in lz_encoder_end()
492 lzma_free(coder->mf.son, allocator); in lz_encoder_end()
493 lzma_free(coder->mf.hash, allocator); in lz_encoder_end()
494 lzma_free(coder->mf.buffer, allocator); in lz_encoder_end()
496 if (coder->lz.end != NULL) in lz_encoder_end()
497 coder->lz.end(coder->lz.coder, allocator); in lz_encoder_end()
499 lzma_free(coder->lz.coder, allocator); in lz_encoder_end()
501 lzma_free(coder, allocator); in lz_encoder_end()
511 lzma_coder *coder = coder_ptr; in lz_encoder_update() local
513 if (coder->lz.options_update == NULL) in lz_encoder_update()
516 return_if_error(coder->lz.options_update( in lz_encoder_update()
517 coder->lz.coder, reversed_filters)); in lz_encoder_update()
520 &coder->next, allocator, reversed_filters + 1); in lz_encoder_update()
537 lzma_coder *coder = next->coder; in lzma_lz_encoder_init() local
538 if (coder == NULL) { in lzma_lz_encoder_init()
539 coder = lzma_alloc(sizeof(lzma_coder), allocator); in lzma_lz_encoder_init()
540 if (coder == NULL) in lzma_lz_encoder_init()
543 next->coder = coder; in lzma_lz_encoder_init()
548 coder->lz.coder = NULL; in lzma_lz_encoder_init()
549 coder->lz.code = NULL; in lzma_lz_encoder_init()
550 coder->lz.end = NULL; in lzma_lz_encoder_init()
555 coder->mf.buffer = NULL; in lzma_lz_encoder_init()
556 coder->mf.size = 0; in lzma_lz_encoder_init()
557 coder->mf.hash = NULL; in lzma_lz_encoder_init()
558 coder->mf.son = NULL; in lzma_lz_encoder_init()
559 coder->mf.hash_count = 0; in lzma_lz_encoder_init()
560 coder->mf.sons_count = 0; in lzma_lz_encoder_init()
562 coder->next = LZMA_NEXT_CODER_INIT; in lzma_lz_encoder_init()
567 return_if_error(lz_init(&coder->lz, allocator, in lzma_lz_encoder_init()
572 if (lz_encoder_prepare(&coder->mf, allocator, &lz_options)) in lzma_lz_encoder_init()
577 if (lz_encoder_init(&coder->mf, allocator, &lz_options)) in lzma_lz_encoder_init()
581 return lzma_next_filter_init(&coder->next, allocator, filters + 1); in lzma_lz_encoder_init()