Commit 70381f87 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch '3gpp_issue_1082_fix' into 'main'

Fix for 3GPP issue 1082: Encoder crash when encoding SBA input vectors

See merge request !862
parents ccfb90b4 1105f0ea
Loading
Loading
Loading
Loading
Loading
+12 −9
Original line number Diff line number Diff line
@@ -1480,14 +1480,16 @@ void calculate_hodirac_sector_parameters_fx(

                tmp16 = BASOP_util_atan2( *p_sec_I_vec_smth_y_fx, *p_sec_I_vec_smth_x_fx, sub( *p_sec_I_vec_smth_y_exp, *p_sec_I_vec_smth_x_exp ) ); // Q13
                *p_azi_fx = Mpy_32_32( L_deposit_h( tmp16 ), _180_OVER_PI_Q25 );                                                                     // (Q13 + 16) + Q25 - 31 = 54 - 31 = Q23
                tmp16 = BASOP_util_atan2( *p_sec_I_vec_smth_z_fx, tmp_xy_hypo, sub( *p_sec_I_vec_smth_z_exp, tmp_e ) );                              // Q13
                move32();
                tmp16 = BASOP_util_atan2( *p_sec_I_vec_smth_z_fx, L_add( tmp_xy_hypo, EPSILON_FX_SMALL ), sub( *p_sec_I_vec_smth_z_exp, tmp_e ) ); // Q13
                *p_ele_fx = Mpy_32_32( L_deposit_h( tmp16 ), _180_OVER_PI_Q25 );                                                                   // (Q13 + 16) + Q25 - 31 = 54 - 31 = Q23
                move32();
                *p_ene_fx = *p_energy_smth_fx;
                move32();
                *p_ene_exp = *p_energy_smth_exp;
                move16();

                tmp32 = L_deposit_h( BASOP_Util_Divide3232_Scale( normI_fx, *p_energy_smth_fx, &tmp_e ) );
                tmp32 = L_deposit_h( BASOP_Util_Divide3232_Scale( normI_fx, L_add( *p_energy_smth_fx, EPSILON_FX_SMALL ), &tmp_e ) );
                tmp_e = add( tmp_e, sub( normI_exp, *p_energy_smth_exp ) );
                tmp32 = BASOP_Util_Add_Mant32Exp( ONE_IN_Q30, 1, L_negate( tmp32 ), tmp_e, &tmp_e );
                *p_diff_fx = tmp32;
@@ -1500,16 +1502,17 @@ void calculate_hodirac_sector_parameters_fx(
            move32();
            tmp_diff_exp = *p_diff_exp;
            move16();
            if ( tmp_diff_fx < 0 )
            {
                tmp_diff_fx = 0;
                move32();
            }

            tmp_diff_fx = L_shr( tmp_diff_fx, sub( 2, tmp_diff_exp ) ); // Q29
            tmp_diff_exp = 2;
            move16();

            IF( tmp_diff_fx < 0 )
            {
                *p_diff_fx = 0;
                move32();
            }
            IF( GT_32( tmp_diff_fx, ( ONE_IN_Q29 / 2 ) ) )
            IF( GT_32( tmp_diff_fx, ONE_IN_Q28 ) )
            {
                IF( hDirAC->firstrun_sector_params )
                {