Commit da092035 authored by vaillancour's avatar vaillancour
Browse files

possible fix to 1257, issue in icBWE

parent e43f1385
Loading
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -148,4 +148,7 @@
#define FIX_11_1_IVAS_SPAR_DEC_UPMIXER_SF_RND_COEFFS            /* FhG  ivas_spar_com.c: Zeroes very small negative coeffs via L_shr_r (was L_shr) */
#define FIX_ISSUE_1237                          /* VA: replacement of Copy_Scale_sig_16_32_DEPREC() that are doing 16 bits left shift by Copy_Scale_sig_16_32_no_sat() */
#define FIX_ISSUE_1237_KEEP_EVS_BE              /* VA: Fix to keep EVS bitexactness to 26.444 */

#define FIX1257_POSSIBLE_FIX_TO_EXTRACT_L       /* VA: possible fix that prevent BWE to disappear */

#endif
+20 −2
Original line number Diff line number Diff line
@@ -216,9 +216,11 @@ static Word16 ic_bwe_enc_specMapping_ivas_fx(
    b_e = BASOP_Util_Add_MantExp( tmp1, sub( add( Txx1_e, T_desired_e ), 1 ), negate( tmp ), exp, &b_fx ); /* Q15-b_fx */

    c_e = BASOP_Util_Add_MantExp( T_desired_fx, T_desired_e, negate( Txx1_fx ), Txx1_e, &c_fx ); /* Q15-c_fx */

#ifdef FIX1257_POSSIBLE_FIX_TO_EXTRACT_L
    u_fx = extract_h( *specMapping_fx );    // specMapping_fx is in Q31, I don't see how extract_l can be used without causing issues, maybe I miss something
#else
    u_fx = extract_l( *specMapping_fx );

#endif
    tmp = mult( b_fx, b_fx );  // b_e  + b_e;
    tmp1 = mult( a_fx, c_fx ); // a_e + c_e + 2

@@ -374,7 +376,11 @@ static Word16 ic_bwe_enc_gsMapping_ivas_fx(
    /* quantize the IC-BWE GS mapping*/
    IF( EQ_16( element_mode, IVAS_CPE_TD ) )
    {
#ifdef FIX1257_POSSIBLE_FIX_TO_EXTRACT_L
        temp2_fx = extract_h( L_shl_sat( temp2_fx32, Q16 - Q10 ) ); // Q15
#else
        temp2_fx = extract_l( L_shr( temp2_fx32, Q10 ) ); // Q15
#endif
        gsMapping_fx16 = 0;
        move16();
        idx = squant_fx( temp2_fx, &gsMapping_fx16, icbwe_gsMapping_tbl_fx, ( 1 << STEREO_ICBWE_GSBITS ) ); // Q12
@@ -382,7 +388,11 @@ static Word16 ic_bwe_enc_gsMapping_ivas_fx(
    }
    ELSE
    {
#ifdef FIX1257_POSSIBLE_FIX_TO_EXTRACT_L
        temp2_fx = extract_h( L_shl_sat( temp2_fx32, 16-Q10 ) ); // Q15
#else
        temp2_fx = extract_l( L_shr( temp2_fx32, Q10 ) ); // Q15
#endif
        gsMapping_fx16 = 0;
        move16();
        idx = squant_fx( temp2_fx, &gsMapping_fx16, icbwe_gsMappingDFT_tbl_fx, ( 1 << STEREO_ICBWE_GSBITS ) ); // Q12
@@ -732,7 +742,11 @@ void stereo_icBWE_enc_ivas_fx(
                tmp = shr( tmp, sub( Q15, exp ) );                              /* Q0 */
                FOR( j = 0; j < tmp; ( j++, k++ ) )
                {
#ifndef FIX1257_POSSIBLE_FIX_TO_EXTRACT_L
                    excSHB_nonref_fx[k] = extract_l( BASOP_Util_Add_Mant32Exp( Mpy_32_32( temp1_fx, hStereoICBWE->nlExc16k_fx[k] ), add( temp1_e, hStereoICBWE->nlExc16k_e ), Mpy_32_32( temp2_fx, hStereoICBWE->mixExc16k_fx[k] ), add( temp2_e, hStereoICBWE->mixExc16k_e ), &exp_buf[k] ) ); /* Q31-exp_buf */
#else
                    excSHB_nonref_fx[k] = extract_h( L_shl_sat(BASOP_Util_Add_Mant32Exp( Mpy_32_32( temp1_fx, hStereoICBWE->nlExc16k_fx[k] ), add( temp1_e, hStereoICBWE->nlExc16k_e ), Mpy_32_32( temp2_fx, hStereoICBWE->mixExc16k_fx[k] ), add( temp2_e, hStereoICBWE->mixExc16k_e ), &exp_buf[k] ), 16 ) ); /* Q31-exp_buf */
#endif
                    move32();
                }
            }
@@ -955,7 +969,11 @@ void stereo_icBWE_enc_ivas_fx(

                FOR( j = 0; j < ( L_FRAME16k / nbSubFr ); ( j++, k++ ) )
                {
#ifdef FIX1257_POSSIBLE_FIX_TO_EXTRACT_L
                    excSHB_nonref_fx[k] = extract_h(L_shl_sat( BASOP_Util_Add_Mant32Exp(Mpy_32_32(temp1_fx, hStereoICBWE->nlExc16k_fx[k]), temp1_e + hStereoICBWE->nlExc16k_e, Mpy_32_32(temp2_fx, hStereoICBWE->mixExc16k_fx[k]), temp2_e + hStereoICBWE->mixExc16k_e, &exp_buf[k]), 16 ) ); /* Q31-exp_buf */
#else
                    excSHB_nonref_fx[k] = extract_l( BASOP_Util_Add_Mant32Exp( Mpy_32_32( temp1_fx, hStereoICBWE->nlExc16k_fx[k] ), temp1_e + hStereoICBWE->nlExc16k_e, Mpy_32_32( temp2_fx, hStereoICBWE->mixExc16k_fx[k] ), temp2_e + hStereoICBWE->mixExc16k_e, &exp_buf[k] ) ); /* Q31-exp_buf */
#endif
                    move32();
                }
            }