Commit 35e1bcee authored by vaclav's avatar vaclav
Browse files

issue 1203: fix severe artifacts during MDCT to DFT stereo switching when MDCT...

issue 1203: fix severe artifacts during MDCT to DFT stereo switching when MDCT ITD is not used; under NONBE_1203_MDCT2DFT_SWITCHING
parent f7ec6848
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -183,7 +183,7 @@


#define NONBE_1200_ISM_JBM_BRATE_SW_FLUSH               /* VA: issue 1200: fix bug in renderer flush in ISM JBM bitrate switching */

#define NONBE_1203_MDCT2DFT_SWITCHING                   /* VA: issue 1203: fix severe artifacts during MDCT to DFT stereo switching when MDCT ITD is not used */

/* ##################### End NON-BE switches ########################### */

+14 −0
Original line number Diff line number Diff line
@@ -399,6 +399,9 @@ void stereo_td_itd_mdct_stereo(
    float bin_nrgR[STEREO_DFT_N_32k_ENC];
    float DFT[CPE_CHANNELS][STEREO_DFT_N_MAX_ENC];
    STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct;
#ifdef NONBE_1203_MDCT2DFT_SWITCHING
    int16_t dft_ovl;
#endif

    if ( hCPE->hStereoMdct != NULL && hCPE->hStereoMdct->hItd != NULL )
    {
@@ -427,6 +430,17 @@ void stereo_td_itd_mdct_stereo(
        stereo_td_itd( hStereoMdct->hItd, NULL, 1, hStereoMdct->hDft_ana->dft_ovl, hCPE->hCoreCoder, input_frame, hCPE->input_mem );
#endif
    }
#ifdef NONBE_1203_MDCT2DFT_SWITCHING
    else if ( hCPE->input_mem[0] != NULL )
    {
        dft_ovl = STEREO_DFT_OVL_MAX * input_frame / L_FRAME48k;

        for ( i = 0; i < CPE_CHANNELS; i++ )
        {
            mvr2r( hCPE->hCoreCoder[i]->input + input_frame - dft_ovl, hCPE->input_mem[i], dft_ovl );
        }
    }
#endif

    return;
}
+3 −0
Original line number Diff line number Diff line
@@ -625,6 +625,9 @@ void stereo_switching_enc(
    dft_ovl = STEREO_DFT_OVL_MAX * input_frame / L_FRAME48k;

    /* update DFT analysis overlap memory */
#ifdef NONBE_1203_MDCT2DFT_SWITCHING
    /* note: in MDCT stereo, the update is done in stereo_td_itd_mdct_stereo() */
#endif
    if ( hCPE->element_mode > IVAS_CPE_DFT && hCPE->input_mem[0] != NULL && hCPE->element_mode != IVAS_CPE_MDCT )
    {
        for ( n = 0; n < CPE_CHANNELS; n++ )