Commit 0334f92f authored by reutelhuber's avatar reutelhuber
Browse files

fix issues with mono output for MDCT Stereo and multi-channel

parent c7ed4df7
Loading
Loading
Loading
Loading
Loading

lib_com/options.h

100644 → 100755
+1 −2
Original line number Diff line number Diff line
@@ -160,8 +160,7 @@
#define FIX_VBR_COMPLEXITY                              /* Issue 234: fix extremely high complexity numbers for IVAS EVS mode */
#define FIX_ISM_INACTIVE_BITS                           /* Issue 230: fix bitbudget distribution in inactive frames in ISM format */
#define IMPROVE_CMDLINE_ROBUSTNESS                      /* Issue 233: Improve robustness of command-line parameters */

#define FIX_ITD_CNG                                     /* Eri: Fix for CNG ITD */
#define FIX_MDCT_AND_MC_MONO_ISSUES                     /* Issue 242: Fix some issues with TCX-LTP and delay alignement for mono output */


/* ################## End DEVELOPMENT switches ######################### */

lib_dec/ivas_cpe_dec.c

100644 → 100755
+13 −0
Original line number Diff line number Diff line
@@ -444,10 +444,12 @@ ivas_error ivas_cpe_dec(
            }
        }
    }
#ifndef FIX_MDCT_AND_MC_MONO_ISSUES
    else if ( hCPE->element_mode == IVAS_CPE_MDCT && hCPE->nchan_out == 1 && ( is_DTXrate( ivas_total_brate ) == 0 || ( is_DTXrate( ivas_total_brate ) == 1 && is_DTXrate( st_ivas->hDecoderConfig->last_ivas_total_brate ) == 0 ) ) )
    {
        applyDmxMdctStereo( hCPE, output, output_frame );
    }
#endif

    /*----------------------------------------------------------------*
     * Update parameters for stereo CNA
@@ -461,6 +463,13 @@ ivas_error ivas_cpe_dec(

    synchro_synthesis( ivas_total_brate, hCPE, output, output_frame, 0 );

#ifdef FIX_MDCT_AND_MC_MONO_ISSUES
    if ( hCPE->element_mode == IVAS_CPE_MDCT && hCPE->nchan_out == 1 && (is_DTXrate( ivas_total_brate ) == 0 || (is_DTXrate( ivas_total_brate ) == 1 && is_DTXrate( st_ivas->hDecoderConfig->last_ivas_total_brate ) == 0)) )
    {
        applyDmxMdctStereo( hCPE, output, output_frame );
    }
#endif

#ifndef DEBUG_STEREO_DFT_OUTRESPRED
    /*----------------------------------------------------------------*
     * IC-BWE: output LB and HB mix in ACELP mode
@@ -581,7 +590,11 @@ ivas_error create_cpe_dec(
    hCPE->lt_es_em = 0.0f;

    /* Note: nchan_out is considered to be related to the structure. This is nchan_out for CPE and for MASA_format is always 2. */
#ifdef FIX_MDCT_AND_MC_MONO_ISSUES
    if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == MC_FORMAT )
#else
    if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == MASA_FORMAT || ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_MCMASA ) )
#endif
    {
        hCPE->nchan_out = CPE_CHANNELS;
    }
+8 −0
Original line number Diff line number Diff line
@@ -975,6 +975,9 @@ void synchro_synthesis(
    int16_t dft_mono_brate_switch;
    int16_t delay_diff;
    float tmpF;
#ifdef FIX_MDCT_AND_MC_MONO_ISSUES
    int16_t nChannels;
#endif

    sts = hCPE->hCoreCoder;
    output_Fs = sts[0]->output_Fs;
@@ -1222,7 +1225,12 @@ void synchro_synthesis(
            }
        }

#ifdef FIX_MDCT_AND_MC_MONO_ISSUES
        nChannels = ( hCPE->element_mode == IVAS_CPE_MDCT ) ? 2 : hCPE->nchan_out;
        for ( n = 0; n < nChannels; n++ )
#else
        for ( n = 0; n < hCPE->nchan_out; n++ )
#endif
        {
            if ( hCPE->element_mode == IVAS_CPE_MDCT )
            {