diff --git a/lib_enc/igf_enc.c b/lib_enc/igf_enc.c index 6a8f3f3f95119a56fbe37fb1753ffdb244600ad1..1440ecb4bef1ec26c199eb9156529f4c6986a7aa 100644 --- a/lib_enc/igf_enc.c +++ b/lib_enc/igf_enc.c @@ -1151,7 +1151,16 @@ static void IGF_CalculateEnvelope_ivas_fx( hPrivateData->sfb_tb_e[sfb] = BASOP_Util_Add_MantExp( tmp_tb, tmp_tb_e, x1, x1_e, &hPrivateData->SFM_tb_fx[sfb] ); // hPrivateData->sfb_sb_e[sfb] hPrivateData->SFM_tb_fx[sfb] = extract_l( L_min( L_shl( 22118 /*2.7f Q13*/, sub( 2, hPrivateData->sfb_tb_e[sfb] ) ), hPrivateData->SFM_tb_fx[sfb] ) ); hPrivateData->sfb_sb_e[sfb] = BASOP_Util_Add_MantExp( tmp_sb, tmp_sb_e, x2, x2_e, &hPrivateData->SFM_sb_fx[sfb] ); // hPrivateData->sfb_tb_e[sfb] - hPrivateData->SFM_sb_fx[sfb] = extract_l( L_min( L_shl( 22118 /*2.7f Q13*/, sub( 2, hPrivateData->sfb_sb_e[sfb] ) ), hPrivateData->SFM_sb_fx[sfb] ) ); + IF( LT_16( hPrivateData->sfb_sb_e[sfb], 2 ) ) + { + hPrivateData->SFM_sb_fx[sfb] = extract_l( L_min( 22118 /*2.7f Q13*/, L_shr( hPrivateData->SFM_sb_fx[sfb], sub( 2, hPrivateData->sfb_sb_e[sfb] ) ) ) ); + hPrivateData->sfb_sb_e[sfb] = 2; + move16(); + } + ELSE + { + hPrivateData->SFM_sb_fx[sfb] = extract_l( L_min( L_shl( 22118 /*2.7f Q13*/, sub( 2, hPrivateData->sfb_sb_e[sfb] ) ), hPrivateData->SFM_sb_fx[sfb] ) ); + } move16(); move16(); move16(); diff --git a/lib_enc/ivas_core_enc.c b/lib_enc/ivas_core_enc.c index f75c8db80f5ba2ddc9986343c0d3428ea6b006a5..c3b4beaaedd61f6b043dc00f6686c40b9bb726f5 100644 --- a/lib_enc/ivas_core_enc.c +++ b/lib_enc/ivas_core_enc.c @@ -687,7 +687,7 @@ ivas_error ivas_core_enc( { FOR( i = 0; i < L_FRAME32k; i++ ) { - st->hTcxEnc->old_out_fx[i] = (Word16) st->hTcxEnc->old_out[i] * ( 1 << 0 ); + st->hTcxEnc->old_out_fx[i] = float_to_fix16_thrld( st->hTcxEnc->old_out[i], 0 ); } } diff --git a/lib_enc/tcx_utils_enc_fx.c b/lib_enc/tcx_utils_enc_fx.c index 1ff3633601e678bc6cdebdc6c790c056b76f5e3c..e94b19229c8c578e66da2aee1719eb36cd8600e1 100644 --- a/lib_enc/tcx_utils_enc_fx.c +++ b/lib_enc/tcx_utils_enc_fx.c @@ -2489,7 +2489,7 @@ void tcx_encoder_memory_update_ivas_fx( { /* Update weighted synthesis */ Residu3_fx( Ai + imult1616( sub( st->nb_subfr, 1 ), ( M + 1 ) ), synth + sub( L_frame_glob, 1 ), &tmp, 1, 0 ); - LPDmem->mem_w0 = sub( wsig[sub( L_frame_glob, 1 )], tmp ); + LPDmem->mem_w0 = sub_sat( wsig[sub( L_frame_glob, 1 )], tmp ); move16(); }