Commit 959de23e authored by multrus's avatar multrus
Browse files

[cleanup] accept FIX_MDCT_STEREO_ENC_STACK

parent 803c4d53
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -83,7 +83,6 @@
#define FIX_1990_SANITIZER_IN_REVERB_LOAD               /* Nokia: Fix issue part of issue 1990 by introducing missing free of structure - keep until #2059 is addressed */
#define TMP_1342_WORKAROUND_DEC_FLUSH_BROKEN_IN_SR      /* FhG: Temporary workaround for incorrect implementation of decoder flush with split rendering */
#define NONBE_1122_KEEP_EVS_MODE_UNCHANGED              /* FhG: Disables fix for issue 1122 in EVS mode to keep BE tests green. This switch should be removed once the 1122 fix is added to EVS via a CR.  */
#define FIX_MDCT_STEREO_ENC_STACK                       /* VA: basop issue 2428: Move IGF temporary buffers out of the highest stack */
#define HARMONIZE_TBE3                                  /* VA: basop issue 2399: Remove duplicated code: TBE, step 3 */
#define FIX_2459_USAN_AMR_SIDSTART                      /* FhG: basop issue 2459: fix msan complaint */
#define FIX_2458_USAN_NULLPTR_WITH_ZERO_OFFSET          /* FhG: basop issue 2458: avoid indexing into null pointer */
+0 −2
Original line number Diff line number Diff line
@@ -9892,7 +9892,6 @@ void ProcessStereoIGF_fx(
    const Word32 element_brate,                             /* i  : element bitrate                         */
    const Word16 mct_on );

