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

Fix for 3GPP issue 1167: Encoder crash for OSBA ISM3SBA1 at 13.2 and 16.4 kbps...

Fix for 3GPP issue 1167: Encoder crash for OSBA ISM3SBA1 at 13.2 and 16.4 kbps in gauss_L2_ivas_fx()

Link #1167
parent 12778592
Loading
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -117,4 +117,5 @@
#define FIX_ISSUE_1152                          /* Ittiam: Fix for issue 1152: Assertion error observed in evs_enc_fx (with option stereo_dmx_evs) from find_tilt_fx function*/
#define FIX_ISSUE_1156                          /* Ittiam: Fix for Issue 1156: Encoder crash for Stereo at 32kbps in SWB_BWE_encoding_ivas_fx() */
#define FIX_DISCLAIMER                          /* VA: Add disclaimer for external renderer + Add info about IVAS reference version (FLP issue 1225) */
#define FIX_ISSUE_1167                          /* Ittiam: Fix for Issue 1167: Encoder crash for OSBA ISM3SBA1 at 13.2 and 16.4 kbps in gauss_L2_ivas_fx() */
#endif
+19 −1
Original line number Diff line number Diff line
@@ -143,14 +143,24 @@ void gauss_L2_ivas_fx(
    *gain = L_deposit_l( 0 );
    move32();
    /*Update correlations for gains coding */
#ifdef FIX_ISSUE_1167
    tmp32 = L_shr( 21474836l /*0.01f Q31*/, 31 - 16 );   /* Q16 */
    tmp32_2 = L_shr( 21474836l /*0.01f Q31*/, 31 - 16 ); /* Q16 */
    FOR( i = 0; i < L_SUBFR; i++ )
    {
        tmp16 = shr( y11[i], 1 );
        tmp32 = L_mac0( tmp32, tmp16, tmp16 );               /* Q16 */
        tmp32_2 = L_mac0( tmp32_2, tmp16, shr( y2[i], 1 ) ); /* Q16 */
    }
#else
    tmp32 = L_shr( 21474836l /*0.01f Q31*/, 31 - 18 );   /* Q18 */
    tmp32_2 = L_shr( 21474836l /*0.01f Q31*/, 31 - 18 ); /* Q18 */

    FOR( i = 0; i < L_SUBFR; i++ )
    {
        tmp32 = L_mac0( tmp32, y11[i], y11[i] );    /* Q18 */
        tmp32_2 = L_mac0( tmp32_2, y11[i], y2[i] ); /* Q18 */
    }
#endif

    tmp16 = norm_l( tmp32 );
    // To be checked
@@ -159,13 +169,21 @@ void gauss_L2_ivas_fx(
#else
    g_corr->y1y1 = round_fx( L_shl( tmp32, tmp16 ) );
#endif
#ifdef FIX_ISSUE_1167
    g_corr->y1y1_e = sub( 31 - 16, tmp16 );
#else
    g_corr->y1y1_e = sub( 31 - 18, tmp16 );
#endif
    move16();
    move16();

    tmp16 = norm_l( tmp32_2 );
    g_corr->y1y2 = round_fx_sat( L_shl( tmp32_2, tmp16 ) );
#ifdef FIX_ISSUE_1167
    g_corr->y1y2_e = sub( 31 - 16, tmp16 );
#else
    g_corr->y1y2_e = sub( 31 - 18, tmp16 );
#endif
    move16();
    move16();
}