Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ #define MSAN_FIX #define FIX_818_COMPLEXITY_IMPROV /* Fix for issue 818 */ #define FIX_805_VERIFICATION /* Fix for issue 805 */ #define FIX_827_HIGH_MLD /* Fix for issue 827 */ #endif #define ISM_DISABLE #define FIX_TMP_714 Loading lib_dec/ivas_dirac_output_synthesis_cov.c +21 −0 Original line number Diff line number Diff line Loading @@ -1722,7 +1722,11 @@ Word16 computeMixingMatrices_fx( matrix_product_mant_exp_fx( Q_fx, Q_e, lengthCy, lengthCx, 0, Cx_fx, Cx_fx_e, lengthCx, lengthCx, 0, Q_Cx_fx, &Q_Cx_e ); Word16 guard_bits; #ifdef FIX_827_HIGH_MLD guard_bits = find_guarded_bits_fx( lengthCx ); #else guard_bits = find_guarded_bits_fx( lengthCx + 1 ); #endif FOR( i = 0; i < lengthCy * lengthCx; ++i ) { Loading Loading @@ -1760,11 +1764,18 @@ Word16 computeMixingMatrices_fx( move16(); } #ifndef FIX_827_HIGH_MLD L_tmp = Mpy_32_32( limit_fx, reg_ghat_fx ); limit_fx = L_add( L_tmp, EPSILON_FX ); limit_e = add( limit_e, reg_ghat_e ); move16(); #endif } #ifdef FIX_827_HIGH_MLD L_tmp = Mpy_32_32( limit_fx, reg_ghat_fx ); limit_fx = L_add( L_tmp, EPSILON_FX ); limit_e = add( limit_e, reg_ghat_e ); #endif FOR( i = 0; i < lengthCy; ++i ) Loading Loading @@ -2532,8 +2543,13 @@ Word16 computeMixingMatricesResidual_fx( FOR( j = 0; j < num_outputs; j++ ) { #ifdef FIX_827_HIGH_MLD L_tmp = Mpy_32_32( mat_mult_buffer1_fx[add( j, imult1616( i, extract_l( num_outputs ) ) )], fac_fx ); mixing_matrix_fx[add( j, imult1616( i, extract_l( num_outputs ) ) )] = L_tmp; #else L_tmp = Mpy_32_32( mat_mult_buffer1_fx[add( j, imult1616( j, extract_l( num_outputs ) ) )], fac_fx ); mixing_matrix_fx[add( j, imult1616( j, extract_l( num_outputs ) ) )] = L_tmp; #endif move32(); mixing_matrix_e = add( mat_mult_buffer1_e, Kx_reg_inv_fx_e ); move16(); Loading @@ -2548,7 +2564,12 @@ Word16 computeMixingMatricesResidual_fx( matrix_diag_product_fx( mixing_matrix_fx, mixing_matrix_e, lengthCy, lengthCx, 0, Cx_fx, Cx_e, lengthCx, mat_mult_buffer1_fx, &mat_mult_buffer1_e ); #ifdef FIX_827_HIGH_MLD Word16 guard_bits; guard_bits = find_guarded_bits_fx( lengthCx ); #else Word16 guard_bits = find_guarded_bits_fx( lengthCx + 1 ); #endif FOR( i = 0; i < lengthCy * lengthCx; ++i ) { Loading lib_dec/ivas_stereo_switching_dec.c +2 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,8 @@ static ivas_error allocate_CoreCoder_TCX_fx( // st->hTcxDec->CngLevelBackgroundTrace_bfi = 0; //initializing to avoid garbage overflow; set16_fx( st->hTcxDec->syn_OverlFB, 0, L_FRAME48k / 2 ); set16_fx( st->hTcxDec->old_synth, 0, OLD_SYNTH_INTERNAL_DEC ); st->hTcxDec->q_old_synth = 0; move16(); set16_fx( st->hTcxDec->synth_history_fx, 0, L_PROT48k + L_FRAME48k ); } Loading lib_dec/ivas_svd_dec.c +8 −0 Original line number Diff line number Diff line Loading @@ -714,7 +714,11 @@ static Word16 BidagonalDiagonalisation_fx( } ELSE { #ifdef FIX_827_HIGH_MLD IF( GE_16( iteration, SVD_MAX_NUM_ITERATION ) ) #else IF( GT_16( iteration, SVD_MAX_NUM_ITERATION ) ) #endif { IF( LT_32( singularValues_fx[iCh], 0 ) ) { Loading Loading @@ -1416,7 +1420,11 @@ IF( LT_16( currChannel, nChannelsL ) ) /* i <= m */ } r = BASOP_Util_Add_Mant32Exp( Mpy_32_32( ( *g ), singularVectors[currChannel][idx] ), sing_exp[currChannel], -norm_x, norm_x_e, &r_e ); #ifdef FIX_827_HIGH_MLD singularVectors[currChannel][idx] = BASOP_Util_Add_Mant32Exp( singularVectors[currChannel][idx], sing_exp[currChannel], -( *g ), 0, &sing_exp[currChannel] ); #else singularVectors[currChannel][idx] = BASOP_Util_Add_Mant32Exp( singularVectors[currChannel][idx], sing_exp[idx], -( *g ), 0, &sing_exp[currChannel] ); #endif move32(); FOR( iCh = currChannel + 1; iCh < nChannelsC; iCh++ ) /* nChannelsC */ Loading lib_dec/updt_dec_fx.c +1 −1 Original line number Diff line number Diff line Loading @@ -1007,7 +1007,7 @@ void ivas_updt_dec_common_fx( IF( EQ_16( st_fx->core, HQ_CORE ) ) { st_fx->stab_fac_fx = extract_l( L_min( MAX_16, L_add( L_shr( STAB_FAC_EST1_FX, Q15 ), Madd_32_32( L_shr( Mpy_32_16_1( STAB_FAC_EST2_FX, st_fx->hHQ_core->mem_env_delta ), Q15 ), STAB_FAC_EST3_FX, st_fx->log_energy_diff_lt_fx ) ) ) ); st_fx->stab_fac_fx = extract_l( L_min( MAX_16, L_add( L_shr( STAB_FAC_EST1_FX, Q15 ), Madd_32_32( Mpy_32_16_1( STAB_FAC_EST2_FX, st_fx->hHQ_core->mem_env_delta ), STAB_FAC_EST3_FX, st_fx->log_energy_diff_lt_fx ) ) ) ); st_fx->stab_fac_fx = s_max( 0, st_fx->stab_fac_fx ); } st_fx->stab_fac_smooth_lt_fx = extract_h( L_add( L_mult( ENV_SMOOTH_FAC_FX, st_fx->stab_fac_fx ), Loading Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ #define MSAN_FIX #define FIX_818_COMPLEXITY_IMPROV /* Fix for issue 818 */ #define FIX_805_VERIFICATION /* Fix for issue 805 */ #define FIX_827_HIGH_MLD /* Fix for issue 827 */ #endif #define ISM_DISABLE #define FIX_TMP_714 Loading
lib_dec/ivas_dirac_output_synthesis_cov.c +21 −0 Original line number Diff line number Diff line Loading @@ -1722,7 +1722,11 @@ Word16 computeMixingMatrices_fx( matrix_product_mant_exp_fx( Q_fx, Q_e, lengthCy, lengthCx, 0, Cx_fx, Cx_fx_e, lengthCx, lengthCx, 0, Q_Cx_fx, &Q_Cx_e ); Word16 guard_bits; #ifdef FIX_827_HIGH_MLD guard_bits = find_guarded_bits_fx( lengthCx ); #else guard_bits = find_guarded_bits_fx( lengthCx + 1 ); #endif FOR( i = 0; i < lengthCy * lengthCx; ++i ) { Loading Loading @@ -1760,11 +1764,18 @@ Word16 computeMixingMatrices_fx( move16(); } #ifndef FIX_827_HIGH_MLD L_tmp = Mpy_32_32( limit_fx, reg_ghat_fx ); limit_fx = L_add( L_tmp, EPSILON_FX ); limit_e = add( limit_e, reg_ghat_e ); move16(); #endif } #ifdef FIX_827_HIGH_MLD L_tmp = Mpy_32_32( limit_fx, reg_ghat_fx ); limit_fx = L_add( L_tmp, EPSILON_FX ); limit_e = add( limit_e, reg_ghat_e ); #endif FOR( i = 0; i < lengthCy; ++i ) Loading Loading @@ -2532,8 +2543,13 @@ Word16 computeMixingMatricesResidual_fx( FOR( j = 0; j < num_outputs; j++ ) { #ifdef FIX_827_HIGH_MLD L_tmp = Mpy_32_32( mat_mult_buffer1_fx[add( j, imult1616( i, extract_l( num_outputs ) ) )], fac_fx ); mixing_matrix_fx[add( j, imult1616( i, extract_l( num_outputs ) ) )] = L_tmp; #else L_tmp = Mpy_32_32( mat_mult_buffer1_fx[add( j, imult1616( j, extract_l( num_outputs ) ) )], fac_fx ); mixing_matrix_fx[add( j, imult1616( j, extract_l( num_outputs ) ) )] = L_tmp; #endif move32(); mixing_matrix_e = add( mat_mult_buffer1_e, Kx_reg_inv_fx_e ); move16(); Loading @@ -2548,7 +2564,12 @@ Word16 computeMixingMatricesResidual_fx( matrix_diag_product_fx( mixing_matrix_fx, mixing_matrix_e, lengthCy, lengthCx, 0, Cx_fx, Cx_e, lengthCx, mat_mult_buffer1_fx, &mat_mult_buffer1_e ); #ifdef FIX_827_HIGH_MLD Word16 guard_bits; guard_bits = find_guarded_bits_fx( lengthCx ); #else Word16 guard_bits = find_guarded_bits_fx( lengthCx + 1 ); #endif FOR( i = 0; i < lengthCy * lengthCx; ++i ) { Loading
lib_dec/ivas_stereo_switching_dec.c +2 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,8 @@ static ivas_error allocate_CoreCoder_TCX_fx( // st->hTcxDec->CngLevelBackgroundTrace_bfi = 0; //initializing to avoid garbage overflow; set16_fx( st->hTcxDec->syn_OverlFB, 0, L_FRAME48k / 2 ); set16_fx( st->hTcxDec->old_synth, 0, OLD_SYNTH_INTERNAL_DEC ); st->hTcxDec->q_old_synth = 0; move16(); set16_fx( st->hTcxDec->synth_history_fx, 0, L_PROT48k + L_FRAME48k ); } Loading
lib_dec/ivas_svd_dec.c +8 −0 Original line number Diff line number Diff line Loading @@ -714,7 +714,11 @@ static Word16 BidagonalDiagonalisation_fx( } ELSE { #ifdef FIX_827_HIGH_MLD IF( GE_16( iteration, SVD_MAX_NUM_ITERATION ) ) #else IF( GT_16( iteration, SVD_MAX_NUM_ITERATION ) ) #endif { IF( LT_32( singularValues_fx[iCh], 0 ) ) { Loading Loading @@ -1416,7 +1420,11 @@ IF( LT_16( currChannel, nChannelsL ) ) /* i <= m */ } r = BASOP_Util_Add_Mant32Exp( Mpy_32_32( ( *g ), singularVectors[currChannel][idx] ), sing_exp[currChannel], -norm_x, norm_x_e, &r_e ); #ifdef FIX_827_HIGH_MLD singularVectors[currChannel][idx] = BASOP_Util_Add_Mant32Exp( singularVectors[currChannel][idx], sing_exp[currChannel], -( *g ), 0, &sing_exp[currChannel] ); #else singularVectors[currChannel][idx] = BASOP_Util_Add_Mant32Exp( singularVectors[currChannel][idx], sing_exp[idx], -( *g ), 0, &sing_exp[currChannel] ); #endif move32(); FOR( iCh = currChannel + 1; iCh < nChannelsC; iCh++ ) /* nChannelsC */ Loading
lib_dec/updt_dec_fx.c +1 −1 Original line number Diff line number Diff line Loading @@ -1007,7 +1007,7 @@ void ivas_updt_dec_common_fx( IF( EQ_16( st_fx->core, HQ_CORE ) ) { st_fx->stab_fac_fx = extract_l( L_min( MAX_16, L_add( L_shr( STAB_FAC_EST1_FX, Q15 ), Madd_32_32( L_shr( Mpy_32_16_1( STAB_FAC_EST2_FX, st_fx->hHQ_core->mem_env_delta ), Q15 ), STAB_FAC_EST3_FX, st_fx->log_energy_diff_lt_fx ) ) ) ); st_fx->stab_fac_fx = extract_l( L_min( MAX_16, L_add( L_shr( STAB_FAC_EST1_FX, Q15 ), Madd_32_32( Mpy_32_16_1( STAB_FAC_EST2_FX, st_fx->hHQ_core->mem_env_delta ), STAB_FAC_EST3_FX, st_fx->log_energy_diff_lt_fx ) ) ) ); st_fx->stab_fac_fx = s_max( 0, st_fx->stab_fac_fx ); } st_fx->stab_fac_smooth_lt_fx = extract_h( L_add( L_mult( ENV_SMOOTH_FAC_FX, st_fx->stab_fac_fx ), Loading