Home | History | Annotate | Line # | Download | only in common
      1 // SPDX-License-Identifier: 0BSD
      2 
      3 ///////////////////////////////////////////////////////////////////////////////
      4 //
      5 /// \file       filter_common.h
      6 /// \brief      Filter-specific stuff common for both encoder and decoder
      7 //
      8 //  Author:     Lasse Collin
      9 //
     10 ///////////////////////////////////////////////////////////////////////////////
     11 
     12 #ifndef LZMA_FILTER_COMMON_H
     13 #define LZMA_FILTER_COMMON_H
     14 
     15 #include "common.h"
     16 
     17 
     18 /// Both lzma_filter_encoder and lzma_filter_decoder begin with these members.
     19 typedef struct {
     20 	/// Filter ID
     21 	lzma_vli id;
     22 
     23 	/// Initializes the filter encoder and calls lzma_next_filter_init()
     24 	/// for filters + 1.
     25 	lzma_init_function init;
     26 
     27 	/// Calculates memory usage of the encoder. If the options are
     28 	/// invalid, UINT64_MAX is returned.
     29 	uint64_t (*memusage)(const void *options);
     30 
     31 } lzma_filter_coder;
     32 
     33 
     34 typedef const lzma_filter_coder *(*lzma_filter_find)(lzma_vli id);
     35 
     36 
     37 extern lzma_ret lzma_validate_chain(const lzma_filter *filters, size_t *count);
     38 
     39 
     40 extern lzma_ret lzma_raw_coder_init(
     41 		lzma_next_coder *next, const lzma_allocator *allocator,
     42 		const lzma_filter *filters,
     43 		lzma_filter_find coder_find, bool is_encoder);
     44 
     45 
     46 extern uint64_t lzma_raw_coder_memusage(lzma_filter_find coder_find,
     47 		const lzma_filter *filters);
     48 
     49 
     50 #endif
     51