Lines Matching refs:coder

21 copy_or_code(lzma_simple_coder *coder, const lzma_allocator *allocator,  in copy_or_code()  argument
26 assert(!coder->end_was_reached); in copy_or_code()
28 if (coder->next.code == NULL) { in copy_or_code()
32 if (coder->is_encoder && action == LZMA_FINISH in copy_or_code()
34 coder->end_was_reached = true; in copy_or_code()
38 const lzma_ret ret = coder->next.code( in copy_or_code()
39 coder->next.coder, allocator, in copy_or_code()
44 assert(!coder->is_encoder in copy_or_code()
46 coder->end_was_reached = true; in copy_or_code()
58 call_filter(lzma_simple_coder *coder, uint8_t *buffer, size_t size) in call_filter() argument
60 const size_t filtered = coder->filter(coder->simple, in call_filter()
61 coder->now_pos, coder->is_encoder, in call_filter()
63 coder->now_pos += filtered; in call_filter()
74 lzma_simple_coder *coder = coder_ptr; in simple_code() local
85 if (coder->pos < coder->filtered) { in simple_code()
86 lzma_bufcpy(coder->buffer, &coder->pos, coder->filtered, in simple_code()
91 if (coder->pos < coder->filtered) in simple_code()
94 if (coder->end_was_reached) { in simple_code()
95 assert(coder->filtered == coder->size); in simple_code()
101 coder->filtered = 0; in simple_code()
103 assert(!coder->end_was_reached); in simple_code()
111 const size_t buf_avail = coder->size - coder->pos; in simple_code()
127 memcpy(out + *out_pos, coder->buffer + coder->pos, in simple_code()
134 const lzma_ret ret = copy_or_code(coder, allocator, in simple_code()
145 coder, out + out_start, size); in simple_code()
148 assert(unfiltered <= coder->allocated / 2); in simple_code()
152 coder->pos = 0; in simple_code()
153 coder->size = unfiltered; in simple_code()
155 if (coder->end_was_reached) { in simple_code()
158 coder->size = 0; in simple_code()
164 memcpy(coder->buffer, out + *out_pos, unfiltered); in simple_code()
166 } else if (coder->pos > 0) { in simple_code()
167 memmove(coder->buffer, coder->buffer + coder->pos, buf_avail); in simple_code()
168 coder->size -= coder->pos; in simple_code()
169 coder->pos = 0; in simple_code()
172 assert(coder->pos == 0); in simple_code()
178 if (coder->size > 0) { in simple_code()
180 const lzma_ret ret = copy_or_code(coder, allocator, in simple_code()
182 coder->buffer, &coder->size, in simple_code()
183 coder->allocated, action); in simple_code()
189 coder->filtered = call_filter( in simple_code()
190 coder, coder->buffer, coder->size); in simple_code()
194 if (coder->end_was_reached) in simple_code()
195 coder->filtered = coder->size; in simple_code()
198 lzma_bufcpy(coder->buffer, &coder->pos, coder->filtered, in simple_code()
203 if (coder->end_was_reached && coder->pos == coder->size) in simple_code()
213 lzma_simple_coder *coder = coder_ptr; in simple_coder_end() local
214 lzma_next_end(&coder->next, allocator); in simple_coder_end()
215 lzma_free(coder->simple, allocator); in simple_coder_end()
216 lzma_free(coder, allocator); in simple_coder_end()
226 lzma_simple_coder *coder = coder_ptr; in simple_coder_update() local
230 &coder->next, allocator, reversed_filters + 1); in simple_coder_update()
243 lzma_simple_coder *coder = next->coder; in lzma_simple_coder_init() local
244 if (coder == NULL) { in lzma_simple_coder_init()
249 coder = lzma_alloc(sizeof(lzma_simple_coder) in lzma_simple_coder_init()
251 if (coder == NULL) in lzma_simple_coder_init()
254 next->coder = coder; in lzma_simple_coder_init()
259 coder->next = LZMA_NEXT_CODER_INIT; in lzma_simple_coder_init()
260 coder->filter = filter; in lzma_simple_coder_init()
261 coder->allocated = 2 * unfiltered_max; in lzma_simple_coder_init()
265 coder->simple = lzma_alloc(simple_size, allocator); in lzma_simple_coder_init()
266 if (coder->simple == NULL) in lzma_simple_coder_init()
269 coder->simple = NULL; in lzma_simple_coder_init()
275 coder->now_pos = simple->start_offset; in lzma_simple_coder_init()
276 if (coder->now_pos & (alignment - 1)) in lzma_simple_coder_init()
279 coder->now_pos = 0; in lzma_simple_coder_init()
283 coder->is_encoder = is_encoder; in lzma_simple_coder_init()
284 coder->end_was_reached = false; in lzma_simple_coder_init()
285 coder->pos = 0; in lzma_simple_coder_init()
286 coder->filtered = 0; in lzma_simple_coder_init()
287 coder->size = 0; in lzma_simple_coder_init()
289 return lzma_next_filter_init(&coder->next, allocator, filters + 1); in lzma_simple_coder_init()