Commit 69ada326 authored by vaclav's avatar vaclav
Browse files

fix issue 1110: fix encoder crash in the stereo DTX bitrate switching...

fix issue 1110: fix encoder crash in the stereo DTX bitrate switching condition; under NONBE_FIX_1110_STEREO_DTX_BRATE_SWITCHING
parent c72b24f2
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -192,6 +192,8 @@
#define NONBE_FIX_1091_PMC_LOW_SIGNAL_BURSTS            /* FhG: fix for #1091, fix limit calculation for the regularized inverse of Kx to avoid bursts in very low signals */
#define NONBE_FIX_1074_NOBJ_SIGNAL_OMASA_LBR            /* Nok: issue 1074 fixing number of objects signaling in OMASA low rate */
#define NONBE_FIX_1096_NAN_VALUES_IN_DIRAC_TO_STEREO    /* FhG: avoid sidegain DFT-Stereo param to be larger than 1 when converting from Dirac parameters */
#define NONBE_FIX_1110_STEREO_DTX_BRATE_SWITCHING       /* VA: issue 1110: fix encoder crash in the stereo DTX bitrate switching condition */

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

/* ################## End DEVELOPMENT switches ######################### */
+4 −0
Original line number Diff line number Diff line
@@ -231,7 +231,11 @@ ivas_error acelp_core_dec(
        st->hGSCDec->Last_frame_ener = (float) MAX_32;
    }

#ifdef NONBE_FIX_1110_STEREO_DTX_BRATE_SWITCHING
    if ( st->hFdCngDec != NULL && ( st->element_mode == IVAS_CPE_DFT || st->element_mode == IVAS_CPE_TD ) && ( st->last_core_brate == SID_2k40 || st->last_core_brate == FRAME_NO_DATA ) )
#else
    if ( ( st->element_mode == IVAS_CPE_DFT || st->element_mode == IVAS_CPE_TD ) && ( st->last_core_brate == SID_2k40 || st->last_core_brate == FRAME_NO_DATA ) )
#endif
    {
        set_zero( st->hFdCngDec->hFdCngCom->olapBufferSynth2, FFTLEN );
        set_zero( hStereoCng->olapBufferSynth22, FFTLEN );
+11 −0
Original line number Diff line number Diff line
@@ -1580,6 +1580,17 @@ void stereo_switching_dec(
        sts[1]->hTcxDec->conceal_eof_gain = sts[0]->hTcxDec->conceal_eof_gain;
    }

#ifdef NONBE_FIX_1110_STEREO_DTX_BRATE_SWITCHING
    /* In case of DTX in bitrate switching, there can happen that last_core_brate = 0/2400 from MDCT stereo CNG */
    if ( hCPE->element_mode == IVAS_CPE_TD && hCPE->last_element_mode != IVAS_CPE_TD )
    {
        if ( sts[1]->last_core_brate == FRAME_NO_DATA || sts[1]->last_core_brate == SID_2k40 )
        {
            sts[1]->last_core_brate = sts[0]->last_core_brate;
        }
    }
#endif

    return;
}

+11 −0
Original line number Diff line number Diff line
@@ -832,5 +832,16 @@ void stereo_switching_enc(
        sts[1]->hTcxCfg->tcx_curr_overlap_mode = sts[0]->hTcxCfg->tcx_curr_overlap_mode;
    }

#ifdef NONBE_FIX_1110_STEREO_DTX_BRATE_SWITCHING
    /* In case of DTX in bitrate switching, there can happen that last_core_brate = 0/2400 from MDCT stereo CNG */
    if ( sts[0]->Opt_DTX_ON && hCPE->element_mode == IVAS_CPE_TD && hCPE->last_element_mode != IVAS_CPE_TD )
    {
        if ( sts[1]->last_core_brate == FRAME_NO_DATA || sts[1]->last_core_brate == SID_2k40 )
        {
            sts[1]->last_core_brate = sts[0]->last_core_brate;
        }
    }
#endif

    return;
}