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

Merge branch...

Merge branch '1481-stereo-dmx-usage-of-basop_util_divide3232_scale_newton-to-calculate-hpha-fad_g_prc_fx' into 'main'

Resolve "Stereo DMX: Usage of BASOP_Util_Divide3232_Scale_newton() to calculate hPHA->fad_g_prc_fx"

Closes #1481

See merge request !1407
parents 46f941f2 c0b89498
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@
//#define HARM_SCE_INIT
#define DIV32_OPT_NEWTON                               /* FhG: faster 32 by 32 bit division */ 
#define	MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */
#define FIX_1481_HARDCODE_DIV                          /* FhG: hardcode division results in stereo_dmx_evs_init_encoder_fx() */

#define TEST_HR

+54 −0
Original line number Diff line number Diff line
@@ -2419,7 +2419,34 @@ ivas_error stereo_dmx_evs_init_encoder_fx(

    fad_g = hStereoDmxEVS->hPHA->fad_g_fx;
    // fad_r = 1.0f / (float) ( fad_len + 1 );
#ifdef FIX_1481_HARDCODE_DIV
    SWITCH( fad_len )
    {
        case STEREO_DMX_EVS_FAD_LEN_16:
            fad_r = 853658096;
            move32();
            tmp_e = -6;
            move16();
            BREAK;
        case STEREO_DMX_EVS_FAD_LEN_32:
            fad_r = 856317467;
            move32();
            tmp_e = -7;
            move16();
            BREAK;
        case STEREO_DMX_EVS_FAD_LEN_48:
            fad_r = 571471740;
            move32();
            tmp_e = -7;
            move16();
            BREAK;
        default:
            fad_r = BASOP_Util_Divide3232_Scale_newton( 1, add( fad_len, 1 ), &tmp_e );
            BREAK;
    }
#else
    fad_r = BASOP_Util_Divide3232_Scale_cadence( 1, add( fad_len, 1 ), &tmp_e );
#endif
    fad_r = L_shl_r( fad_r, tmp_e );
    fad_len2 = shr( fad_len, 1 );
    FOR( ( n = 0, m = ( fad_len - 1 ) ); n < fad_len2; ( n++, m-- ) )
@@ -2537,7 +2564,34 @@ ivas_error stereo_dmx_evs_init_encoder_fx(
    move16();
    fad_g = hStereoDmxEVS->hPHA->fad_g_prc_fx;
    // fad_r = 1.0f / (float) ( fad_len + 1 );
#ifdef FIX_1481_HARDCODE_DIV
    SWITCH( fad_len )
    {
        case STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 16:
            fad_r = 856317467;
            move32();
            tmp_e = -7;
            move16();
            BREAK;
        case STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 32:
            fad_r = 857653375;
            move32();
            tmp_e = -8;
            move16();
            BREAK;
        case STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 48:
            fad_r = 572066403;
            move32();
            tmp_e = -8;
            move16();
            BREAK;
        default:
            fad_r = BASOP_Util_Divide3232_Scale_newton( 1, add( fad_len, 1 ), &tmp_e );
            BREAK;
    }
#else
    fad_r = BASOP_Util_Divide3232_Scale_cadence( 1, add( fad_len, 1 ), &tmp_e );
#endif
    fad_r = L_shl_r( fad_r, tmp_e );
    fad_len2 = shr( fad_len, 1 );
    FOR( ( n = 0, m = ( fad_len - 1 ) ); n < fad_len2; ( n++, m-- ) )