Commit c8c5133c authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch '1301-wrong-constant-in-td-stereo' into 'main'

correction of constants

Closes #1301

See merge request !1136
parents 4f73bc08 7b46b2fe
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -171,4 +171,5 @@
#define FIX_1297_OVERFLOW                       /* VA: fixes issue with overflows in pre-processing */
#define FIX_1298                                /* VA: fix possible assert in gaus_enc */
#define FIX_1300_ICA_SHIFT_QUANT_IMPROV         /* VA: Fix to 1300 to improve precision of the lag quantizer */
#define FIX_1301_CORRECT_TD_CNST                /* VA: Fix 1301, correct wrong constant in TD stereo */
#endif
+28 −8
Original line number Diff line number Diff line
@@ -74,9 +74,13 @@
#define RATIO_MAX 1.5f /* Maximum correlation ratio */

#define RATIO_MAX_FX_Q30 ( 1610612736 ) /* 1.5f in Q30 */ /* Maximum correlation ratio */
#ifdef FIX_1301_CORRECT_TD_CNST
#define RATIO_MAX_FX_Q24 ( 25165824 ) /* 1.5f in Q24 */ /* Maximum correlation ratio */
#define RATIO_MAX_FX_Q23 ( 12582912 ) /* 1.5f in Q23 */ /* Maximum correlation ratio */
#else
#define RATIO_MAX_FX_Q24 ( 2516582 ) /* 1.5f in Q24 */ /* Maximum correlation ratio */
#define RATIO_MAX_FX_Q23 ( 1258291 ) /* 1.5f in Q23 */ /* Maximum correlation ratio */

#endif
#define LIMIT_ADAP_FAC_FX_Q16 ( 9830 )    /* 0.15f in Q16 */
#define MIN_ADAP_FAC_FX_Q16   ( 6554 )    /*0.1f in Q16*/
#define M_ADAP_FX_Q31         ( 1932735 ) /* 0.0009f in Q31 */
@@ -258,7 +262,11 @@ Word16 stereo_tdm_ener_analysis_fx(
        rms_thd_fx = L_shr( rms_thd_fx, 2 ); /*Q16*/ /*rms_thd_fx *= 0.25f*/
        test();
        test();
#ifdef FIX_1301_CORRECT_TD_CNST
        IF( LE_32( hStereoTD->tdm_lt_rms_L_fx, 4915200 /* 75 in Q16*/ ) || LE_32( hStereoTD->tdm_lt_rms_R_fx, 4915200 /* 75 in Q16*/ ) /*|| sts[0]->last_coder_type == TRANSITION */ )
#else
        IF( LE_32( hStereoTD->tdm_lt_rms_L_fx, 4915200 /* 75 in Q16*/ ) || LE_32( hStereoTD->tdm_lt_rms_R_fx, 75 /* 75 in Q16*/ ) /*|| sts[0]->last_coder_type == TRANSITION */ )
#endif
        {
            rms_thd_fx = L_shr( rms_thd_fx, 5 ); /* Q16*/ /*rms_thd_fx *= 0.03125f*/
        }
@@ -332,6 +340,10 @@ Word16 stereo_tdm_ener_analysis_fx(
        move16();
    }

#ifdef FIX_1301_CORRECT_TD_CNST
    rms_L_fx = L_shl( rms_L_fx, sub( Q16, q_rms_L ) ); /* All the following energy comparison are done in Q16 */
    rms_R_fx = L_shl( rms_R_fx, sub( Q16, q_rms_R ) );
#endif
    test();
    IF( EQ_16( hStereoTD->prev_fr_LRTD_TD_dec, 1 ) && side_can_change == 0 )
    {
@@ -430,7 +442,11 @@ Word16 stereo_tdm_ener_analysis_fx(
        ELSE
        {
            /*ratio_L = ( 1.0f - cosf( EVS_PI * ratio_L / 2.0f ) ) / 2.0f;*/
#ifdef FIX_1301_CORRECT_TD_CNST
            ratio_L_fx = L_deposit_h( sub_sat( ONE_IN_Q14, getCosWord16( extract_l( Mpy_32_32( 1647099 /* EVS_PI/2 in Q20 */, ratio_L_fx ) ) ) ) ); // Q31 (Q14 + Q1(division by 2.0f) + Q16)
#else
            ratio_L_fx = L_deposit_h( sub( ONE_IN_Q14, getCosWord16( extract_l( Mpy_32_32( 1647099 /* EVS_PI/2 in Q20 */, ratio_L_fx ) ) ) ) ); // Q31 (Q14 + Q1(division by 2.0f) + Q16)
#endif
        }

        test();
@@ -478,7 +494,7 @@ Word16 stereo_tdm_ener_analysis_fx(
        {
            test();
            test();
            IF( GE_32( hCPE->element_brate, IVAS_48k ) && sts[0]->hVAD->hangover_cnt != 0 && LT_32( L_max( hStereoTD->tdm_lt_rms_L_fx, hStereoTD->tdm_lt_rms_R_fx ), 33554432 /* 512.0f */ ) )
            IF( GE_32( hCPE->element_brate, IVAS_48k ) && sts[0]->hVAD->hangover_cnt != 0 && LT_32( L_max( hStereoTD->tdm_lt_rms_L_fx, hStereoTD->tdm_lt_rms_R_fx ), 33554432 /* 512.0f in Q16*/ ) )
            {
                ratio_L_fx = check_bounds_l( ratio_L_fx, 644245094 /*0.3f in Q31*/, 1503238554 /*0.7f in Q31*/ ); /* Q31 */
            }
@@ -487,7 +503,7 @@ Word16 stereo_tdm_ener_analysis_fx(
            test();
            test();
            test();
            IF( ( GT_32( hCPE->hStereoTCA->instTargetGain_fx, 644245094 /*1.2f in Q29*/ ) || GT_32( hCPE->hStereoTCA->targetGain_fx, ONE_IN_Q29 ) ) && LT_32( ratio_L_fx, 858993459 /*0.4f*/ ) )
            IF( ( GT_32( hCPE->hStereoTCA->instTargetGain_fx, 644245094 /*1.2f in Q29*/ ) || GT_32( hCPE->hStereoTCA->targetGain_fx, ONE_IN_Q29 ) ) && LT_32( ratio_L_fx, 858993459 /*0.4f  in Q31*/ ) )
            {
                ratio_L_fx = 858993459; /*0.4f in Q31*/
                move32();
@@ -565,7 +581,7 @@ Word16 stereo_tdm_ener_analysis_fx(
        }
    }

    IF( LT_16( sub( sts[1]->lp_speech_fx, sts[1]->lp_noise_fx ), 12800 /*50.0f*/ ) ) /* likely presence of noisy content */
    IF( LT_16( sub( sts[1]->lp_speech_fx, sts[1]->lp_noise_fx ), 12800 /*50.0f in Q8*/ ) ) /* likely presence of noisy content */
    {
        /* pointing in the right direction, inverse it else do nothing */
        test();
@@ -1059,7 +1075,11 @@ static void NOOP_decision_fx(
    }
    ELSE
    {
#ifdef FIX_1301_CORRECT_TD_CNST
        if ( LT_32( sts[0]->ee_old_fx, 320000 /* 5000.f in Q6 */ ) && LT_32( sts[1]->ee_old_fx, 320000 /* 5000.f in Q6 */ ) )
#else
        if ( LT_32( sts[0]->ee_old_fx, 160000 /* 5000.f in Q6 */ ) && LT_32( sts[1]->ee_old_fx, 160000 /* 5000.f in Q6 */ ) )
#endif
        {
            tdm_NOOP_switch_flag = 1;
            move16();