Home | History | Annotate | Line # | Download | only in lzma
      1 // SPDX-License-Identifier: 0BSD
      2 
      3 ///////////////////////////////////////////////////////////////////////////////
      4 //
      5 /// \file       lzma_encoder.h
      6 /// \brief      LZMA encoder API
      7 ///
      8 //  Authors:    Igor Pavlov
      9 //              Lasse Collin
     10 //
     11 ///////////////////////////////////////////////////////////////////////////////
     12 
     13 #ifndef LZMA_LZMA_ENCODER_H
     14 #define LZMA_LZMA_ENCODER_H
     15 
     16 #include "common.h"
     17 
     18 
     19 typedef struct lzma_lzma1_encoder_s lzma_lzma1_encoder;
     20 
     21 
     22 extern lzma_ret lzma_lzma_encoder_init(lzma_next_coder *next,
     23 		const lzma_allocator *allocator,
     24 		const lzma_filter_info *filters);
     25 
     26 
     27 extern uint64_t lzma_lzma_encoder_memusage(const void *options);
     28 
     29 extern lzma_ret lzma_lzma_props_encode(const void *options, uint8_t *out);
     30 
     31 
     32 /// Encodes lc/lp/pb into one byte. Returns false on success and true on error.
     33 extern bool lzma_lzma_lclppb_encode(
     34 		const lzma_options_lzma *options, uint8_t *byte);
     35 
     36 
     37 #ifdef LZMA_LZ_ENCODER_H
     38 
     39 /// Initializes raw LZMA encoder; this is used by LZMA2.
     40 extern lzma_ret lzma_lzma_encoder_create(
     41 		void **coder_ptr, const lzma_allocator *allocator,
     42 		lzma_vli id, const lzma_options_lzma *options,
     43 		lzma_lz_options *lz_options);
     44 
     45 
     46 /// Resets an already initialized LZMA encoder; this is used by LZMA2.
     47 extern lzma_ret lzma_lzma_encoder_reset(
     48 		lzma_lzma1_encoder *coder, const lzma_options_lzma *options);
     49 
     50 
     51 extern lzma_ret lzma_lzma_encode(lzma_lzma1_encoder *restrict coder,
     52 		lzma_mf *restrict mf, uint8_t *restrict out,
     53 		size_t *restrict out_pos, size_t out_size,
     54 		uint32_t read_limit);
     55 
     56 #endif
     57 
     58 #endif
     59