diff options
Diffstat (limited to 'encoder_base.h')
-rw-r--r-- | encoder_base.h | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/encoder_base.h b/encoder_base.h index c4cfcca..ddba7e6 100644 --- a/encoder_base.h +++ b/encoder_base.h @@ -1,5 +1,5 @@ /* Lzlib - Compression library for the lzip format - Copyright (C) 2009-2017 Antonio Diaz Diaz. + Copyright (C) 2009-2018 Antonio Diaz Diaz. This library is free software. Redistribution and use in source and binary forms, with or without modification, are permitted provided @@ -238,16 +238,16 @@ struct Matchfinder_base int num_prev_positions23; int num_prev_positions; /* size of prev_positions */ int pos_array_size; + int saved_dictionary_size; /* dictionary_size restored by Mb_reset */ bool at_stream_end; /* stream_pos shows real end of file */ bool flushing; }; static bool Mb_normalize_pos( struct Matchfinder_base * const mb ); -static bool Mb_init( struct Matchfinder_base * const mb, - const int before, const int dict_size, - const int after_size, const int dict_factor, - const int num_prev_positions23, +static bool Mb_init( struct Matchfinder_base * const mb, const int before_size, + const int dict_size, const int after_size, + const int dict_factor, const int num_prev_positions23, const int pos_array_factor ); static inline void Mb_free( struct Matchfinder_base * const mb ) @@ -339,7 +339,8 @@ static inline void Re_shift_low( struct Range_encoder * const renc ) renc->low = ( renc->low & 0x00FFFFFFU ) << 8; } -static inline void Re_reset( struct Range_encoder * const renc ) +static inline void Re_reset( struct Range_encoder * const renc, + const unsigned dictionary_size ) { int i; Cb_reset( &renc->cb ); @@ -348,6 +349,7 @@ static inline void Re_reset( struct Range_encoder * const renc ) renc->range = 0xFFFFFFFFU; renc->ff_count = 0; renc->cache = 0; + Fh_set_dictionary_size( renc->header, dictionary_size ); for( i = 0; i < Fh_size; ++i ) Cb_put_byte( &renc->cb, renc->header[i] ); } @@ -359,8 +361,7 @@ static inline bool Re_init( struct Range_encoder * const renc, if( !Cb_init( &renc->cb, 65536 + min_free_bytes ) ) return false; renc->min_free_bytes = min_free_bytes; Fh_set_magic( renc->header ); - Fh_set_dictionary_size( renc->header, dictionary_size ); - Re_reset( renc ); + Re_reset( renc, dictionary_size ); return true; } @@ -544,14 +545,14 @@ static void LZeb_reset( struct LZ_encoder_base * const eb, const unsigned long long member_size ); static inline bool LZeb_init( struct LZ_encoder_base * const eb, - const int before, const int dict_size, + const int before_size, const int dict_size, const int after_size, const int dict_factor, const int num_prev_positions23, const int pos_array_factor, const unsigned min_free_bytes, const unsigned long long member_size ) { - if( !Mb_init( &eb->mb, before, dict_size, after_size, dict_factor, + if( !Mb_init( &eb->mb, before_size, dict_size, after_size, dict_factor, num_prev_positions23, pos_array_factor ) ) return false; if( !Re_init( &eb->renc, eb->mb.dictionary_size, min_free_bytes ) ) return false; |