Lines Matching refs:coder

54 lz_decoder_reset(lzma_coder *coder)  in lz_decoder_reset()  argument
56 coder->dict.pos = LZ_DICT_INIT_POS; in lz_decoder_reset()
57 coder->dict.full = 0; in lz_decoder_reset()
58 coder->dict.buf[LZ_DICT_INIT_POS - 1] = '\0'; in lz_decoder_reset()
59 coder->dict.has_wrapped = false; 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()
75 coder->dict.pos = LZ_DICT_REPEAT_MAX; in decode_buffer()
76 coder->dict.has_wrapped = true; in decode_buffer()
77 memcpy(coder->dict.buf, coder->dict.buf in decode_buffer()
78 + coder->dict.size in decode_buffer()
85 const size_t dict_start = coder->dict.pos; in decode_buffer()
91 coder->dict.limit = coder->dict.pos in decode_buffer()
93 coder->dict.size - coder->dict.pos); in decode_buffer()
96 const lzma_ret ret = coder->lz.code( in decode_buffer()
97 coder->lz.coder, &coder->dict, in decode_buffer()
105 const size_t copy_size = coder->dict.pos - dict_start; in decode_buffer()
109 memcpy(out + *out_pos, coder->dict.buf + dict_start, in decode_buffer()
115 if (coder->dict.need_reset) { in decode_buffer()
116 lz_decoder_reset(coder); in decode_buffer()
133 || coder->dict.pos < coder->dict.size) in decode_buffer()
147 lzma_coder *coder = coder_ptr; in lz_decode() local
149 if (coder->next.code == NULL) in lz_decode()
150 return decode_buffer(coder, in, in_pos, in_size, in lz_decode()
157 if (!coder->next_finished in lz_decode()
158 && coder->temp.pos == coder->temp.size) { in lz_decode()
159 coder->temp.pos = 0; in lz_decode()
160 coder->temp.size = 0; in lz_decode()
162 const lzma_ret ret = coder->next.code( in lz_decode()
163 coder->next.coder, in lz_decode()
165 coder->temp.buffer, &coder->temp.size, in lz_decode()
169 coder->next_finished = true; in lz_decode()
170 else if (ret != LZMA_OK || coder->temp.size == 0) in lz_decode()
174 if (coder->this_finished) { in lz_decode()
175 if (coder->temp.size != 0) in lz_decode()
178 if (coder->next_finished) in lz_decode()
184 const lzma_ret ret = decode_buffer(coder, coder->temp.buffer, in lz_decode()
185 &coder->temp.pos, coder->temp.size, in lz_decode()
189 coder->this_finished = true; in lz_decode()
192 else if (coder->next_finished && *out_pos < out_size) in lz_decode()
203 lzma_coder *coder = coder_ptr; in lz_decoder_end() local
205 lzma_next_end(&coder->next, allocator); in lz_decoder_end()
206 lzma_free(coder->dict.buf, allocator); in lz_decoder_end()
208 if (coder->lz.end != NULL) in lz_decoder_end()
209 coder->lz.end(coder->lz.coder, allocator); in lz_decoder_end()
211 lzma_free(coder->lz.coder, allocator); in lz_decoder_end()
213 lzma_free(coder, allocator); in lz_decoder_end()
227 lzma_coder *coder = next->coder; in lzma_lz_decoder_init() local
228 if (coder == NULL) { in lzma_lz_decoder_init()
229 coder = lzma_alloc(sizeof(lzma_coder), allocator); in lzma_lz_decoder_init()
230 if (coder == NULL) in lzma_lz_decoder_init()
233 next->coder = coder; in lzma_lz_decoder_init()
237 coder->dict.buf = NULL; in lzma_lz_decoder_init()
238 coder->dict.size = 0; in lzma_lz_decoder_init()
239 coder->lz = LZMA_LZ_DECODER_INIT; in lzma_lz_decoder_init()
240 coder->next = LZMA_NEXT_CODER_INIT; in lzma_lz_decoder_init()
246 return_if_error(lz_init(&coder->lz, allocator, in lzma_lz_decoder_init()
280 if (coder->dict.size != alloc_size) { in lzma_lz_decoder_init()
281 lzma_free(coder->dict.buf, allocator); in lzma_lz_decoder_init()
287 coder->dict.buf = lzma_alloc(alloc_size + LZ_DICT_EXTRA, in lzma_lz_decoder_init()
289 if (coder->dict.buf == NULL) in lzma_lz_decoder_init()
295 coder->dict.size = alloc_size; in lzma_lz_decoder_init()
298 lz_decoder_reset(next->coder); in lzma_lz_decoder_init()
308 memcpy(coder->dict.buf + coder->dict.pos, in lzma_lz_decoder_init()
313 coder->dict.pos += copy_size; in lzma_lz_decoder_init()
314 coder->dict.full = copy_size; in lzma_lz_decoder_init()
318 coder->next_finished = false; in lzma_lz_decoder_init()
319 coder->this_finished = false; in lzma_lz_decoder_init()
320 coder->temp.pos = 0; in lzma_lz_decoder_init()
321 coder->temp.size = 0; in lzma_lz_decoder_init()
324 return lzma_next_filter_init(&coder->next, allocator, filters + 1); in lzma_lz_decoder_init()