Lines Matching refs:coder
54 lzma2_header_lzma(lzma_lzma2_coder *coder) in lzma2_header_lzma() argument
56 assert(coder->uncompressed_size > 0); in lzma2_header_lzma()
57 assert(coder->uncompressed_size <= LZMA2_UNCOMPRESSED_MAX); in lzma2_header_lzma()
58 assert(coder->compressed_size > 0); in lzma2_header_lzma()
59 assert(coder->compressed_size <= LZMA2_CHUNK_MAX); in lzma2_header_lzma()
63 if (coder->need_properties) { in lzma2_header_lzma()
66 if (coder->need_dictionary_reset) in lzma2_header_lzma()
67 coder->buf[pos] = 0x80 + (3 << 5); in lzma2_header_lzma()
69 coder->buf[pos] = 0x80 + (2 << 5); in lzma2_header_lzma()
73 if (coder->need_state_reset) in lzma2_header_lzma()
74 coder->buf[pos] = 0x80 + (1 << 5); in lzma2_header_lzma()
76 coder->buf[pos] = 0x80; in lzma2_header_lzma()
80 coder->buf_pos = pos; in lzma2_header_lzma()
83 size_t size = coder->uncompressed_size - 1; in lzma2_header_lzma()
84 coder->buf[pos++] += size >> 16; in lzma2_header_lzma()
85 coder->buf[pos++] = (size >> 8) & 0xFF; in lzma2_header_lzma()
86 coder->buf[pos++] = size & 0xFF; in lzma2_header_lzma()
89 size = coder->compressed_size - 1; in lzma2_header_lzma()
90 coder->buf[pos++] = size >> 8; in lzma2_header_lzma()
91 coder->buf[pos++] = size & 0xFF; in lzma2_header_lzma()
94 if (coder->need_properties) in lzma2_header_lzma()
95 lzma_lzma_lclppb_encode(&coder->opt_cur, coder->buf + pos); in lzma2_header_lzma()
97 coder->need_properties = false; in lzma2_header_lzma()
98 coder->need_state_reset = false; in lzma2_header_lzma()
99 coder->need_dictionary_reset = false; in lzma2_header_lzma()
103 coder->compressed_size += LZMA2_HEADER_MAX; in lzma2_header_lzma()
110 lzma2_header_uncompressed(lzma_lzma2_coder *coder) in lzma2_header_uncompressed() argument
112 assert(coder->uncompressed_size > 0); in lzma2_header_uncompressed()
113 assert(coder->uncompressed_size <= LZMA2_CHUNK_MAX); in lzma2_header_uncompressed()
117 if (coder->need_dictionary_reset) in lzma2_header_uncompressed()
118 coder->buf[0] = 1; in lzma2_header_uncompressed()
120 coder->buf[0] = 2; in lzma2_header_uncompressed()
122 coder->need_dictionary_reset = false; in lzma2_header_uncompressed()
125 coder->buf[1] = (coder->uncompressed_size - 1) >> 8; in lzma2_header_uncompressed()
126 coder->buf[2] = (coder->uncompressed_size - 1) & 0xFF; in lzma2_header_uncompressed()
129 coder->buf_pos = 0; in lzma2_header_uncompressed()
139 lzma_lzma2_coder *restrict coder = coder_ptr; in lzma2_encode() local
142 switch (coder->sequence) { in lzma2_encode()
155 if (coder->need_state_reset) in lzma2_encode()
157 coder->lzma, &coder->opt_cur)); in lzma2_encode()
159 coder->uncompressed_size = 0; in lzma2_encode()
160 coder->compressed_size = 0; in lzma2_encode()
161 coder->sequence = SEQ_LZMA_ENCODE; in lzma2_encode()
168 - coder->uncompressed_size; in lzma2_encode()
188 const lzma_ret ret = lzma_lzma_encode(coder->lzma, mf, in lzma2_encode()
189 coder->buf + LZMA2_HEADER_MAX, in lzma2_encode()
190 &coder->compressed_size, in lzma2_encode()
193 coder->uncompressed_size += mf->read_pos - mf->read_ahead in lzma2_encode()
196 assert(coder->compressed_size <= LZMA2_CHUNK_MAX); in lzma2_encode()
197 assert(coder->uncompressed_size <= LZMA2_UNCOMPRESSED_MAX); in lzma2_encode()
205 if (coder->compressed_size >= coder->uncompressed_size) { in lzma2_encode()
206 coder->uncompressed_size += mf->read_ahead; in lzma2_encode()
207 assert(coder->uncompressed_size in lzma2_encode()
210 lzma2_header_uncompressed(coder); in lzma2_encode()
211 coder->need_state_reset = true; in lzma2_encode()
212 coder->sequence = SEQ_UNCOMPRESSED_HEADER; in lzma2_encode()
218 lzma2_header_lzma(coder); in lzma2_encode()
220 coder->sequence = SEQ_LZMA_COPY; in lzma2_encode()
227 lzma_bufcpy(coder->buf, &coder->buf_pos, in lzma2_encode()
228 coder->compressed_size, in lzma2_encode()
230 if (coder->buf_pos != coder->compressed_size) in lzma2_encode()
233 coder->sequence = SEQ_INIT; in lzma2_encode()
238 lzma_bufcpy(coder->buf, &coder->buf_pos, in lzma2_encode()
241 if (coder->buf_pos != LZMA2_HEADER_UNCOMPRESSED) in lzma2_encode()
244 coder->sequence = SEQ_UNCOMPRESSED_COPY; in lzma2_encode()
250 mf_read(mf, out, out_pos, out_size, &coder->uncompressed_size); in lzma2_encode()
251 if (coder->uncompressed_size != 0) in lzma2_encode()
254 coder->sequence = SEQ_INIT; in lzma2_encode()
265 lzma_lzma2_coder *coder = coder_ptr; in lzma2_encoder_end() local
266 lzma_free(coder->lzma, allocator); in lzma2_encoder_end()
267 lzma_free(coder, allocator); in lzma2_encoder_end()
275 lzma_lzma2_coder *coder = coder_ptr; in lzma2_encoder_options_update() local
280 if (filter->options == NULL || coder->sequence != SEQ_INIT) in lzma2_encoder_options_update()
286 if (coder->opt_cur.lc != opt->lc || coder->opt_cur.lp != opt->lp in lzma2_encoder_options_update()
287 || coder->opt_cur.pb != opt->pb) { in lzma2_encoder_options_update()
296 coder->opt_cur.lc = opt->lc; in lzma2_encoder_options_update()
297 coder->opt_cur.lp = opt->lp; in lzma2_encoder_options_update()
298 coder->opt_cur.pb = opt->pb; in lzma2_encoder_options_update()
299 coder->need_properties = true; in lzma2_encoder_options_update()
300 coder->need_state_reset = true; in lzma2_encoder_options_update()
315 lzma_lzma2_coder *coder = lz->coder; in lzma2_encoder_init() local
316 if (coder == NULL) { in lzma2_encoder_init()
317 coder = lzma_alloc(sizeof(lzma_lzma2_coder), allocator); in lzma2_encoder_init()
318 if (coder == NULL) in lzma2_encoder_init()
321 lz->coder = coder; in lzma2_encoder_init()
326 coder->lzma = NULL; in lzma2_encoder_init()
329 coder->opt_cur = *(const lzma_options_lzma *)(options); in lzma2_encoder_init()
331 coder->sequence = SEQ_INIT; in lzma2_encoder_init()
332 coder->need_properties = true; in lzma2_encoder_init()
333 coder->need_state_reset = false; in lzma2_encoder_init()
334 coder->need_dictionary_reset in lzma2_encoder_init()
335 = coder->opt_cur.preset_dict == NULL in lzma2_encoder_init()
336 || coder->opt_cur.preset_dict_size == 0; in lzma2_encoder_init()
339 return_if_error(lzma_lzma_encoder_create(&coder->lzma, allocator, in lzma2_encoder_init()
340 LZMA_FILTER_LZMA2, &coder->opt_cur, lz_options)); in lzma2_encoder_init()