Lines Matching refs:coder

55 lzma2_header_lzma(lzma_lzma2_coder *coder)  in lzma2_header_lzma()  argument
57 assert(coder->uncompressed_size > 0); in lzma2_header_lzma()
58 assert(coder->uncompressed_size <= LZMA2_UNCOMPRESSED_MAX); in lzma2_header_lzma()
59 assert(coder->compressed_size > 0); in lzma2_header_lzma()
60 assert(coder->compressed_size <= LZMA2_CHUNK_MAX); in lzma2_header_lzma()
64 if (coder->need_properties) { in lzma2_header_lzma()
67 if (coder->need_dictionary_reset) in lzma2_header_lzma()
68 coder->buf[pos] = 0x80 + (3 << 5); in lzma2_header_lzma()
70 coder->buf[pos] = 0x80 + (2 << 5); in lzma2_header_lzma()
74 if (coder->need_state_reset) in lzma2_header_lzma()
75 coder->buf[pos] = 0x80 + (1 << 5); in lzma2_header_lzma()
77 coder->buf[pos] = 0x80; in lzma2_header_lzma()
81 coder->buf_pos = pos; in lzma2_header_lzma()
84 size_t size = coder->uncompressed_size - 1; in lzma2_header_lzma()
85 coder->buf[pos++] += size >> 16; in lzma2_header_lzma()
86 coder->buf[pos++] = (size >> 8) & 0xFF; in lzma2_header_lzma()
87 coder->buf[pos++] = size & 0xFF; in lzma2_header_lzma()
90 size = coder->compressed_size - 1; in lzma2_header_lzma()
91 coder->buf[pos++] = size >> 8; in lzma2_header_lzma()
92 coder->buf[pos++] = size & 0xFF; in lzma2_header_lzma()
95 if (coder->need_properties) in lzma2_header_lzma()
96 lzma_lzma_lclppb_encode(&coder->opt_cur, coder->buf + pos); in lzma2_header_lzma()
98 coder->need_properties = false; in lzma2_header_lzma()
99 coder->need_state_reset = false; in lzma2_header_lzma()
100 coder->need_dictionary_reset = false; in lzma2_header_lzma()
104 coder->compressed_size += LZMA2_HEADER_MAX; in lzma2_header_lzma()
111 lzma2_header_uncompressed(lzma_lzma2_coder *coder) in lzma2_header_uncompressed() argument
113 assert(coder->uncompressed_size > 0); in lzma2_header_uncompressed()
114 assert(coder->uncompressed_size <= LZMA2_CHUNK_MAX); in lzma2_header_uncompressed()
118 if (coder->need_dictionary_reset) in lzma2_header_uncompressed()
119 coder->buf[0] = 1; in lzma2_header_uncompressed()
121 coder->buf[0] = 2; in lzma2_header_uncompressed()
123 coder->need_dictionary_reset = false; in lzma2_header_uncompressed()
126 coder->buf[1] = (coder->uncompressed_size - 1) >> 8; in lzma2_header_uncompressed()
127 coder->buf[2] = (coder->uncompressed_size - 1) & 0xFF; in lzma2_header_uncompressed()
130 coder->buf_pos = 0; in lzma2_header_uncompressed()
140 lzma_lzma2_coder *restrict coder = coder_ptr; in lzma2_encode() local
143 switch (coder->sequence) { in lzma2_encode()
156 if (coder->need_state_reset) in lzma2_encode()
158 coder->lzma, &coder->opt_cur)); in lzma2_encode()
160 coder->uncompressed_size = 0; in lzma2_encode()
161 coder->compressed_size = 0; in lzma2_encode()
162 coder->sequence = SEQ_LZMA_ENCODE; in lzma2_encode()
170 - coder->uncompressed_size; in lzma2_encode()
190 const lzma_ret ret = lzma_lzma_encode(coder->lzma, mf, in lzma2_encode()
191 coder->buf + LZMA2_HEADER_MAX, in lzma2_encode()
192 &coder->compressed_size, in lzma2_encode()
195 coder->uncompressed_size += mf->read_pos - mf->read_ahead in lzma2_encode()
198 assert(coder->compressed_size <= LZMA2_CHUNK_MAX); in lzma2_encode()
199 assert(coder->uncompressed_size <= LZMA2_UNCOMPRESSED_MAX); in lzma2_encode()
207 if (coder->compressed_size >= coder->uncompressed_size) { in lzma2_encode()
208 coder->uncompressed_size += mf->read_ahead; in lzma2_encode()
209 assert(coder->uncompressed_size in lzma2_encode()
212 lzma2_header_uncompressed(coder); in lzma2_encode()
213 coder->need_state_reset = true; in lzma2_encode()
214 coder->sequence = SEQ_UNCOMPRESSED_HEADER; in lzma2_encode()
220 lzma2_header_lzma(coder); in lzma2_encode()
222 coder->sequence = SEQ_LZMA_COPY; in lzma2_encode()
230 lzma_bufcpy(coder->buf, &coder->buf_pos, in lzma2_encode()
231 coder->compressed_size, in lzma2_encode()
233 if (coder->buf_pos != coder->compressed_size) in lzma2_encode()
236 coder->sequence = SEQ_INIT; in lzma2_encode()
241 lzma_bufcpy(coder->buf, &coder->buf_pos, in lzma2_encode()
244 if (coder->buf_pos != LZMA2_HEADER_UNCOMPRESSED) in lzma2_encode()
247 coder->sequence = SEQ_UNCOMPRESSED_COPY; in lzma2_encode()
254 mf_read(mf, out, out_pos, out_size, &coder->uncompressed_size); in lzma2_encode()
255 if (coder->uncompressed_size != 0) in lzma2_encode()
258 coder->sequence = SEQ_INIT; in lzma2_encode()
269 lzma_lzma2_coder *coder = coder_ptr; in lzma2_encoder_end() local
270 lzma_free(coder->lzma, allocator); in lzma2_encoder_end()
271 lzma_free(coder, allocator); in lzma2_encoder_end()
279 lzma_lzma2_coder *coder = coder_ptr; in lzma2_encoder_options_update() local
284 if (filter->options == NULL || coder->sequence != SEQ_INIT) in lzma2_encoder_options_update()
290 if (coder->opt_cur.lc != opt->lc || coder->opt_cur.lp != opt->lp in lzma2_encoder_options_update()
291 || coder->opt_cur.pb != opt->pb) { in lzma2_encoder_options_update()
300 coder->opt_cur.lc = opt->lc; in lzma2_encoder_options_update()
301 coder->opt_cur.lp = opt->lp; in lzma2_encoder_options_update()
302 coder->opt_cur.pb = opt->pb; in lzma2_encoder_options_update()
303 coder->need_properties = true; in lzma2_encoder_options_update()
304 coder->need_state_reset = true; in lzma2_encoder_options_update()
318 lzma_lzma2_coder *coder = lz->coder; in lzma2_encoder_init() local
319 if (coder == NULL) { in lzma2_encoder_init()
320 coder = lzma_alloc(sizeof(lzma_lzma2_coder), allocator); in lzma2_encoder_init()
321 if (coder == NULL) in lzma2_encoder_init()
324 lz->coder = coder; in lzma2_encoder_init()
329 coder->lzma = NULL; in lzma2_encoder_init()
332 coder->opt_cur = *(const lzma_options_lzma *)(options); in lzma2_encoder_init()
334 coder->sequence = SEQ_INIT; in lzma2_encoder_init()
335 coder->need_properties = true; in lzma2_encoder_init()
336 coder->need_state_reset = false; in lzma2_encoder_init()
337 coder->need_dictionary_reset in lzma2_encoder_init()
338 = coder->opt_cur.preset_dict == NULL in lzma2_encoder_init()
339 || coder->opt_cur.preset_dict_size == 0; in lzma2_encoder_init()
342 return_if_error(lzma_lzma_encoder_create(&coder->lzma, allocator, in lzma2_encoder_init()
343 &coder->opt_cur, lz_options)); in lzma2_encoder_init()