Commit 4770ac4d authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Fix for issue 678: Amplitude issue in BWE during bitrate switching

[x] With these changes, the high frequency burst observed at 22.8s is
resolved.
parent f2d83656
Loading
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -315,8 +315,8 @@ void sns_shape_spectrum_fx(
    const PsychoacousticParameters *pPsychParams, /* i  : psychoacoustic parameters used to get the frequency bands */
    const Word32 *scf_int,                        /* i  : already interpolated SNS scalefactors                     */
    const Word16 q_scf_int,                       /* i  : Q of interpolated SNS scalefactors                        */
    const Word16 L_frame                          /* i  : frame length                                              */
);
    const Word16 L_frame,                         /* i  : frame length                                              */
    Word16 *length );

// ivas_stereo_eclvq_com_fx.c
Word32 ECSQ_dequantize_gain_fx(
+10 −2
Original line number Diff line number Diff line
@@ -284,8 +284,8 @@ void sns_shape_spectrum_fx(
    const PsychoacousticParameters *pPsychParams, /* i  : psychoacoustic parameters used to get the frequency bands */
    const Word32 *scf_int,                        /* i  : already interpolated SNS scalefactors                     */
    const Word16 q_scf_int,                       /* i  : Q of interpolated SNS scalefactors                        */
    const Word16 L_frame                          /* i  : frame length                                              */
)
    const Word16 L_frame,                         /* i  : frame length                                              */
    Word16 *length )
{
    Word16 i, n, k, tmp_k, bw, q_tmp = 0, shift, min_shift = 63;
    Word64 L64_tmp[L_FRAME48k];
@@ -311,6 +311,10 @@ void sns_shape_spectrum_fx(
            }
        }
        tmp_k = k;
        if ( length != NULL )
        {
            *length = k;
        }
        q_tmp = sub( add( add( *q_spectrum, q_scf_int ), min_shift ), 32 );
        IF( GT_16( q_tmp, 30 ) )
        {
@@ -340,6 +344,10 @@ void sns_shape_spectrum_fx(
            }
        }
        tmp_k = k;
        if ( length != NULL )
        {
            *length = k;
        }
        q_tmp = sub( add( add( *q_spectrum, q_scf_int ), min_shift ), 32 );
        IF( GT_16( q_tmp, 30 ) )
        {
+1 −1
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@ void ivas_DetectTonalComponents_fx(
        }
#endif
        q_pScaledMdctSpectrum = sub( 31, lastMDCTSpectrum_exp );
        sns_shape_spectrum_fx( pScaledMdctSpectrum, &q_pScaledMdctSpectrum, psychParamsCurrent, sns_int_scf_fx, 16, nSamplesCore );
        sns_shape_spectrum_fx( pScaledMdctSpectrum, &q_pScaledMdctSpectrum, psychParamsCurrent, sns_int_scf_fx, 16, nSamplesCore, NULL );
        q_pScaledMdctSpectrum = add( q_pScaledMdctSpectrum, 1 );
        Word16 tmp_e = sub( 31, q_pScaledMdctSpectrum );
        nBands = psychParamsCurrent->nBands;
+4 −4
Original line number Diff line number Diff line
@@ -2430,7 +2430,7 @@ void ivas_mdct_core_tns_ns_fx(
            x_e[ch][k] = sub( 31, q_x );

            Word16 q_sns_int_scf;
            Word16 q_2;
            Word16 q_2, length;
            q_sns_int_scf = add( 16 - 1, getScaleFactor32( sns_int_scf_fx, FDNS_NPTS ) );
            // q_sns_int_scf -= 1;
            FOR( Word16 c = 0; c < FDNS_NPTS; c++ )
@@ -2438,15 +2438,15 @@ void ivas_mdct_core_tns_ns_fx(
                sns_int_scf_fx[c] = L_shl( sns_int_scf_fx[c], q_sns_int_scf - 16 );
            }
            q_2 = q_x;
            sns_shape_spectrum_fx( x_fx[ch][k], &q_x, st->hTcxCfg->psychParamsCurrent, sns_int_scf_fx, q_sns_int_scf, st->hTcxCfg->psychParamsCurrent->nBins );
            sns_shape_spectrum_fx( x_fx[ch][k], &q_x, st->hTcxCfg->psychParamsCurrent, sns_int_scf_fx, q_sns_int_scf, st->hTcxCfg->psychParamsCurrent->nBins, &length );
            IF( LT_16( q_2, add( q_x, 1 ) ) ) /*scaling to q_2*/
            {
                Scale_sig32( &x_fx[ch][k][0], st->hTcxCfg->psychParamsCurrent->nBins, q_2 - q_x - 1 );
                Scale_sig32( &x_fx[ch][k][0], length, q_2 - q_x - 1 );
                q_x = q_2;
            }
            ELSE /*scaling to q_x+1*/
            {
                Scale_sig32( &x_fx[ch][k][0] + st->hTcxCfg->psychParamsCurrent->nBins, L_spec[ch] - st->hTcxCfg->psychParamsCurrent->nBins, q_x + 1 - q_2 );
                Scale_sig32( &x_fx[ch][k][0] + length, L_spec[ch] - length, q_x + 1 - q_2 );
                q_x = add( q_x, 1 );
            }
            x_e[ch][k] = sub( 31, q_x );
+1 −0
Original line number Diff line number Diff line
@@ -1700,6 +1700,7 @@ ivas_error stereo_memory_dec_fx(
            IF( EQ_16( hCPE->last_element_mode, IVAS_CPE_TD ) )
            {
                mvl2l( tmpF_buff, st->hTcxDec->old_syn_Overl_32, L_FRAME16k / 2 );
                Copy_Scale_sig32_16( st->hTcxDec->old_syn_Overl_32, st->hTcxDec->old_syn_Overl, L_FRAME16k / 2, add( st->Q_syn, 5 ) ); //(st->Qsyn - (11 - 16))
            }

            set16_fx( st->hTcxDec->FBTCXdelayBuf, 0, 111 );
Loading