Lines Matching refs:coder
80 fill_window(lzma_coder *coder, const lzma_allocator *allocator, in fill_window() argument
84 assert(coder->mf.read_pos <= coder->mf.write_pos); in fill_window()
87 if (coder->mf.read_pos >= coder->mf.size - coder->mf.keep_size_after) in fill_window()
88 move_window(&coder->mf); in fill_window()
93 size_t write_pos = coder->mf.write_pos; in fill_window()
95 if (coder->next.code == NULL) { in fill_window()
97 lzma_bufcpy(in, in_pos, in_size, coder->mf.buffer, in fill_window()
98 &write_pos, coder->mf.size); in fill_window()
104 ret = coder->next.code(coder->next.coder, allocator, in fill_window()
106 coder->mf.buffer, &write_pos, in fill_window()
107 coder->mf.size, action); in fill_window()
110 coder->mf.write_pos = write_pos; in fill_window()
116 memzero(coder->mf.buffer + write_pos, LZMA_MEMCMPLEN_EXTRA); in fill_window()
125 coder->mf.action = action; in fill_window()
126 coder->mf.read_limit = coder->mf.write_pos; in fill_window()
128 } else if (coder->mf.write_pos > coder->mf.keep_size_after) { in fill_window()
132 coder->mf.read_limit = coder->mf.write_pos in fill_window()
133 - coder->mf.keep_size_after; in fill_window()
137 if (coder->mf.pending > 0 in fill_window()
138 && coder->mf.read_pos < coder->mf.read_limit) { in fill_window()
141 const uint32_t pending = coder->mf.pending; in fill_window()
142 coder->mf.pending = 0; in fill_window()
146 assert(coder->mf.read_pos >= pending); in fill_window()
147 coder->mf.read_pos -= pending; in fill_window()
151 coder->mf.skip(&coder->mf, pending); in fill_window()
165 lzma_coder *coder = coder_ptr; in lz_encode() local
170 if (coder->mf.action == LZMA_RUN && coder->mf.read_pos in lz_encode()
171 >= coder->mf.read_limit) in lz_encode()
172 return_if_error(fill_window(coder, allocator, in lz_encode()
176 const lzma_ret ret = coder->lz.code(coder->lz.coder, in lz_encode()
177 &coder->mf, out, out_pos, out_size); in lz_encode()
182 coder->mf.action = LZMA_RUN; in lz_encode()
489 lzma_coder *coder = coder_ptr; in lz_encoder_end() local
491 lzma_next_end(&coder->next, allocator); in lz_encoder_end()
493 lzma_free(coder->mf.son, allocator); in lz_encoder_end()
494 lzma_free(coder->mf.hash, allocator); in lz_encoder_end()
495 lzma_free(coder->mf.buffer, allocator); in lz_encoder_end()
497 if (coder->lz.end != NULL) in lz_encoder_end()
498 coder->lz.end(coder->lz.coder, allocator); in lz_encoder_end()
500 lzma_free(coder->lz.coder, allocator); in lz_encoder_end()
502 lzma_free(coder, allocator); in lz_encoder_end()
512 lzma_coder *coder = coder_ptr; in lz_encoder_update() local
514 if (coder->lz.options_update == NULL) in lz_encoder_update()
517 return_if_error(coder->lz.options_update( in lz_encoder_update()
518 coder->lz.coder, reversed_filters)); in lz_encoder_update()
521 &coder->next, allocator, reversed_filters + 1); in lz_encoder_update()
529 lzma_coder *coder = coder_ptr; in lz_encoder_set_out_limit() local
532 if (coder->next.code == NULL && coder->lz.set_out_limit != NULL) in lz_encoder_set_out_limit()
533 return coder->lz.set_out_limit( in lz_encoder_set_out_limit()
534 coder->lz.coder, uncomp_size, out_limit); in lz_encoder_set_out_limit()
554 lzma_coder *coder = next->coder; in lzma_lz_encoder_init() local
555 if (coder == NULL) { in lzma_lz_encoder_init()
556 coder = lzma_alloc(sizeof(lzma_coder), allocator); in lzma_lz_encoder_init()
557 if (coder == NULL) in lzma_lz_encoder_init()
560 next->coder = coder; in lzma_lz_encoder_init()
566 coder->lz.coder = NULL; in lzma_lz_encoder_init()
567 coder->lz.code = NULL; in lzma_lz_encoder_init()
568 coder->lz.end = NULL; in lzma_lz_encoder_init()
569 coder->lz.options_update = NULL; in lzma_lz_encoder_init()
570 coder->lz.set_out_limit = NULL; in lzma_lz_encoder_init()
575 coder->mf.buffer = NULL; in lzma_lz_encoder_init()
576 coder->mf.size = 0; in lzma_lz_encoder_init()
577 coder->mf.hash = NULL; in lzma_lz_encoder_init()
578 coder->mf.son = NULL; in lzma_lz_encoder_init()
579 coder->mf.hash_count = 0; in lzma_lz_encoder_init()
580 coder->mf.sons_count = 0; in lzma_lz_encoder_init()
582 coder->next = LZMA_NEXT_CODER_INIT; in lzma_lz_encoder_init()
587 return_if_error(lz_init(&coder->lz, allocator, in lzma_lz_encoder_init()
592 if (lz_encoder_prepare(&coder->mf, allocator, &lz_options)) in lzma_lz_encoder_init()
597 if (lz_encoder_init(&coder->mf, allocator, &lz_options)) in lzma_lz_encoder_init()
601 return lzma_next_filter_init(&coder->next, allocator, filters + 1); in lzma_lz_encoder_init()