Commit 903f7d3d authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Fix for 3GPP issue 1008: Serious clicks in ISM + FER at higher bitrates

link #1008, #1032

[x] Fixes #1032 as well.
parent 34e96575
Loading
Loading
Loading
Loading
Loading
+22 −7
Original line number Diff line number Diff line
@@ -316,7 +316,7 @@ void stereo_tcx_core_dec_fx(
    Word32 L_tmp, mod;

    /*LPC*/
    Word16 lsf_fx[( NB_DIV + 1 ) * M], lsp_fx[( NB_DIV + 1 ) * M], lspmid_fx[M], lsfmid_fx[M];
    Word16 lsf_fx[( NB_DIV + 1 ) * M], lsp_fx[( NB_DIV + 1 ) * M], lspmid_fx[M], lsfmid_fx[M], lsf_tmp_fx[( NB_DIV + 1 ) * M];
    Word16 lspnew_uw_fx[NB_DIV * M], lsfnew_uw_fx[NB_DIV * M];
    Word16 Aq_fx[( NB_SUBFR16k + 1 ) * ( M + 1 )];
    Word16 pit_gain_fx[NB_SUBFR16k];
@@ -532,15 +532,30 @@ void stereo_tcx_core_dec_fx(

        Copy( st->lspold_uw, lsp_fx, M );     /* Q15 */
        Copy( st->lsfold_uw, lsf_fx, M );     /* Q2.56 */
        Copy( st->lsfold_uw, lsf_tmp_fx, M ); /* Q2.56 */

        Word16 tmp;
        Word16 sr_core_ratio = BASOP_Util_Divide3232_Scale( st->sr_core, INT_FS_12k8, &tmp );

        FOR( k = 0; k < st->numlpc; k++ )
        {
            Copy( &lsfnew_uw_fx[k * M], &lsf_fx[( k + 1 ) * M], M );     /* Q2.56 */
            Copy( &lsfnew_uw_fx[k * M], &lsf_tmp_fx[( k + 1 ) * M], M ); /* Q2.56 */

            lsf2lsp_fx( &lsf_fx[( k + 1 ) * M], &lsp_fx[( k + 1 ) * M], M, st->sr_core ); /* Q2.56 */
            lsf2lsp_fx( st->lsf_q_cng, st->lsp_q_cng, M, st->sr_core );                   /* Q2.56 */
            v_multc_fixed_16_16( &lsf_tmp_fx[( k + 1 ) * M], sr_core_ratio, &lsf_tmp_fx[( k + 1 ) * M], M );
            Scale_sig( &lsf_tmp_fx[( k + 1 ) * M], M, tmp );
            test();
            IF( !st->lpcQuantization && EQ_32( st->sr_core, INT_FS_16k_FX ) )
            {
                lsf2lsp_fx( &lsf_tmp_fx[( k + 1 ) * M], &lsp_fx[( k + 1 ) * M], M, st->sr_core );
            }
            ELSE
            {
                lsf2lsp_fx( &lsf_fx[( k + 1 ) * M], &lsp_fx[( k + 1 ) * M], M, st->sr_core );
            }
            lsf2lsp_fx( st->lsf_q_cng, st->lsp_q_cng, M, st->sr_core );

            Copy( &lsp_fx[( k + 1 ) * M], &lspnew_uw_fx[k * M], M ); /* Q2.56 */
            Copy( &lsp_fx[( k + 1 ) * M], &lspnew_uw_fx[k * M], M ); /* Q15 */
        }
    }