Commit 57f7aa7b authored by Arash Azizi's avatar Arash Azizi
Browse files

issue: 2480 Harmonizing Function tonalMDCTConceal_Detect_fx()

parent a6b0e09b
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -89,7 +89,7 @@
#define FIX_2455_HARMONIZE_generate_comfort_noise_enc   /* FhG: harmonize generate_comfort_noise_enc and generate_comfort_noise_enc_ivas */
#define FIX_2455_HARMONIZE_configureFdCngEnc            /* FhG: harmonize generate_comfort_noise_enc and generate_comfort_noise_enc_ivas */
#define FIX_2463_EVS_BWE_LSF                            /* VA: basop issue 2463: harmonize calling of Quant_BWE_LSF_fx() */

#define FIX_2480_HARM_TONALMDCT                         /* FhG: basop issue 2480 Harmonize TonalMDCTConceal_Detect_fx() and TonalMDCTConceal_Detect_ivas_fx()*/

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

+5 −1
Original line number Diff line number Diff line
@@ -455,7 +455,11 @@ Word16 GetPLCModeDecision_fx(
                    }
                    ELSE
                    {
#ifndef FIX_2480_HARM_TONALMDCT
                        TonalMDCTConceal_Detect_fx(st->hTonalMDCTConc, pitch, &numIndices, st->element_mode);
#else
                        TonalMDCTConceal_Detect_ivas_fx(st->hTonalMDCTConc, pitch, &numIndices, NULL, st->element_mode);
#endif // !FIX_2480_HARM_TONALMDCT
                    }

                    test();
