Lines Matching defs:coder

62 block_encoder_init(lzma_stream_coder *coder, const lzma_allocator *allocator)
69 coder->block_options.compressed_size = LZMA_VLI_UNKNOWN;
70 coder->block_options.uncompressed_size = LZMA_VLI_UNKNOWN;
72 return_if_error(lzma_block_header_size(&coder->block_options));
75 return lzma_block_encoder_init(&coder->block_encoder, allocator,
76 &coder->block_options);
86 lzma_stream_coder *coder = coder_ptr;
90 switch (coder->sequence) {
94 lzma_bufcpy(coder->buffer, &coder->buffer_pos,
95 coder->buffer_size, out, out_pos, out_size);
96 if (coder->buffer_pos < coder->buffer_size)
99 if (coder->sequence == SEQ_STREAM_FOOTER)
102 coder->buffer_pos = 0;
103 ++coder->sequence;
123 &coder->index_encoder, allocator,
124 coder->index));
125 coder->sequence = SEQ_INDEX_ENCODE;
132 if (!coder->block_encoder_is_initialized)
133 return_if_error(block_encoder_init(coder, allocator));
137 coder->block_encoder_is_initialized = false;
141 if (lzma_block_header_encode(&coder->block_options,
142 coder->buffer) != LZMA_OK)
145 coder->buffer_size = coder->block_options.header_size;
146 coder->sequence = SEQ_BLOCK_HEADER;
159 const lzma_ret ret = coder->block_encoder.code(
160 coder->block_encoder.coder, allocator,
168 &coder->block_options);
170 return_if_error(lzma_index_append(coder->index, allocator,
172 coder->block_options.uncompressed_size));
174 coder->sequence = SEQ_BLOCK_INIT;
181 const lzma_ret ret = coder->index_encoder.code(
182 coder->index_encoder.coder, allocator,
188 // Encode the Stream Footer into coder->buffer.
191 .backward_size = lzma_index_size(coder->index),
192 .check = coder->block_options.check,
195 if (lzma_stream_footer_encode(&stream_flags, coder->buffer)
199 coder->buffer_size = LZMA_STREAM_HEADER_SIZE;
200 coder->sequence = SEQ_STREAM_FOOTER;
216 lzma_stream_coder *coder = coder_ptr;
218 lzma_next_end(&coder->block_encoder, allocator);
219 lzma_next_end(&coder->index_encoder, allocator);
220 lzma_index_end(coder->index, allocator);
222 for (size_t i = 0; coder->filters[i].id != LZMA_VLI_UNKNOWN; ++i)
223 lzma_free(coder->filters[i].options, allocator);
225 lzma_free(coder, allocator);
235 lzma_stream_coder *coder = coder_ptr;
237 if (coder->sequence <= SEQ_BLOCK_INIT) {
242 coder->block_encoder_is_initialized = false;
243 coder->block_options.filters = (lzma_filter *)(filters);
244 const lzma_ret ret = block_encoder_init(coder, allocator);
245 coder->block_options.filters = coder->filters;
249 coder->block_encoder_is_initialized = true;
251 } else if (coder->sequence <= SEQ_BLOCK_ENCODE) {
254 return_if_error(coder->block_encoder.update(
255 coder->block_encoder.coder, allocator,
264 for (size_t i = 0; coder->filters[i].id != LZMA_VLI_UNKNOWN; ++i)
265 lzma_free(coder->filters[i].options, allocator);
267 return lzma_filters_copy(filters, coder->filters, allocator);
280 lzma_stream_coder *coder = next->coder;
282 if (coder == NULL) {
283 coder = lzma_alloc(sizeof(lzma_stream_coder), allocator);
284 if (coder == NULL)
287 next->coder = coder;
292 coder->filters[0].id = LZMA_VLI_UNKNOWN;
293 coder->block_encoder = LZMA_NEXT_CODER_INIT;
294 coder->index_encoder = LZMA_NEXT_CODER_INIT;
295 coder->index = NULL;
299 coder->sequence = SEQ_STREAM_HEADER;
300 coder->block_options.version = 0;
301 coder->block_options.check = check;
304 lzma_index_end(coder->index, allocator);
305 coder->index = lzma_index_init(allocator);
306 if (coder->index == NULL)
315 &stream_flags, coder->buffer));
317 coder->buffer_pos = 0;
318 coder->buffer_size = LZMA_STREAM_HEADER_SIZE;
323 return stream_encoder_update(coder, allocator, filters, NULL);