Merging upstream version 1.5~pre1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
5b1b5e65dd
commit
478f12027a
18 changed files with 253 additions and 214 deletions
28
encoder.c
28
encoder.c
|
@ -23,7 +23,7 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "clzip.h"
|
||||
#include "lzip.h"
|
||||
#include "encoder.h"
|
||||
|
||||
|
||||
|
@ -259,22 +259,22 @@ void Lee_encode( struct Len_encoder * const len_encoder,
|
|||
symbol -= min_match_len;
|
||||
if( symbol < len_low_symbols )
|
||||
{
|
||||
Re_encode_bit( renc, &len_encoder->choice1, 0 );
|
||||
Re_encode_tree( renc, len_encoder->bm_low[pos_state], symbol, len_low_bits );
|
||||
Re_encode_bit( renc, &len_encoder->lm.choice1, 0 );
|
||||
Re_encode_tree( renc, len_encoder->lm.bm_low[pos_state], symbol, len_low_bits );
|
||||
}
|
||||
else
|
||||
{
|
||||
Re_encode_bit( renc, &len_encoder->choice1, 1 );
|
||||
Re_encode_bit( renc, &len_encoder->lm.choice1, 1 );
|
||||
if( symbol < len_low_symbols + len_mid_symbols )
|
||||
{
|
||||
Re_encode_bit( renc, &len_encoder->choice2, 0 );
|
||||
Re_encode_tree( renc, len_encoder->bm_mid[pos_state],
|
||||
Re_encode_bit( renc, &len_encoder->lm.choice2, 0 );
|
||||
Re_encode_tree( renc, len_encoder->lm.bm_mid[pos_state],
|
||||
symbol - len_low_symbols, len_mid_bits );
|
||||
}
|
||||
else
|
||||
{
|
||||
Re_encode_bit( renc, &len_encoder->choice2, 1 );
|
||||
Re_encode_tree( renc, len_encoder->bm_high,
|
||||
Re_encode_bit( renc, &len_encoder->lm.choice2, 1 );
|
||||
Re_encode_tree( renc, len_encoder->lm.bm_high,
|
||||
symbol - len_low_symbols - len_mid_symbols, len_high_bits );
|
||||
}
|
||||
}
|
||||
|
@ -369,8 +369,8 @@ bool LZe_init( struct LZ_encoder * const encoder,
|
|||
|
||||
encoder->matchfinder = mf;
|
||||
if( !Re_init( &encoder->range_encoder, outfd ) ) return false;
|
||||
Lee_init( &encoder->len_encoder, encoder->matchfinder->match_len_limit );
|
||||
Lee_init( &encoder->rep_match_len_encoder, encoder->matchfinder->match_len_limit );
|
||||
Lee_init( &encoder->match_len_encoder, encoder->matchfinder->match_len_limit );
|
||||
Lee_init( &encoder->rep_len_encoder, encoder->matchfinder->match_len_limit );
|
||||
encoder->num_dis_slots =
|
||||
2 * real_bits( encoder->matchfinder->dictionary_size - 1 );
|
||||
|
||||
|
@ -473,7 +473,7 @@ static int LZe_sequence_optimizer( struct LZ_encoder * const encoder,
|
|||
|
||||
for( len = min_match_len; len <= replens[rep]; ++len )
|
||||
Tr_update( &encoder->trials[len], price +
|
||||
Lee_price( &encoder->rep_match_len_encoder, len, pos_state ),
|
||||
Lee_price( &encoder->rep_len_encoder, len, pos_state ),
|
||||
rep, 0 );
|
||||
}
|
||||
|
||||
|
@ -654,7 +654,7 @@ static int LZe_sequence_optimizer( struct LZ_encoder * const encoder,
|
|||
LZe_price_rep( encoder, rep, cur_state, pos_state );
|
||||
for( i = min_match_len; i <= len; ++i )
|
||||
Tr_update( &encoder->trials[cur+i], price +
|
||||
Lee_price( &encoder->rep_match_len_encoder, i, pos_state ),
|
||||
Lee_price( &encoder->rep_len_encoder, i, pos_state ),
|
||||
rep, cur );
|
||||
|
||||
if( rep == 0 ) start_len = len + 1; /* discard shorter matches */
|
||||
|
@ -671,7 +671,7 @@ static int LZe_sequence_optimizer( struct LZ_encoder * const encoder,
|
|||
|
||||
pos_state2 = ( pos_state + len ) & pos_state_mask;
|
||||
state2 = St_set_rep( cur_state );
|
||||
price += Lee_price( &encoder->rep_match_len_encoder, len, pos_state ) +
|
||||
price += Lee_price( &encoder->rep_len_encoder, len, pos_state ) +
|
||||
price0( encoder->bm_match[state2][pos_state2] ) +
|
||||
LZe_price_matched( encoder, data[len-1], data[len], data[len-dis] );
|
||||
pos_state2 = ( pos_state2 + 1 ) & pos_state_mask;
|
||||
|
@ -829,7 +829,7 @@ bool LZe_encode_member( struct LZ_encoder * const encoder,
|
|||
if( len == 1 ) state = St_set_short_rep( state );
|
||||
else
|
||||
{
|
||||
Lee_encode( &encoder->rep_match_len_encoder, &encoder->range_encoder, len, pos_state );
|
||||
Lee_encode( &encoder->rep_len_encoder, &encoder->range_encoder, len, pos_state );
|
||||
state = St_set_rep( state );
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue