1
0
Fork 0

Merging upstream version 1.4.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-20 20:13:56 +01:00
parent 8563d072ca
commit 270d4df10d
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
18 changed files with 224 additions and 197 deletions

View file

@ -233,22 +233,22 @@ static 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 );
}
}
@ -364,8 +364,8 @@ static bool LZe_init( struct LZ_encoder * const encoder,
encoder->matchfinder = mf;
if( !Re_init( &encoder->range_encoder ) ) 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 );
@ -472,7 +472,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 );
}
@ -653,7 +653,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 */
@ -670,7 +670,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;
@ -832,7 +832,7 @@ static 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 );
}
}