Commit e15db35c authored by Sandesh Venkatesh's avatar Sandesh Venkatesh Committed by Manuel Jander
Browse files

Fix for 3GPP issue 1396: Stereo Encoder: BWE artefact at 48 kbps LTV

Link #1396
parent d7305273
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1413,6 +1413,8 @@ void core_signal_analysis_high_bitrate_ivas_fx(
                ProcessIGF_ivas_fx( st, N_MAX + L_MDCT_OVLP_MAX, hTcxEnc->spectrum_fx[frameno], hTcxEnc->spectrum_fx[frameno], &q_spectrum, powerSpec, powerSpec_e, transform_type[frameno] == TCX_20, frameno, 0, vad_hover_flag );
            }
        }
        st->hTcxEnc->spectrum_length = L_subframe;
        move16();
    }


+4 −12
Original line number Diff line number Diff line
@@ -1256,9 +1256,8 @@ void ivas_mdct_core_whitening_enc_fx(
    FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
    {
        st = sts[ch];
        init_tcx_enc_info_fx( st, &L_subframe, &L_subframeTCX, &tcx_subframe_coded_lines );
        st->hTcxEnc->spectrum_length = L_subframeTCX;

        st->hTcxEnc->spectrum_length = st->hTcxEnc->L_frameTCX;
        move16();
        IF( GE_16( add( imult1616( hCPE->cpe_id, CPE_CHANNELS ), ch ), nChannels ) )
        {
            CONTINUE;
@@ -1288,15 +1287,8 @@ void ivas_mdct_core_whitening_enc_fx(
#endif
        core_signal_analysis_high_bitrate_ivas_fx( new_samples_fx[ch] + L_INP_MEM, T_op[ch], NULL, NULL, st, tnsSize[ch], tnsBits[ch], param_core[ch], &ltpBits[ch], windowedSignal_fx[ch], st->L_frame, st->hTcxEnc->L_frameTCX, hCPE->last_element_mode, 0, mdst_spectrum_fx[ch], mdst_spectrum_e[ch], &Q_new, &q_windowedSignal[ch] );

#ifdef FIX_1464_NO_SINGLE_SPEC_Q
        FOR( n = 0; n < nSubframes; n++ )
        {
            lshift = sub( L_norm_arr( mdst_spectrum_fx[ch][n], l_frame ), 2 );
            Scale_sig32( mdst_spectrum_fx[ch][n], l_frame, lshift );
            mdst_spectrum_e[ch][n] = sub( mdst_spectrum_e[ch][n], lshift);
        }
#endif

        st->hTcxEnc->spectrum_length = s_max( st->hTcxEnc->spectrum_length, st->hTcxEnc->L_frameTCX );
        move16();
        /* BWD in MDCT domain */
        IF( NE_16( st->hTcxCfg->tcx_last_overlap_mode, TRANSITION_OVERLAP ) )
        {
+4 −7
Original line number Diff line number Diff line
@@ -371,14 +371,11 @@ void stereo_mdct_core_enc_fx(
        move16();
        FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
        {
            IF( EQ_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) )
            {
                length = sts[ch]->hTcxEnc->L_frameTCX;
            length = sts[ch]->hTcxEnc->spectrum_length;
            move16();
            }
            ELSE
            IF( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) )
            {
                length = shr( sts[ch]->hTcxEnc->L_frameTCX, 1 );
                length = shr( length, 1 );
            }
            FOR( k = 0; k <= ( ( sts[ch]->core == TCX_20_CORE ) ? 1 : NB_DIV ) - 1; k++ )
            {
+1 −1
Original line number Diff line number Diff line
@@ -1209,7 +1209,7 @@ typedef struct tcx_enc_structure
    Word32 spectrum_long_fx[N_MAX]; /* MDCT output for a long block. Points to spectrum */
    Word16 spectrum_long_e;         /* MDCT output for a long block. Points to spectrum */
    Word16 q_spectrum_long_fx;
    Word16 spectrum_length; /* corresponds to L_frameTCX, used for scaling of MDCT/MDST buffers */
    Word16 spectrum_length;
} TCX_ENC_DATA, *TCX_ENC_HANDLE;

typedef struct TransientDetection