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