Commit d6df0dc8 authored by emerit's avatar emerit
Browse files

Merge branch 'main' into...

Merge branch 'main' into Float-1134-BRIR-Level-differences-between-MC-rendering-to-stereo-and-binaural
parents 02796b89 9db396b3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -127,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 */
+25 −3
Original line number Diff line number Diff line
@@ -2241,6 +2241,8 @@ static void IGF_CalculateEnvelope_ivas_fx(
                        sfbEnergyTileR_e = 0;
                        move16();
                        move16();
                        zeroNrg = 1;
                        move16();
                    }
                    BASOP_Util_Divide_MantExp( round_fx_sat( sfbEnergyTileR ), sfbEnergyTileR_e, width, 15, &sfbEnergyTileR16, &sfbEnergyTileR_e );

@@ -2265,6 +2267,13 @@ static void IGF_CalculateEnvelope_ivas_fx(
                    sfbEnergyC_e = 0;
                    move32();
                    move16();
#ifdef FIX_2346_DUPLICATED_IGF_FUNCTIONS_2
                    IF( element_mode == EVS_MONO )
                    {
                        zeroNrg = 1;
                        move16();
                    }
#endif
                }
                IF( sfbEnergyTileC == 0 )
                {
@@ -2274,8 +2283,21 @@ static void IGF_CalculateEnvelope_ivas_fx(
                    sfbEnergyTileC = EPSILON_FX;
#endif
                    sfbEnergyTileC_e = 0;
#ifdef FIX_2346_DUPLICATED_IGF_FUNCTIONS_2
                    IF( element_mode > EVS_MONO )
                    {
#endif
                        temp = BASOP_Util_Divide3232_Scale( sfbEnergyC, sfbEnergyTileC, &tmp_e );
                        tmp_e = add( tmp_e, sub( sfbEnergyC_e, sfbEnergyTileC_e ) );
#ifdef FIX_2346_DUPLICATED_IGF_FUNCTIONS_2
                    }
                    ELSE
                    {
                        BASOP_Util_Divide_MantExp( round_fx_sat( sfbEnergyC ), sfbEnergyC_e, round_fx_sat( sfbEnergyTileC ), sfbEnergyTileC_e, &tmp, &tmp_e );
                        zeroNrg = 1;
                        move16();
                    }
#endif
                    move32();
                    move16();
                }
@@ -2681,7 +2703,7 @@ static void IGF_CalculateEnvelope_ivas_fx(

                    IF( sfbEnergyR == 0 )
                    {
                        sfbEnergyR = EPSILON_FX;
                        sfbEnergyR = 0x00010000;
                        move32();
                        sfbEnergyR_e = 0;
                        move16();
+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 );