Loading lib_dec/ivas_mdct_core_dec_fx.c +0 −4 Original line number Diff line number Diff line Loading @@ -1305,10 +1305,6 @@ void ivas_mdct_core_reconstruct_fx( Copy( st->hTcxDec->old_synth, synth_buf_fx, st->hTcxDec->old_synth_len ); // Q = st->hTcxDec->q_old_synth Copy_Scale_sig( st->hTcxDec->old_synthFB_fx, synth_bufFB_fx, st->hTcxDec->old_synth_lenFB, sub( st->hTcxDec->q_old_synth, st->Q_syn ) ); // Q = st->hTcxDec->q_old_synth // Temporary workaround: con_tcx_ivas_fx() should be analyzed for potential issues. // Scale_sig( synth_bufFB_fx, st->hTcxDec->old_synth_lenFB, -2 ); // Scale_sig( synth_bufFB_fx, st->hTcxDec->old_synth_lenFB, +2 ); /////////////////////////////////////////////////////////////////////////////////// assert( EQ_16( st->bfi, 1 ) ); /* PLC: [TCX: TD PLC] */ IF( MCT_flag != 0 ) Loading lib_dec/ivas_out_setup_conversion_fx.c +14 −8 Original line number Diff line number Diff line Loading @@ -664,7 +664,7 @@ void ivas_ls_setup_conversion_process_mdct_fx( Word16 frameSize; #ifdef FIX_1962_FORMAT_CONV_SPECTRAL_DIFF Word64 targetEnergy64[MAX_SFB + 2], dmxEnergy64[MAX_SFB + 2]; Word16 dmxEnergy_exp_temp, scf1, scf2; Word16 scf1, scf2; #else Word32 targetEnergy[MAX_SFB + 2], dmxEnergy[MAX_SFB + 2]; Word16 dmxEnergy_exp[MAX_SFB + 2], dmxEnergy_exp_temp; Loading Loading @@ -863,7 +863,7 @@ void ivas_ls_setup_conversion_process_mdct_fx( } #ifdef FIX_1962_FORMAT_CONV_SPECTRAL_DIFF targetEnergy64[bandIdx] = W_add( targetEnergy64[bandIdx], W_shr( targetEne64, 1 ) ); if ( targetEnergy64[bandIdx] != 0 ) if ( NE_64( targetEnergy64[bandIdx], 0 ) ) { scf1 = s_min( scf1, W_norm( targetEnergy64[bandIdx] ) ); } Loading Loading @@ -916,7 +916,7 @@ void ivas_ls_setup_conversion_process_mdct_fx( } #ifdef FIX_1962_FORMAT_CONV_SPECTRAL_DIFF dmxEnergy64[bandIdx] = W_add( dmxEnergy64[bandIdx], W_shr( DMXEne64, 1 ) ); if ( dmxEnergy64[bandIdx] != 0 ) if ( NE_64(dmxEnergy64[bandIdx], 0) ) { scf2 = s_min( scf2, W_norm( dmxEnergy64[bandIdx] ) ); } Loading @@ -938,17 +938,23 @@ void ivas_ls_setup_conversion_process_mdct_fx( /* Step 3: Peform energy smoothing */ Word16 te_scale = getScaleFactor32( hLsSetUpConversion->targetEnergyPrev_fx[0], hLsSetUpConversion->sfbCnt ); scale_sig32( hLsSetUpConversion->targetEnergyPrev_fx[0], hLsSetUpConversion->sfbCnt, te_scale ); Word16 dmx_sacle = getScaleFactor32( hLsSetUpConversion->dmxEnergyPrev_fx[0], hLsSetUpConversion->sfbCnt ); scale_sig32( hLsSetUpConversion->dmxEnergyPrev_fx[0], hLsSetUpConversion->sfbCnt, dmx_sacle ); #ifdef FIX_1962_FORMAT_CONV_SPECTRAL_DIFF Word16 dmx_scale = getScaleFactor32( hLsSetUpConversion->dmxEnergyPrev_fx[0], hLsSetUpConversion->sfbCnt ); scale_sig32( hLsSetUpConversion->dmxEnergyPrev_fx[0], hLsSetUpConversion->sfbCnt, dmx_scale ); Word16 targetEnergy_e = sub( add( sub( 40, shl( q_output, 1 ) ), 1 ), scf1 ); Word16 te_max_e = s_max( targetEnergy_e, sub( hLsSetUpConversion->te_prev_exp[0], te_scale ) ); dmxEnergy_exp_temp = sub( add( sub( 40, shl( q_output, 1 ) ), 1 ), scf2 ); Word16 dmxEnergy_e = sub( add( sub( 40, shl( q_output, 1 ) ), 1 ), scf2 ); Word16 dmx_max_e = s_max( dmxEnergy_e, sub( hLsSetUpConversion->dmx_prev_exp[0], dmx_scale ) ); #else Word16 dmx_sacle = getScaleFactor32( hLsSetUpConversion->dmxEnergyPrev_fx[0], hLsSetUpConversion->sfbCnt ); scale_sig32( hLsSetUpConversion->dmxEnergyPrev_fx[0], hLsSetUpConversion->sfbCnt, dmx_sacle ); Word16 te_max_e = s_max( sub( 40, shl( q_output, 1 ) ), sub( hLsSetUpConversion->te_prev_exp[0], te_scale ) ); #endif Word16 dmx_max_e = s_max( dmxEnergy_exp_temp, sub( hLsSetUpConversion->dmx_prev_exp[0], dmx_sacle ) ); #endif FOR( bandIdx = 0; bandIdx < hLsSetUpConversion->sfbCnt; bandIdx++ ) { Loading @@ -962,7 +968,7 @@ void ivas_ls_setup_conversion_process_mdct_fx( move32(); dmxEnergy = W_extract_h( W_shl( dmxEnergy64[bandIdx], scf2 ) ); dmxEnergy = L_add( Mpy_32_32( LS_OUT_CONV_SMOOTHING_FACTOR_Q31, L_shr( dmxEnergy, sub( dmx_max_e, dmxEnergy_exp_temp ) ) ), Mpy_32_32( ( ONE_IN_Q31 - LS_OUT_CONV_SMOOTHING_FACTOR_Q31 ), L_shr( hLsSetUpConversion->dmxEnergyPrev_fx[0][bandIdx], sub( dmx_max_e, sub( hLsSetUpConversion->dmx_prev_exp[0], dmx_sacle ) ) ) ) ); dmxEnergy = L_add( Mpy_32_32( LS_OUT_CONV_SMOOTHING_FACTOR_Q31, L_shr( dmxEnergy, sub( dmx_max_e, dmxEnergy_e ) ) ), Mpy_32_32( ( ONE_IN_Q31 - LS_OUT_CONV_SMOOTHING_FACTOR_Q31 ), L_shr( hLsSetUpConversion->dmxEnergyPrev_fx[0][bandIdx], sub( dmx_max_e, sub( hLsSetUpConversion->dmx_prev_exp[0], dmx_scale ) ) ) ) ); move32(); hLsSetUpConversion->dmxEnergyPrev_fx[0][bandIdx] = dmxEnergy; move32(); Loading Loading
lib_dec/ivas_mdct_core_dec_fx.c +0 −4 Original line number Diff line number Diff line Loading @@ -1305,10 +1305,6 @@ void ivas_mdct_core_reconstruct_fx( Copy( st->hTcxDec->old_synth, synth_buf_fx, st->hTcxDec->old_synth_len ); // Q = st->hTcxDec->q_old_synth Copy_Scale_sig( st->hTcxDec->old_synthFB_fx, synth_bufFB_fx, st->hTcxDec->old_synth_lenFB, sub( st->hTcxDec->q_old_synth, st->Q_syn ) ); // Q = st->hTcxDec->q_old_synth // Temporary workaround: con_tcx_ivas_fx() should be analyzed for potential issues. // Scale_sig( synth_bufFB_fx, st->hTcxDec->old_synth_lenFB, -2 ); // Scale_sig( synth_bufFB_fx, st->hTcxDec->old_synth_lenFB, +2 ); /////////////////////////////////////////////////////////////////////////////////// assert( EQ_16( st->bfi, 1 ) ); /* PLC: [TCX: TD PLC] */ IF( MCT_flag != 0 ) Loading
lib_dec/ivas_out_setup_conversion_fx.c +14 −8 Original line number Diff line number Diff line Loading @@ -664,7 +664,7 @@ void ivas_ls_setup_conversion_process_mdct_fx( Word16 frameSize; #ifdef FIX_1962_FORMAT_CONV_SPECTRAL_DIFF Word64 targetEnergy64[MAX_SFB + 2], dmxEnergy64[MAX_SFB + 2]; Word16 dmxEnergy_exp_temp, scf1, scf2; Word16 scf1, scf2; #else Word32 targetEnergy[MAX_SFB + 2], dmxEnergy[MAX_SFB + 2]; Word16 dmxEnergy_exp[MAX_SFB + 2], dmxEnergy_exp_temp; Loading Loading @@ -863,7 +863,7 @@ void ivas_ls_setup_conversion_process_mdct_fx( } #ifdef FIX_1962_FORMAT_CONV_SPECTRAL_DIFF targetEnergy64[bandIdx] = W_add( targetEnergy64[bandIdx], W_shr( targetEne64, 1 ) ); if ( targetEnergy64[bandIdx] != 0 ) if ( NE_64( targetEnergy64[bandIdx], 0 ) ) { scf1 = s_min( scf1, W_norm( targetEnergy64[bandIdx] ) ); } Loading Loading @@ -916,7 +916,7 @@ void ivas_ls_setup_conversion_process_mdct_fx( } #ifdef FIX_1962_FORMAT_CONV_SPECTRAL_DIFF dmxEnergy64[bandIdx] = W_add( dmxEnergy64[bandIdx], W_shr( DMXEne64, 1 ) ); if ( dmxEnergy64[bandIdx] != 0 ) if ( NE_64(dmxEnergy64[bandIdx], 0) ) { scf2 = s_min( scf2, W_norm( dmxEnergy64[bandIdx] ) ); } Loading @@ -938,17 +938,23 @@ void ivas_ls_setup_conversion_process_mdct_fx( /* Step 3: Peform energy smoothing */ Word16 te_scale = getScaleFactor32( hLsSetUpConversion->targetEnergyPrev_fx[0], hLsSetUpConversion->sfbCnt ); scale_sig32( hLsSetUpConversion->targetEnergyPrev_fx[0], hLsSetUpConversion->sfbCnt, te_scale ); Word16 dmx_sacle = getScaleFactor32( hLsSetUpConversion->dmxEnergyPrev_fx[0], hLsSetUpConversion->sfbCnt ); scale_sig32( hLsSetUpConversion->dmxEnergyPrev_fx[0], hLsSetUpConversion->sfbCnt, dmx_sacle ); #ifdef FIX_1962_FORMAT_CONV_SPECTRAL_DIFF Word16 dmx_scale = getScaleFactor32( hLsSetUpConversion->dmxEnergyPrev_fx[0], hLsSetUpConversion->sfbCnt ); scale_sig32( hLsSetUpConversion->dmxEnergyPrev_fx[0], hLsSetUpConversion->sfbCnt, dmx_scale ); Word16 targetEnergy_e = sub( add( sub( 40, shl( q_output, 1 ) ), 1 ), scf1 ); Word16 te_max_e = s_max( targetEnergy_e, sub( hLsSetUpConversion->te_prev_exp[0], te_scale ) ); dmxEnergy_exp_temp = sub( add( sub( 40, shl( q_output, 1 ) ), 1 ), scf2 ); Word16 dmxEnergy_e = sub( add( sub( 40, shl( q_output, 1 ) ), 1 ), scf2 ); Word16 dmx_max_e = s_max( dmxEnergy_e, sub( hLsSetUpConversion->dmx_prev_exp[0], dmx_scale ) ); #else Word16 dmx_sacle = getScaleFactor32( hLsSetUpConversion->dmxEnergyPrev_fx[0], hLsSetUpConversion->sfbCnt ); scale_sig32( hLsSetUpConversion->dmxEnergyPrev_fx[0], hLsSetUpConversion->sfbCnt, dmx_sacle ); Word16 te_max_e = s_max( sub( 40, shl( q_output, 1 ) ), sub( hLsSetUpConversion->te_prev_exp[0], te_scale ) ); #endif Word16 dmx_max_e = s_max( dmxEnergy_exp_temp, sub( hLsSetUpConversion->dmx_prev_exp[0], dmx_sacle ) ); #endif FOR( bandIdx = 0; bandIdx < hLsSetUpConversion->sfbCnt; bandIdx++ ) { Loading @@ -962,7 +968,7 @@ void ivas_ls_setup_conversion_process_mdct_fx( move32(); dmxEnergy = W_extract_h( W_shl( dmxEnergy64[bandIdx], scf2 ) ); dmxEnergy = L_add( Mpy_32_32( LS_OUT_CONV_SMOOTHING_FACTOR_Q31, L_shr( dmxEnergy, sub( dmx_max_e, dmxEnergy_exp_temp ) ) ), Mpy_32_32( ( ONE_IN_Q31 - LS_OUT_CONV_SMOOTHING_FACTOR_Q31 ), L_shr( hLsSetUpConversion->dmxEnergyPrev_fx[0][bandIdx], sub( dmx_max_e, sub( hLsSetUpConversion->dmx_prev_exp[0], dmx_sacle ) ) ) ) ); dmxEnergy = L_add( Mpy_32_32( LS_OUT_CONV_SMOOTHING_FACTOR_Q31, L_shr( dmxEnergy, sub( dmx_max_e, dmxEnergy_e ) ) ), Mpy_32_32( ( ONE_IN_Q31 - LS_OUT_CONV_SMOOTHING_FACTOR_Q31 ), L_shr( hLsSetUpConversion->dmxEnergyPrev_fx[0][bandIdx], sub( dmx_max_e, sub( hLsSetUpConversion->dmx_prev_exp[0], dmx_scale ) ) ) ) ); move32(); hLsSetUpConversion->dmxEnergyPrev_fx[0][bandIdx] = dmxEnergy; move32(); Loading