Lines Matching refs:coder

55 lz_decoder_reset(lzma_coder *coder)
57 coder->dict.pos = 0;
58 coder->dict.full = 0;
59 coder->dict.buf[coder->dict.size - 1] = '\0';
60 coder->dict.need_reset = false;
66 decode_buffer(lzma_coder *coder,
73 if (coder->dict.pos == coder->dict.size)
74 coder->dict.pos = 0;
78 const size_t dict_start = coder->dict.pos;
80 // Calculate how much we allow coder->lz.code() to decode.
84 coder->dict.limit = coder->dict.pos
86 coder->dict.size - coder->dict.pos);
88 // Call the coder->lz.code() to do the actual decoding.
89 const lzma_ret ret = coder->lz.code(
90 coder->lz.coder, &coder->dict,
98 const size_t copy_size = coder->dict.pos - dict_start;
102 memcpy(out + *out_pos, coder->dict.buf + dict_start,
107 // Reset the dictionary if so requested by coder->lz.code().
108 if (coder->dict.need_reset) {
109 lz_decoder_reset(coder);
126 || coder->dict.pos < coder->dict.size)
140 lzma_coder *coder = coder_ptr;
142 if (coder->next.code == NULL)
143 return decode_buffer(coder, in, in_pos, in_size,
146 // We aren't the last coder in the chain, we need to decode
150 if (!coder->next_finished
151 && coder->temp.pos == coder->temp.size) {
152 coder->temp.pos = 0;
153 coder->temp.size = 0;
155 const lzma_ret ret = coder->next.code(
156 coder->next.coder,
158 coder->temp.buffer, &coder->temp.size,
162 coder->next_finished = true;
163 else if (ret != LZMA_OK || coder->temp.size == 0)
167 if (coder->this_finished) {
168 if (coder->temp.size != 0)
171 if (coder->next_finished)
177 const lzma_ret ret = decode_buffer(coder, coder->temp.buffer,
178 &coder->temp.pos, coder->temp.size,
182 coder->this_finished = true;
185 else if (coder->next_finished && *out_pos < out_size)
196 lzma_coder *coder = coder_ptr;
198 lzma_next_end(&coder->next, allocator);
199 lzma_free(coder->dict.buf, allocator);
201 if (coder->lz.end != NULL)
202 coder->lz.end(coder->lz.coder, allocator);
204 lzma_free(coder->lz.coder, allocator);
206 lzma_free(coder, allocator);
219 lzma_coder *coder = next->coder;
220 if (coder == NULL) {
221 coder = lzma_alloc(sizeof(lzma_coder), allocator);
222 if (coder == NULL)
225 next->coder = coder;
229 coder->dict.buf = NULL;
230 coder->dict.size = 0;
231 coder->lz = LZMA_LZ_DECODER_INIT;
232 coder->next = LZMA_NEXT_CODER_INIT;
238 return_if_error(lz_init(&coder->lz, allocator,
262 if (coder->dict.size != lz_options.dict_size) {
263 lzma_free(coder->dict.buf, allocator);
264 coder->dict.buf
266 if (coder->dict.buf == NULL)
269 coder->dict.size = lz_options.dict_size;
272 lz_decoder_reset(next->coder);
282 memcpy(coder->dict.buf, lz_options.preset_dict + offset,
284 coder->dict.pos = copy_size;
285 coder->dict.full = copy_size;
289 coder->next_finished = false;
290 coder->this_finished = false;
291 coder->temp.pos = 0;
292 coder->temp.size = 0;
295 return lzma_next_filter_init(&coder->next, allocator, filters + 1);
309 lzma_coder *coder = coder_ptr;
310 coder->lz.set_uncompressed(coder->lz.coder, uncompressed_size);