Lines Matching refs:coder
55 lz_decoder_reset(lzma_coder *coder) in lz_decoder_reset() argument
57 coder->dict.pos = 0; in lz_decoder_reset()
58 coder->dict.full = 0; in lz_decoder_reset()
59 coder->dict.buf[coder->dict.size - 1] = '\0'; in lz_decoder_reset()
60 coder->dict.need_reset = false; in lz_decoder_reset()
66 decode_buffer(lzma_coder *coder, in decode_buffer() argument
73 if (coder->dict.pos == coder->dict.size) in decode_buffer()
74 coder->dict.pos = 0; in decode_buffer()
78 const size_t dict_start = coder->dict.pos; in decode_buffer()
84 coder->dict.limit = coder->dict.pos in decode_buffer()
86 coder->dict.size - coder->dict.pos); in decode_buffer()
89 const lzma_ret ret = coder->lz.code( in decode_buffer()
90 coder->lz.coder, &coder->dict, in decode_buffer()
98 const size_t copy_size = coder->dict.pos - dict_start; in decode_buffer()
102 memcpy(out + *out_pos, coder->dict.buf + dict_start, in decode_buffer()
108 if (coder->dict.need_reset) { in decode_buffer()
109 lz_decoder_reset(coder); in decode_buffer()
126 || coder->dict.pos < coder->dict.size) in decode_buffer()
140 lzma_coder *coder = coder_ptr; in lz_decode() local
142 if (coder->next.code == NULL) in lz_decode()
143 return decode_buffer(coder, in, in_pos, in_size, in lz_decode()
150 if (!coder->next_finished in lz_decode()
151 && coder->temp.pos == coder->temp.size) { in lz_decode()
152 coder->temp.pos = 0; in lz_decode()
153 coder->temp.size = 0; in lz_decode()
155 const lzma_ret ret = coder->next.code( in lz_decode()
156 coder->next.coder, in lz_decode()
158 coder->temp.buffer, &coder->temp.size, in lz_decode()
162 coder->next_finished = true; in lz_decode()
163 else if (ret != LZMA_OK || coder->temp.size == 0) in lz_decode()
167 if (coder->this_finished) { in lz_decode()
168 if (coder->temp.size != 0) in lz_decode()
171 if (coder->next_finished) in lz_decode()
177 const lzma_ret ret = decode_buffer(coder, coder->temp.buffer, in lz_decode()
178 &coder->temp.pos, coder->temp.size, in lz_decode()
182 coder->this_finished = true; in lz_decode()
185 else if (coder->next_finished && *out_pos < out_size) in lz_decode()
196 lzma_coder *coder = coder_ptr; in lz_decoder_end() local
198 lzma_next_end(&coder->next, allocator); in lz_decoder_end()
199 lzma_free(coder->dict.buf, allocator); in lz_decoder_end()
201 if (coder->lz.end != NULL) in lz_decoder_end()
202 coder->lz.end(coder->lz.coder, allocator); in lz_decoder_end()
204 lzma_free(coder->lz.coder, allocator); in lz_decoder_end()
206 lzma_free(coder, allocator); in lz_decoder_end()
219 lzma_coder *coder = next->coder; in lzma_lz_decoder_init() local
220 if (coder == NULL) { in lzma_lz_decoder_init()
221 coder = lzma_alloc(sizeof(lzma_coder), allocator); in lzma_lz_decoder_init()
222 if (coder == NULL) in lzma_lz_decoder_init()
225 next->coder = coder; in lzma_lz_decoder_init()
229 coder->dict.buf = NULL; in lzma_lz_decoder_init()
230 coder->dict.size = 0; in lzma_lz_decoder_init()
231 coder->lz = LZMA_LZ_DECODER_INIT; in lzma_lz_decoder_init()
232 coder->next = LZMA_NEXT_CODER_INIT; in lzma_lz_decoder_init()
238 return_if_error(lz_init(&coder->lz, allocator, in lzma_lz_decoder_init()
262 if (coder->dict.size != lz_options.dict_size) { in lzma_lz_decoder_init()
263 lzma_free(coder->dict.buf, allocator); in lzma_lz_decoder_init()
264 coder->dict.buf in lzma_lz_decoder_init()
266 if (coder->dict.buf == NULL) in lzma_lz_decoder_init()
269 coder->dict.size = lz_options.dict_size; in lzma_lz_decoder_init()
272 lz_decoder_reset(next->coder); in lzma_lz_decoder_init()
282 memcpy(coder->dict.buf, lz_options.preset_dict + offset, in lzma_lz_decoder_init()
284 coder->dict.pos = copy_size; in lzma_lz_decoder_init()
285 coder->dict.full = copy_size; in lzma_lz_decoder_init()
289 coder->next_finished = false; in lzma_lz_decoder_init()
290 coder->this_finished = false; in lzma_lz_decoder_init()
291 coder->temp.pos = 0; in lzma_lz_decoder_init()
292 coder->temp.size = 0; in lzma_lz_decoder_init()
295 return lzma_next_filter_init(&coder->next, allocator, filters + 1); in lzma_lz_decoder_init()
309 lzma_coder *coder = coder_ptr; in lzma_lz_decoder_uncompressed() local
310 coder->lz.set_uncompressed(coder->lz.coder, uncompressed_size); in lzma_lz_decoder_uncompressed()