Commit 0ebae419 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Fix for 3GPP issue 1805: Regression, spike in BASOP decoder MASA LTV at 64 kbps and 16 kHz input

Link #1805
parent 4e094d57
Loading
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -1814,10 +1814,10 @@ void ivas_mdct_core_tns_ns_fx(
                length = L_spec[ch];
                move16();
            }
            Scale_sig32( &x_fx[ch][k][0], length, -5 );
            Scale_sig32( &x_fx[ch][k][0], s_max( length, L_frameTCX[ch] ), -5 );
            decoder_tcx_tns_fx( st, L_frame_global[ch], L_spec[ch], L_frame[ch], L_frameTCX[ch], x_fx[ch][k], fUseTns[ch][k], &tnsData[ch][k], bfi, k, 1, &length );
            norm_x = getScaleFactor32( &x_fx[ch][k][0], length );
            Scale_sig32( &x_fx[ch][k][0], length, norm_x );
            Scale_sig32( &x_fx[ch][k][0], s_max( length, L_frameTCX[ch] ), norm_x );
            q_x = add( q_x, norm_x );
#ifndef OPT_SBA_DEC_V2_NBE
            x_e[ch][k] = sub( 31, q_x );
@@ -1856,10 +1856,13 @@ void ivas_mdct_core_tns_ns_fx(

            v_multc_fixed( x_fx[ch][k] + st->hTcxCfg->psychParamsCurrent->nBins, sns_int_scf_fx[FDNS_NPTS - 1], x_fx[ch][k] + st->hTcxCfg->psychParamsCurrent->nBins, sub( L_spec[ch], st->hTcxCfg->psychParamsCurrent->nBins ) );

            IF( NE_16( L_spec[ch], st->hTcxCfg->psychParamsCurrent->nBins ) )
            {
                q_2 = sub( add( q_x, q_sns_int_scf ), 31 );
                Scale_sig32( &x_fx[ch][k][0], st->hTcxCfg->psychParamsCurrent->nBins, sub( q_2, q_x ) );
                q_x = q_2;
                move16();
            }
#ifndef OPT_SBA_DEC_V2_NBE
            x_e[ch][k] = sub( 31, q_x );
            move16();
@@ -1878,7 +1881,7 @@ void ivas_mdct_core_tns_ns_fx(
                length = L_spec[ch];
                move16();
            }
            Scale_sig32( &x_fx[ch][k][0], length, -5 );
            Scale_sig32( &x_fx[ch][k][0], s_max( length, L_frameTCX[ch] ), -5 );
            decoder_tcx_tns_fx( st, L_frame_global[ch], L_spec[ch], L_frame[ch], L_frameTCX[ch], &x_fx[ch][k][0], fUseTns[ch][k], &tnsData[ch][k], bfi, k, 0, &length );
#ifndef OPT_SBA_DEC_V2_NBE
            norm_x = getScaleFactor32( &x_fx[ch][k][0], length );
@@ -1887,7 +1890,7 @@ void ivas_mdct_core_tns_ns_fx(
            x_e[ch][k] = sub( 31, q_x );
            move16();
#else  /* OPT_SBA_DEC_V2_NBE */
            Scale_sig32( &x_fx[ch][k][0], length, sub( sub( 31, q_x ), x_e ) );
            Scale_sig32( &x_fx[ch][k][0], s_max( length, L_frameTCX[ch] ), sub( sub( 31, q_x ), x_e ) );
#endif /* OPT_SBA_DEC_V2_NBE */
        }