+128 −29
Original line number Diff line number Diff line
@@ -1061,22 +1061,47 @@ void TonalMDCTConceal_Detect_ivas_fx(
    Word16 element_mode )
{
    Word32 secondLastMDST[L_FRAME_MAX];

#ifndef FIX_2480_HARM_TONALMDCT
    set32_fx(secondLastMDST, 0, L_FRAME_MAX);
#else
    IF(NE_16(element_mode, EVS_MONO)) {
        set32_fx(secondLastMDST, 0, L_FRAME_MAX);
    }
#endif // !FIX_2480_HARM_TONALMDCT

    Word32 secondLastMDCT[L_FRAME_MAX];
    Word16 secondLastMDCT_exp;
    Word32 *powerSpectrum = secondLastMDST;
    Word16 i, powerSpectrum_exp, secondLastMDST_exp, s;
    Word16 nSamples;
    // Word16 nBands;
    Word32 sns_int_scf_fx[FDNS_NPTS];
    set32_fx(sns_int_scf_fx, 0, FDNS_NPTS);


    nSamples = hTonalMDCTConc->nSamples;
    move16();

#ifndef FIX_2480_HARM_TONALMDCT
    secondLastMDST_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/
    move16();
    secondLastMDCT_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/
    move16();
#else
    IF(EQ_16(element_mode, EVS_MONO)) {
        secondLastMDST_exp = 16; /*time signal Q-1*/
        move16();
        secondLastMDCT_exp = 16; /*time signal Q-1*/
        move16();
    }
    ELSE{
        secondLastMDST_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/
        move16();
        secondLastMDCT_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/
        move16();
    }
#endif // !FIX_2480_HARM_TONALMDCT

    test();
    test();
    test();
@@ -1108,8 +1133,14 @@ void TonalMDCTConceal_Detect_ivas_fx(
                move16();
                nSamples = hTonalMDCTConc->nNonZeroSamples;
                move16();

#ifndef FIX_2480_HARM_TONALMDCT
                s = sub(getScaleFactor32(secondLastMDST, nSamples), 1);
#else
                s = getScaleFactor32(secondLastMDST, nSamples);
                IF(NE_16(element_mode, EVS_MONO)) {
                    s = sub(s, 1);
                }
#endif // !FIX_2480_HARM_TONALMDCT

                FOR( i = 0; i < nSamples; i++ )
                {
@@ -1118,7 +1149,14 @@ void TonalMDCTConceal_Detect_ivas_fx(
                }
                secondLastMDST_exp = sub( secondLastMDST_exp, s );
                move16();
#ifndef FIX_2480_HARM_TONALMDCT
                s = sub(getScaleFactor32(secondLastMDCT, nSamples), 1);
#else
                s = getScaleFactor32(secondLastMDCT, nSamples);
                IF(NE_16(element_mode, EVS_MONO)) {
                    s = sub(s, 1);
                }
#endif // !FIX_2480_HARM_TONALMDCT

                FOR( i = 0; i < nSamples; i++ )
                {
@@ -1127,7 +1165,16 @@ void TonalMDCTConceal_Detect_ivas_fx(
                }
                secondLastMDCT_exp = sub( secondLastMDCT_exp, s );
                move16();
#ifndef FIX_2480_HARM_TONALMDCT
                CalcPowerSpecAndDetectTonalComponents_fx(hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, psychParamsCurrent, element_mode);
#else
                IF(EQ_16(element_mode, EVS_MONO)) {
                    CalcPowerSpecAndDetectTonalComponents_fx(hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, NULL, element_mode);
                }
                ELSE{
                    CalcPowerSpecAndDetectTonalComponents_fx(hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, psychParamsCurrent, element_mode);
                }
#endif // !FIX_2480_HARM_TONALMDCT            
            }
            ELSE
            {
@@ -1136,8 +1183,15 @@ void TonalMDCTConceal_Detect_ivas_fx(
                Word16 temp_power_spectrum_q = 0;
                nSamples = hTonalMDCTConc->nNonZeroSamples;
                move16();
#ifndef FIX_2480_HARM_TONALMDCT
                Copy_Scale_sig_16_32_DEPREC(hTonalMDCTConc->secondLastPowerSpectrum, powerSpectrum, nSamples, Q15);
                temp_power_spectrum_q = add(Q15, sub(15, hTonalMDCTConc->secondLastPowerSpectrum_exp));
#else
                IF(NE_16(element_mode, EVS_MONO)) {
                    Copy_Scale_sig_16_32_DEPREC(hTonalMDCTConc->secondLastPowerSpectrum, powerSpectrum, nSamples, Q15);
                    temp_power_spectrum_q = add(Q15, sub(15, hTonalMDCTConc->secondLastPowerSpectrum_exp));
                }
#endif // !FIX_2480_HARM_TONALMDCT
                IF( psychParamsCurrent == NULL )
                {
                    mdct_shaping_16( hTonalMDCTConc->secondLastPowerSpectrum, hTonalMDCTConc->nSamplesCore, nSamples,
@@ -1175,7 +1229,47 @@ void TonalMDCTConceal_Detect_ivas_fx(
                    }
                    powerSpectrum_exp = sub( 31, sub( shl( sub( Q31 - 3, powerSpectrum_exp ), 1 ), 31 ) );
                }

#ifndef FIX_2480_HARM_TONALMDCT
                    RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak,
                        (Word16*)hTonalMDCTConc->pTCI->lowerIndex,
                        (Word16*)hTonalMDCTConc->pTCI->upperIndex,
                        hTonalMDCTConc->pTCI->phaseDiff,
                        hTonalMDCTConc->pTCI->phase_currentFramePredicted,
                        (Word16*)&hTonalMDCTConc->pTCI->numIndexes,
                        hTonalMDCTConc->lastPitchLag,
                        pitchLag,
                        hTonalMDCTConc->lastBlockData.spectralData,
                        add(hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp),
                        hTonalMDCTConc->lastBlockData.scaleFactors,
                        hTonalMDCTConc->lastBlockData.scaleFactors_exp,
                        hTonalMDCTConc->lastBlockData.scaleFactors_max_e,
                        powerSpectrum,
                        powerSpectrum_exp,
                        nSamples,
                        hTonalMDCTConc->nSamplesCore,
                        extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, psychParamsCurrent); /* floorPowerSpectrum */
#else
                IF(EQ_16(element_mode, EVS_MONO)) {
                    RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak,
                        (Word16*)hTonalMDCTConc->pTCI->lowerIndex,
                        (Word16*)hTonalMDCTConc->pTCI->upperIndex,
                        hTonalMDCTConc->pTCI->phaseDiff,
                        hTonalMDCTConc->pTCI->phase_currentFramePredicted,
                        (Word16*)&hTonalMDCTConc->pTCI->numIndexes,
                        hTonalMDCTConc->lastPitchLag,
                        pitchLag,
                        hTonalMDCTConc->lastBlockData.spectralData,
                        add(hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp),
                        hTonalMDCTConc->lastBlockData.scaleFactors,
                        hTonalMDCTConc->lastBlockData.scaleFactors_exp,
                        hTonalMDCTConc->lastBlockData.scaleFactors_max_e,
                        powerSpectrum,
                        -1,
                        nSamples,
                        hTonalMDCTConc->nSamplesCore,
                        extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, NULL);
                }
                ELSE{
                    RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak,
                        (Word16*)hTonalMDCTConc->pTCI->lowerIndex,
                        (Word16*)hTonalMDCTConc->pTCI->upperIndex,
@@ -1195,6 +1289,11 @@ void TonalMDCTConceal_Detect_ivas_fx(
                        hTonalMDCTConc->nSamplesCore,
                        extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, psychParamsCurrent); /* floorPowerSpectrum */
                }

#endif // !FIX_2480_HARM_TONALMDCT

                
            }
        }
    }
    ELSE