Commit 4e094d57 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch '3gpp_issue_1801_fix' into 'main'

[allow-regression] FIX for issue #1801 : MC 7_1 Decoding to binaural introduces high noise floor for band-limited content

See merge request !1870
parents fba299f6 2054c485
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -123,4 +123,5 @@
#define FIX_ISSUE_1795_Q3_OVERFLOW              /* FhG: Q3 overflow in function WB_BWE_gain_pred_fx (EVS legacy code) BE, MR1855 */
#define NONBE_FIX_1748_SPAR_DIV_OPT                      /*Dlb: issue 1748: SPAR common div optimizations*/

#define FIX_ISSUE_1801_NOISE_FLOOR_REDUCTION    /* FhG: Fixed getScalefactor usage */
#endif
+16 −1
Original line number Diff line number Diff line
@@ -375,22 +375,37 @@ ivas_error ivas_mct_dec_fx(
        Copy_Scale_sig_16_32_no_sat( hCPE->hCoreCoder[0]->old_Aq_12_8_fx, hCPE->hCoreCoder[0]->old_Aq_12_8_fx_32, add( M, 1 ), sub( 28, sub( 15, norm_s( sub( hCPE->hCoreCoder[0]->old_Aq_12_8_fx[0], 1 ) ) ) ) );
        Copy_Scale_sig_16_32_no_sat( hCPE->hCoreCoder[1]->old_Aq_12_8_fx, hCPE->hCoreCoder[1]->old_Aq_12_8_fx_32, add( M, 1 ), sub( 28, sub( 15, norm_s( sub( hCPE->hCoreCoder[1]->old_Aq_12_8_fx[0], 1 ) ) ) ) );
        ivas_mdct_core_reconstruct_fx( hCPE, x_fx, synth_fx, fUseTns[cpe_id], 1, q_output, e_sig );

#ifdef FIX_ISSUE_1801_NOISE_FLOOR_REDUCTION
        Word16 hdrm;
#else
        Word16 hdrm, sh;
#endif
        hdrm = getScaleFactor16( synth_fx[0], hCPE->hCoreCoder[0]->hTcxDec->L_frameTCX );
        IF( hdrm != 0 )
        {
#ifdef FIX_ISSUE_1801_NOISE_FLOOR_REDUCTION
            hdrm = sub( hdrm, 1 );
            Scale_sig( synth_fx[0], hCPE->hCoreCoder[0]->hTcxDec->L_frameTCX, hdrm );
            e_sig[0] = sub( e_sig[0], hdrm );
#else
            sh = s_min( sub( e_sig[0], 16 ), hdrm );
            Scale_sig( synth_fx[0], hCPE->hCoreCoder[0]->hTcxDec->L_frameTCX, sh );
            e_sig[0] = sub( e_sig[0], sh );
#endif
            move16();
        }
        hdrm = getScaleFactor16( synth_fx[1], hCPE->hCoreCoder[0]->hTcxDec->L_frameTCX );
        IF( hdrm != 0 )
        {
#ifdef FIX_ISSUE_1801_NOISE_FLOOR_REDUCTION
            hdrm = sub( hdrm, 1 );
            Scale_sig( synth_fx[1], hCPE->hCoreCoder[1]->hTcxDec->L_frameTCX, hdrm );
            e_sig[1] = sub( e_sig[1], hdrm );
#else
            sh = s_min( sub( e_sig[1], 16 ), hdrm );
            Scale_sig( synth_fx[1], hCPE->hCoreCoder[1]->hTcxDec->L_frameTCX, sh );
            e_sig[1] = sub( e_sig[1], sh );
#endif
            move16();
        }