Commit 0223e9da authored by multrus's avatar multrus
Browse files

Merge branch 'main' into...

Merge branch 'main' into basop-2572-basop-assert-in-evs-encoder-with-fix_2346_duplicated_igf_functions_2
parents 41000bd2 00790c6b
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -105,6 +105,7 @@
#define FIX_BASOP_2560_STEREO_DFT_DEC_RESET             /* FhG: BASOP issue 2560: align reset of hStereoDft->res_gains_ind_fx[][] between BASOP and float */
#define HARMONIZE_2539_cng_energy                       /* FhG: basop issue 2539: harmonize cng_energy with its ivas derivate */
#define FIX_1585_ASAN_FORMAT_SW_ALT                     /* VA: float issue 1585: alternative fix memory leaks with format switching */
#define FIX_BASOP_2573_RF_MODE_UPDATE                   /* FhG: BASOP issue 2573: remove duplicated update of rf_mode parameters from evs_enc_fx(); was already done in updt_enc_common_fx() */

/* #################### End BE switches ################################## */

@@ -126,6 +127,7 @@
#define FIX_BASOP_2517_CLICK_IN_OMASA_LTV               /* FhG: BASOP #2517: preserve precision by removing one-bit headroom from Q_min and allowing saturation during buffer scaling */
#define NONBE_FIX_ISSUE_2518                            /* FhG: Fix issue 2518, noise during ACELP switching from 16KHz to 12k8Hz by improving Q_new calculation. */
#define NONBE_FIX_ISSUE_2518_TRANSENC_SAT_FIX           /* FhG: Fix issue 2518, fix wrong amplitude because of saturation of x_tran in transf_cdbk_enc_fx() for transient signals. */
#define NONBE_FIX_ISSUE_2569                            /* FhG: Fix issue 2569, overflow of mem_preemph16k_fx in LTV test. */
#define FIX_BASOP_2559_Q_SYNTH_HISTORY_RESET            /* FhG: BASOP issue 2559: reset hTcxDec->q_synth_history_fx in allocate_CoreCoder_TCX_fx() */
#define FIX_FLOAT_1578_OMASA_REND_SPIKES                /* Nokia: Float issue 1578: Fix spikes and collapsed perception in OMASA/MASA rendering to FOA/HOA */
#define FIX_1521_SBA_LOUDNESS_STEREO                    /* FhG: issue 1521: Fix loudness for SBA to stereo rendering */
+7 −1
Original line number Diff line number Diff line
@@ -76,12 +76,16 @@ ivas_error evs_enc_fx(
    Word16 pitch_orig[3]; /* original open-loop pitch values that might be altered in core_acelp_tcx20_switching_fx() within MODE2 */
#endif
    ivas_error error;
#ifndef FIX_BASOP_2573_RF_MODE_UPDATE
    SC_VBR_ENC_HANDLE hSC_VBR = st->hSC_VBR;
#endif
    TD_CNG_ENC_HANDLE hTdCngEnc = st->hTdCngEnc;
    LPD_state_HANDLE hLPDmem = st->hLPDmem;
    TD_BWE_ENC_HANDLE hBWE_TD = st->hBWE_TD;
    BSTR_ENC_HANDLE hBstr = st->hBstr;
#ifndef FIX_BASOP_2573_RF_MODE_UPDATE
    RF_ENC_HANDLE hRF = st->hRF;
#endif

    error = IVAS_ERR_OK;

@@ -574,12 +578,14 @@ ivas_error evs_enc_fx(
        st->codec_mode = MODE1;
        move16();
    }

    if ( hTdCngEnc->lp_cng_mode2 )
    {
        st->codec_mode = MODE2;
        move16();
    }

#ifndef FIX_BASOP_2573_RF_MODE_UPDATE
    IF( EQ_16( st->rf_mode, 1 ) )
    {
        IF( EQ_16( hRF->rf_frame_type, RF_NELP ) )
@@ -599,7 +605,7 @@ ivas_error evs_enc_fx(
        st->L_frame = L_FRAME;
        st->rf_mode = 1;
    }

#endif
#ifdef DEBUG_MODE_INFO
    dbgwrite( &st->codec_mode, sizeof( short ), 1, input_frame, "res/codec" );
    dbgwrite( &st->core, sizeof( short ), 1, input_frame, "res/core" );
+3 −0
Original line number Diff line number Diff line
@@ -755,6 +755,9 @@ void pre_proc_front_ivas_fx(

    /* Avoid saturation of resampling/delay decimation buffer. */
    shift = s_min( shift, st->q_mem_decim16k_fx );
#ifdef NONBE_FIX_ISSUE_2569
    shift = s_min( shift, add( -1, norm_arr( &st->mem_preemph16k_fx, 1 ) ) );
#endif

    /* Limit Q_new here to st->q_inp because inside ivas_compute_core_buffers_fx() st->input is rescaled to Q_new */
    shift = s_min( shift, st->q_inp );
+18 −0
Original line number Diff line number Diff line
@@ -706,7 +706,11 @@ void pre_proc_ivas_fx(
#ifdef NONBE_FIX_ISSUE_2206
            // L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k + 320 );
            tmp = add( norm_arr( wsp_fx, L_FRAME + L_LOOK_12k8 ), sub( Q15, e_old_wsp ) );
#ifdef NONBE_FIX_ISSUE_2569
            tmp = s_min( tmp, add( norm_arr( &st->mem_wsp_enc, 1 ), sub( Q15, st->exp_buf_wspeech_enc ) ) );
#else
            tmp = s_min( tmp, add( norm_s( st->mem_wsp_enc ), sub( Q15, st->exp_buf_wspeech_enc ) ) );
#endif
            tmp = s_min( tmp, add( norm_arr( st->buf_wspeech_enc, (Word16) ( st->wspeech_enc - st->buf_wspeech_enc ) ), sub( Q15, st->exp_buf_wspeech_enc ) ) );
            tmp = s_min( tmp, add( norm_arr( st->wspeech_enc + L_FRAME + L_LOOK_12k8, /* L_NEXT_MAX_16k + */ 320 ), sub( Q15, st->exp_buf_wspeech_enc ) ) );
            tmp = s_min( Q15, tmp );
@@ -1271,7 +1275,19 @@ void ivas_compute_core_buffers_fx(
            IF( EQ_16( st->L_frame, L_FRAME16k ) )
            {
#ifdef NONBE_FIX_ISSUE_2206
#ifdef NONBE_FIX_ISSUE_2569
                Word16 buf_speech_enc_q;

                buf_speech_enc_q = s_min( sub( Q15, st->exp_buf_speech_enc ), Q_old_inp_16k );
                Copy_Scale_sig_nosat( new_inp_16k_fx - lMemRecalc_16k, st->buf_speech_enc + sub( L_FRAME16k - L_FILT16k, lMemRecalc_16k ), add( lMemRecalc_16k, L_FRAME16k + L_FILT16k ), sub( buf_speech_enc_q, Q_old_inp_16k ) );
                // L_PAST_MAX_32k + L_FRAME32k + L_NEXT_MAX_32k
                scale_sig( st->buf_speech_enc, sub( L_FRAME16k - L_FILT16k, lMemRecalc_16k ), sub( buf_speech_enc_q, sub( Q15, st->exp_buf_speech_enc ) ) );
                scale_sig( st->buf_speech_enc + L_FRAME16k + L_FRAME16k, L_PAST_MAX_32k + L_NEXT_MAX_32k, sub( buf_speech_enc_q, sub( Q15, st->exp_buf_speech_enc ) ) );
                st->exp_buf_speech_enc = sub( Q15, buf_speech_enc_q );
                move16();
#else
                Copy_Scale_sig_nosat( new_inp_16k_fx - lMemRecalc_16k, st->buf_speech_enc + sub( L_FRAME16k - L_FILT16k, lMemRecalc_16k ), add( lMemRecalc_16k, L_FRAME16k + L_FILT16k ), sub( sub( Q15, st->exp_buf_speech_enc ), Q_old_inp_16k ) ); /* Q_new - 1 */
#endif
#else
                Copy( new_inp_16k_fx - lMemRecalc_16k, st->buf_speech_enc + sub( L_FRAME16k - L_FILT16k, lMemRecalc_16k ), add( lMemRecalc_16k, L_FRAME16k + L_FILT16k ) ); /* Q_new - 1 */
#endif
@@ -1320,8 +1336,10 @@ void ivas_compute_core_buffers_fx(
        shift = s_min( shift, norm_arr( old_inp_16k_fx, (Word16) ( preemp_start_idx - old_inp_16k_fx ) ) );
        shift = add( shift, Q_old_inp_16k );

#ifndef NONBE_FIX_ISSUE_2569
        /* Avoid saturation of resampling/delay decimation buffer. */
        shift = s_min( shift, add( st->q_mem_decim16k_fx, 1 ) );
#endif

        IF( st->hLPDmem != NULL )
        {
+4 −1
Original line number Diff line number Diff line
@@ -55,9 +55,12 @@ void updt_enc_fx(
        tmp = s_min( tmp, norm_arr( hLPDmem->mem_syn2, M ) );
        tmp = s_min( tmp, norm_arr( hLPDmem->mem_syn3, M ) );
        tmp = s_min( tmp, norm_arr( hLPDmem->mem_syn_r, L_SYN_MEM ) );
#ifdef NONBE_FIX_ISSUE_2569
        tmp = s_min( tmp, norm_arr( &hLPDmem->mem_w0, 1 ) );
#else
        tmp = s_min( tmp, norm_s( hLPDmem->mem_w0 ) );
#endif
        tmp = s_min( tmp, sub( 15, hLPDmem->q_mem_syn ) );
        // tmp = sub( tmp, 1 );
        scale_sig( hLPDmem->mem_syn, M, tmp );
        scale_sig( hLPDmem->mem_syn1_fx, M, tmp );
        scale_sig( hLPDmem->mem_syn2, M, tmp );