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()
121 memcpy(out + *out_pos, coder->buffer + coder->pos, buf_avail); in simple_code()
126 const lzma_ret ret = copy_or_code(coder, allocator, in simple_code()
137 coder, out + out_start, size); in simple_code()
140 assert(unfiltered <= coder->allocated / 2); in simple_code()
144 coder->pos = 0; in simple_code()
145 coder->size = unfiltered; in simple_code()
147 if (coder->end_was_reached) { in simple_code()
150 coder->size = 0; in simple_code()
156 memcpy(coder->buffer, out + *out_pos, unfiltered); in simple_code()
158 } else if (coder->pos > 0) { in simple_code()
159 memmove(coder->buffer, coder->buffer + coder->pos, buf_avail); in simple_code()
160 coder->size -= coder->pos; in simple_code()
161 coder->pos = 0; in simple_code()
164 assert(coder->pos == 0); in simple_code()
170 if (coder->size > 0) { in simple_code()
172 const lzma_ret ret = copy_or_code(coder, allocator, in simple_code()
174 coder->buffer, &coder->size, in simple_code()
175 coder->allocated, action); in simple_code()
181 coder->filtered = call_filter( in simple_code()
182 coder, coder->buffer, coder->size); in simple_code()
186 if (coder->end_was_reached) in simple_code()
187 coder->filtered = coder->size; in simple_code()
190 lzma_bufcpy(coder->buffer, &coder->pos, coder->filtered, in simple_code()
195 if (coder->end_was_reached && coder->pos == coder->size) in simple_code()
205 lzma_simple_coder *coder = coder_ptr; in simple_coder_end() local
206 lzma_next_end(&coder->next, allocator); in simple_coder_end()
207 lzma_free(coder->simple, allocator); in simple_coder_end()
208 lzma_free(coder, allocator); in simple_coder_end()
218 lzma_simple_coder *coder = coder_ptr; in simple_coder_update() local
222 &coder->next, allocator, reversed_filters + 1); in simple_coder_update()
235 lzma_simple_coder *coder = next->coder; in lzma_simple_coder_init() local
236 if (coder == NULL) { in lzma_simple_coder_init()
241 coder = lzma_alloc(sizeof(lzma_simple_coder) in lzma_simple_coder_init()
243 if (coder == NULL) in lzma_simple_coder_init()
246 next->coder = coder; in lzma_simple_coder_init()
251 coder->next = LZMA_NEXT_CODER_INIT; in lzma_simple_coder_init()
252 coder->filter = filter; in lzma_simple_coder_init()
253 coder->allocated = 2 * unfiltered_max; in lzma_simple_coder_init()
257 coder->simple = lzma_alloc(simple_size, allocator); in lzma_simple_coder_init()
258 if (coder->simple == NULL) in lzma_simple_coder_init()
261 coder->simple = NULL; in lzma_simple_coder_init()
267 coder->now_pos = simple->start_offset; in lzma_simple_coder_init()
268 if (coder->now_pos & (alignment - 1)) in lzma_simple_coder_init()
271 coder->now_pos = 0; in lzma_simple_coder_init()
275 coder->is_encoder = is_encoder; in lzma_simple_coder_init()
276 coder->end_was_reached = false; in lzma_simple_coder_init()
277 coder->pos = 0; in lzma_simple_coder_init()
278 coder->filtered = 0; in lzma_simple_coder_init()
279 coder->size = 0; in lzma_simple_coder_init()
281 return lzma_next_filter_init(&coder->next, allocator, filters + 1); in lzma_simple_coder_init()