Lines Matching refs:coder
20 copy_or_code(lzma_simple_coder *coder, const lzma_allocator *allocator, in copy_or_code() argument
25 assert(!coder->end_was_reached); in copy_or_code()
27 if (coder->next.code == NULL) { in copy_or_code()
31 if (coder->is_encoder && action == LZMA_FINISH in copy_or_code()
33 coder->end_was_reached = true; in copy_or_code()
37 const lzma_ret ret = coder->next.code( in copy_or_code()
38 coder->next.coder, allocator, in copy_or_code()
43 assert(!coder->is_encoder in copy_or_code()
45 coder->end_was_reached = true; in copy_or_code()
57 call_filter(lzma_simple_coder *coder, uint8_t *buffer, size_t size) in call_filter() argument
59 const size_t filtered = coder->filter(coder->simple, in call_filter()
60 coder->now_pos, coder->is_encoder, in call_filter()
62 coder->now_pos += filtered; in call_filter()
73 lzma_simple_coder *coder = coder_ptr; in simple_code() local
84 if (coder->pos < coder->filtered) { in simple_code()
85 lzma_bufcpy(coder->buffer, &coder->pos, coder->filtered, in simple_code()
90 if (coder->pos < coder->filtered) in simple_code()
93 if (coder->end_was_reached) { in simple_code()
94 assert(coder->filtered == coder->size); in simple_code()
100 coder->filtered = 0; in simple_code()
102 assert(!coder->end_was_reached); in simple_code()
110 const size_t buf_avail = coder->size - coder->pos; in simple_code()
126 memcpy(out + *out_pos, coder->buffer + coder->pos, in simple_code()
133 const lzma_ret ret = copy_or_code(coder, allocator, in simple_code()
146 coder, out + out_start, size); in simple_code()
149 assert(unfiltered <= coder->allocated / 2); in simple_code()
153 coder->pos = 0; in simple_code()
154 coder->size = unfiltered; in simple_code()
156 if (coder->end_was_reached) { in simple_code()
159 coder->size = 0; in simple_code()
165 memcpy(coder->buffer, out + *out_pos, unfiltered); in simple_code()
167 } else if (coder->pos > 0) { in simple_code()
168 memmove(coder->buffer, coder->buffer + coder->pos, buf_avail); in simple_code()
169 coder->size -= coder->pos; in simple_code()
170 coder->pos = 0; in simple_code()
173 assert(coder->pos == 0); in simple_code()
179 if (coder->size > 0) { in simple_code()
181 const lzma_ret ret = copy_or_code(coder, allocator, in simple_code()
183 coder->buffer, &coder->size, in simple_code()
184 coder->allocated, action); in simple_code()
190 coder->filtered = call_filter( in simple_code()
191 coder, coder->buffer, coder->size); in simple_code()
195 if (coder->end_was_reached) in simple_code()
196 coder->filtered = coder->size; in simple_code()
199 lzma_bufcpy(coder->buffer, &coder->pos, coder->filtered, in simple_code()
204 if (coder->end_was_reached && coder->pos == coder->size) in simple_code()
214 lzma_simple_coder *coder = coder_ptr; in simple_coder_end() local
215 lzma_next_end(&coder->next, allocator); in simple_coder_end()
216 lzma_free(coder->simple, allocator); in simple_coder_end()
217 lzma_free(coder, allocator); in simple_coder_end()
227 lzma_simple_coder *coder = coder_ptr; in simple_coder_update() local
231 &coder->next, allocator, reversed_filters + 1); in simple_coder_update()
244 lzma_simple_coder *coder = next->coder; in lzma_simple_coder_init() local
245 if (coder == NULL) { in lzma_simple_coder_init()
250 coder = lzma_alloc(sizeof(lzma_simple_coder) in lzma_simple_coder_init()
252 if (coder == NULL) in lzma_simple_coder_init()
255 next->coder = coder; in lzma_simple_coder_init()
260 coder->next = LZMA_NEXT_CODER_INIT; in lzma_simple_coder_init()
261 coder->filter = filter; in lzma_simple_coder_init()
262 coder->allocated = 2 * unfiltered_max; in lzma_simple_coder_init()
266 coder->simple = lzma_alloc(simple_size, allocator); in lzma_simple_coder_init()
267 if (coder->simple == NULL) in lzma_simple_coder_init()
270 coder->simple = NULL; in lzma_simple_coder_init()
276 coder->now_pos = simple->start_offset; in lzma_simple_coder_init()
277 if (coder->now_pos & (alignment - 1)) in lzma_simple_coder_init()
280 coder->now_pos = 0; in lzma_simple_coder_init()
284 coder->is_encoder = is_encoder; in lzma_simple_coder_init()
285 coder->end_was_reached = false; in lzma_simple_coder_init()
286 coder->pos = 0; in lzma_simple_coder_init()
287 coder->filtered = 0; in lzma_simple_coder_init()
288 coder->size = 0; in lzma_simple_coder_init()
290 return lzma_next_filter_init(&coder->next, allocator, filters + 1); in lzma_simple_coder_init()