#ifdef FIX_MDCT_STEREO_ENC_STACK
void ProcessStereoIGF_fx_64(
    STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct,
    Encoder_State *sts[CPE_CHANNELS],                       /* i  : Encoder state                           */
@@ -9910,7 +9909,6 @@ void ProcessStereoIGF_fx_64(
    const Word16 mct_on                                     /* i  : flag MCT mode                           */
);

#endif
void IGFEncApplyStereo_fx(
    STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct,                /* i/o: MDCT stereo encoder structure           */
    Word16 ms_mask[2][MAX_SFB],                             /* i  : bandwise MS mask                        */
+0 −157
Original line number Diff line number Diff line
@@ -402,11 +402,7 @@ void stereo_mdct_core_enc_fx(
     * Power spectrum calculation
     *---------------------------------------------------------------*/

#ifdef FIX_MDCT_STEREO_ENC_STACK
    Word16 exp, shift1, shift2, norm;
#else
    Word16 length, exp, shift1, shift2, norm;
#endif
    Word32 mdct, mdst, imdct, imdst;

    FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
@@ -581,47 +577,6 @@ void stereo_mdct_core_enc_fx(
                IF( ( NE_16( hStereoMdct->mdct_stereo_mode[n], hStereoMdct->IGFStereoMode[n] ) || EQ_16( hStereoMdct->mdct_stereo_mode[n], SMDCT_BW_MS ) ) && !hStereoMdct->isSBAStereoMode )
                {
                    IGF_ENC_INSTANCE_HANDLE hIGFEnc[CPE_CHANNELS];
#ifndef FIX_MDCT_STEREO_ENC_STACK
                    Word32 powerSpec_fx[CPE_CHANNELS][N_MAX], *p_powerSpec_fx[CPE_CHANNELS];
                    Word16 exp_powSpec[CPE_CHANNELS][N_MAX], *p_exp_powSpec[CPE_CHANNELS];
                    p_powerSpec_fx[0] = powerSpec_fx[0];
                    p_exp_powSpec[0] = exp_powSpec[0];
                    p_powerSpec_fx[1] = powerSpec_fx[1];
                    p_exp_powSpec[1] = exp_powSpec[1];
                    {
                        /* Copy powerSpec values from 64 bit buffer to 32 bit buffer */
                        FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
                        {
                            Word16 n1, nsub = 1;
                            length = sts[ch]->hTcxEnc->L_frameTCX;
                            move16();
                            move16();
                            IF( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) )
                            {
                                length = shr( sts[ch]->hTcxEnc->L_frameTCX, 1 );
                                nsub = NB_DIV;
                                move16();
                            }
                            IF( EQ_16( sts[ch]->last_core, ACELP_CORE ) )
                            {
                                length = add( length, shr( length, 2 ) );
                            }
                            FOR( n1 = 0; n1 < nsub; n1++ )
                            {
                                FOR( i = 0; i < length; i++ )
                                {
                                    /* This doesn't result in saturation */
                                    shift1 = W_norm( powerSpec64[ch][i + n1 * length] );
                                    powerSpec_fx[ch][i + n1 * length] = W_extract_h( W_shl( powerSpec64[ch][i + n1 * length], shift1 ) ); // exp: exp
                                    move32();
                                    exp_powSpec[ch][i + n1 * length] = sub( exp_powerSpec64[ch][n1], shift1 );
                                }
                            }
                            set32_fx( powerSpec_fx[ch] + length, 0, sub( N_MAX, length ) );
                            set16_fx( exp_powSpec[ch] + length, 0, sub( N_MAX, length ) );
                        }
                    }
#endif
                    hIGFEnc[0] = sts[0]->hIGFEnc;
                    hIGFEnc[1] = sts[1]->hIGFEnc;
                    hIGFEnc[0]->spec_be_igf_e = p_orig_spectrum_e[0];
@@ -629,56 +584,12 @@ void stereo_mdct_core_enc_fx(
                    move16();
                    move16();

#ifdef FIX_MDCT_STEREO_ENC_STACK
                    ProcessStereoIGF_fx_64( hStereoMdct, sts, ms_mask, orig_spectrum_fx, powerSpec64, exp_powerSpec64,
                                            powerSpecMsInv_fx, q_powerSpecMsInv_fx, inv_spectrum_fx, exp_inv_spectrum,
                                            n, hCPE->hCoreCoder[0]->sp_aud_decision0, hCPE->hCoreCoder[0]->element_brate, 0 );
#else
                    ProcessStereoIGF_fx( hStereoMdct, sts, ms_mask, orig_spectrum_fx, sub( Q31, p_orig_spectrum_e[0] ), sub( Q31, p_orig_spectrum_e[1] ),
                                         p_powerSpec_fx, p_exp_powSpec, powerSpecMsInv_fx, q_powerSpecMsInv_fx, inv_spectrum_fx, exp_inv_spectrum,
                                         n, hCPE->hCoreCoder[0]->sp_aud_decision0, hCPE->hCoreCoder[0]->element_brate, 0 );
#endif
                }
                ELSE
                {
#ifndef FIX_MDCT_STEREO_ENC_STACK
                    Word32 powerSpec_fx[CPE_CHANNELS][N_MAX]; // each value has a different exponent
                    Word16 exp_powerSpec[CPE_CHANNELS][N_MAX];
                    {
                        /* Copy powerSpec values from 64 bit buffer to 32 bit buffer */
                        FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
                        {
                            Word16 n1, nsub;
                            nsub = 1;
                            length = sts[ch]->hTcxEnc->L_frameTCX;
                            move16();
                            move16();
                            IF( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) )
                            {
                                length = shr( sts[ch]->hTcxEnc->L_frameTCX, 1 );
                                nsub = NB_DIV;
                                move16();
                            }
                            IF( EQ_16( sts[ch]->last_core, ACELP_CORE ) )
                            {
                                length = add( length, shr( length, 2 ) );
                            }
                            FOR( n1 = 0; n1 < nsub; n1++ )
                            {
                                FOR( i = 0; i < length; i++ )
                                {
                                    norm = W_norm( powerSpec64[ch][i + n1 * length] );
                                    powerSpec_fx[ch][i + n1 * length] = W_extract_h( W_shl( powerSpec64[ch][i + n1 * length], norm ) ); // exp = exp_powerSpec64[ch][n1]-norm
                                    exp_powerSpec[ch][i + n1 * length] = sub( exp_powerSpec64[ch][n1], norm );
                                    move32();
                                    move16();
                                }
                            }
                            set32_fx( powerSpec_fx[ch] + length, 0, sub( N_MAX, length ) );
                            set16_fx( exp_powerSpec[ch] + length, 0, sub( N_MAX, length ) );
                        }
                    }
#endif
                    FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
                    {
                        st = sts[ch];
@@ -687,66 +598,13 @@ void stereo_mdct_core_enc_fx(
                        {
                            st->hBstr->ind_list = sts[0]->hBstr->ind_list + sts[0]->hBstr->nb_ind_tot;
                        }
#ifdef FIX_MDCT_STEREO_ENC_STACK
                        ProcessIGF_ivas_fx_64( st, N_MAX, st->hTcxEnc->spectrum_fx[n], orig_spectrum_fx[ch][n], p_orig_spectrum_e[ch], powerSpec64[ch], exp_powerSpec64[ch], n, hCPE->hCoreCoder[0]->sp_aud_decision0 );
#else
                        L_subframeTCX = idiv1616( st->hTcxEnc->L_frameTCX, nSubframes ); /* Q0 */
                        Word16 q_spectrum;
                        q_spectrum = sub( Q31, p_orig_spectrum_e[ch] );
                        IF( st->hIGFEnc )
                        {
                            q_spectrum = s_min( q_spectrum, sub( Q31, st->hIGFEnc->spec_be_igf_e ) );
                        }

                        q_spectrum = sub( Q31, st->hTcxEnc->spectrum_e[n] );

                        Scale_sig32( orig_spectrum_fx[ch][n], st->hIGFEnc->infoStopLine, sub( q_spectrum, sub( Q31, p_orig_spectrum_e[ch] ) ) ); /* q_spectrum */
                        ProcessIGF_ivas_fx( st, N_MAX, st->hTcxEnc->spectrum_fx[n], &q_spectrum, orig_spectrum_fx[ch][n], q_spectrum, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, hCPE->hCoreCoder[0]->sp_aud_decision0, 0 );
#endif
                    }
                }
            }
        }
        ELSE
        {
#ifndef FIX_MDCT_STEREO_ENC_STACK
            Word32 powerSpec_fx[CPE_CHANNELS][N_MAX]; // each value has a different exponent
            Word16 exp_powerSpec[CPE_CHANNELS][N_MAX + L_MDCT_OVLP_MAX];
            {
                /* Copy powerSpec values from 64 bit buffer to 32 bit buffer */
                FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
                {
                    Word16 n1, nsub;
                    nsub = 1;
                    length = sts[ch]->hTcxEnc->L_frameTCX;
                    move16();
                    move16();
                    IF( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) )
                    {
                        length = shr( sts[ch]->hTcxEnc->L_frameTCX, 1 );
                        nsub = NB_DIV;
                        move16();
                    }
                    IF( EQ_16( sts[ch]->last_core, ACELP_CORE ) )
                    {
                        length = add( length, shr( length, 2 ) );
                    }
                    FOR( n1 = 0; n1 < nsub; n1++ )
                    {
                        FOR( i = 0; i < length; i++ )
                        {
                            norm = W_norm( powerSpec64[ch][i + n1 * length] );
                            powerSpec_fx[ch][i + n1 * length] = W_extract_h( W_shl( powerSpec64[ch][i + n1 * length], norm ) ); // exp = exp_powerSpec64[ch][n1]-norm
                            exp_powerSpec[ch][i + n1 * length] = sub( exp_powerSpec64[ch][n1], norm );
                            move32();
                            move16();
                        }
                    }
                    set32_fx( powerSpec_fx[ch] + length, 0, sub( N_MAX, length ) );
                    set16_fx( exp_powerSpec[ch] + length, 0, sub( N_MAX + L_MDCT_OVLP_MAX, length ) );
                }
            }
#endif
            FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
            {
                st = sts[ch];
@@ -769,22 +627,7 @@ void stereo_mdct_core_enc_fx(
                {
                    FOR( n = 0; n < nSubframes; n++ )
                    {
#ifdef FIX_MDCT_STEREO_ENC_STACK
                        ProcessIGF_ivas_fx_64( st, N_MAX, st->hTcxEnc->spectrum_fx[n], orig_spectrum_fx[ch][n], p_orig_spectrum_e[ch], powerSpec64[ch], exp_powerSpec64[ch], n, hCPE->hCoreCoder[0]->sp_aud_decision0 );
#else
                        Word16 q_spectrum;
                        L_subframeTCX = idiv1616( st->hTcxEnc->L_frameTCX, nSubframes ); /* Q0 */
                        q_spectrum = sub( Q31, p_orig_spectrum_e[ch] );
                        IF( st->hIGFEnc )
                        {
                            q_spectrum = s_min( q_spectrum, sub( Q31, st->hIGFEnc->spec_be_igf_e ) );
                        }

                        q_spectrum = sub( Q31, st->hTcxEnc->spectrum_e[n] );

                        Scale_sig32( orig_spectrum_fx[ch][n], st->hIGFEnc->infoStopLine, sub( q_spectrum, sub( Q31, p_orig_spectrum_e[ch] ) ) ); /* q_spectrum */
                        ProcessIGF_ivas_fx( st, N_MAX, st->hTcxEnc->spectrum_fx[n], &q_spectrum, orig_spectrum_fx[ch][n], q_spectrum, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, hCPE->hCoreCoder[0]->sp_aud_decision0, 0 );
#endif
                    }
                }
            }
+0 −2
Original line number Diff line number Diff line
@@ -1055,7 +1055,6 @@ void ProcessIGF_ivas_fx(
    const Word16 vad_hover_flag     /* i  : VAD hangover flag                                       */
);

#ifdef FIX_MDCT_STEREO_ENC_STACK
void ProcessIGF_ivas_fx_64(
    Encoder_State *st,              /* i/o: Encoder state                                         */
    const Word16 powerSpec_len,     /* i  : length of pPowerSpectrum buffer                       */
@@ -1068,7 +1067,6 @@ void ProcessIGF_ivas_fx_64(
    const Word16 sp_aud_decision0   /* i  : first stage switching decision                        */
);

#endif
void ProcessIGF_fx(
    IGF_ENC_INSTANCE_HANDLE const hInstance, /**< in: instance handle of IGF Encoder */
    Encoder_State *st,                       /**< in: Encoder state */
+0 −2
Original line number Diff line number Diff line
@@ -4100,7 +4100,6 @@ void ProcessStereoIGF_fx(
    return;
}

#ifdef FIX_MDCT_STEREO_ENC_STACK
/*---------------------------------------------------------------------*
 * ProcessIGF_ivas_fx_64()
 *
@@ -4251,4 +4250,3 @@ void ProcessStereoIGF_fx_64(

    return;
}
#endif