Lines Matching defs:coder

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