Commit a7b5b1eb authored by Fabian Bauer's avatar Fabian Bauer
Browse files

simplify harmonized tonalconcealinit

parent 7de6eb0b
Loading
Loading
Loading
Loading
Loading
+46 −187
Original line number Diff line number Diff line
@@ -129,29 +129,11 @@ ivas_error TonalMDCTConceal_Init_ivas_fx(
    TCX_CONFIG_HANDLE hTcxCfg )
{

#if defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit ) || defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage1 )
    /*Common Part 1*/
    test();
    IF( GT_16( nSamples, L_FRAME_MAX ) || GT_16( nScaleFactors, FDNS_NPTS ) )
    {
        assert( nSamples <= L_FRAME_MAX );
        assert( nScaleFactors <= FDNS_NPTS );
        return ( IVAS_ERROR( IVAS_ERR_INTERNAL, "TonalMDCT FEC: Number of samples larger than max. block size\n" ) );
    }
    assert( ( hTonalMDCTConc->nScaleFactors == nScaleFactors ) || ( hTonalMDCTConc->nSamples != nSamples ) ); /* If nSamples doesn't change then also nScaleFactors must stay the same */

    hTonalMDCTConc->tcx_cfg = hTcxCfg;

    hTonalMDCTConc->lastBlockData.spectralData = hTonalMDCTConc->spectralDataBuffers[0];
    move16();
#endif /*defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit ) || defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage1 )*/


#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit
    IF( EQ_16( element_mode, EVS_MONO ) )
    {
        /*EVS*/
#if !defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage1 ) && !defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit )

        /*Common Part 1*/
        test();
        IF( GT_16( nSamples, L_FRAME_MAX ) || GT_16( nScaleFactors, FDNS_NPTS ) )
@@ -166,7 +148,7 @@ ivas_error TonalMDCTConceal_Init_ivas_fx(

        hTonalMDCTConc->lastBlockData.spectralData = hTonalMDCTConc->spectralDataBuffers[0];
        move16();
#endif /*!defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage1 ) && !defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit )*/

        /*Start EVS-only*/
        hTonalMDCTConc->secondLastBlockData.spectralData = hTonalMDCTConc->spectralDataBuffers[1];
        move16();
@@ -178,52 +160,7 @@ ivas_error TonalMDCTConceal_Init_ivas_fx(
        hTonalMDCTConc->secondLastBlockData.scaleFactors = hTonalMDCTConc->scaleFactorsBuffers[1];
        move16();
        /*Stop EVS-only*/
    }
#endif /*#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit*/

#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit
    IF( GT_16( element_mode, EVS_MONO ) )
    {
#endif  /*#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit*/
        /*IVAS*/

        /*SEPARATE IVAS CODE*/
#if !defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage1 ) && !defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit )
        /*Common Part 1*/
        test();
        IF( GT_16( nSamples, L_FRAME_MAX ) || GT_16( nScaleFactors, FDNS_NPTS ) )
        {
            assert( LE_16( nSamples, L_FRAME_MAX ) );
            assert( LE_16( nScaleFactors, FDNS_NPTS ) );
            return ( IVAS_ERROR( IVAS_ERR_INTERNAL, "TonalMDCT FEC: Number of samples larger than max. block size\n" ) );
        }
        assert( EQ_16( hTonalMDCTConc->nScaleFactors, nScaleFactors ) || NE_16( hTonalMDCTConc->nSamples, nSamples ) ); /* If nSamples doesn't change then also nScaleFactors must stay the same */

        hTonalMDCTConc->tcx_cfg = hTcxCfg;
        hTonalMDCTConc->lastBlockData.spectralData = hTonalMDCTConc->spectralDataBuffers[0];
#endif /*!defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage1 ) && !defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit )*/
        /*Start IVAS-only*/
        set16_fx( hTonalMDCTConc->lastBlockData.spectralData, 0, L_FRAME_MAX );
        move16();
        hTonalMDCTConc->secondLastBlockData.spectralData = hTonalMDCTConc->spectralDataBuffers[1];
        set16_fx( hTonalMDCTConc->secondLastBlockData.spectralData, 0, L_FRAME_MAX );
        move16();
        hTonalMDCTConc->secondLastPowerSpectrum = hTonalMDCTConc->secondLastBlockData.spectralData;
        move16();
        hTonalMDCTConc->secondLastPowerSpectrum_exp = hTonalMDCTConc->secondLastBlockData.spectralData_exp;
        move16();
        hTonalMDCTConc->lastBlockData.scaleFactors = hTonalMDCTConc->scaleFactorsBuffers[0];
        set16_fx( hTonalMDCTConc->lastBlockData.scaleFactors, 0, FDNS_NPTS );
        move16();
        hTonalMDCTConc->secondLastBlockData.scaleFactors = hTonalMDCTConc->scaleFactorsBuffers[1];
        set16_fx( hTonalMDCTConc->secondLastBlockData.scaleFactors, 0, FDNS_NPTS );
        move16();
        /*Stop IVAS-only*/
#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit
    }
#endif /*#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit*/

#if defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit ) || defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage2 )
        /*Common Part 2*/
        hTonalMDCTConc->lastBlockData.scaleFactors_exp = hTonalMDCTConc->scaleFactorsBuffers_exp[0];
        move16();
@@ -265,63 +202,56 @@ ivas_error TonalMDCTConceal_Init_ivas_fx(
        hTonalMDCTConc->nScaleFactors = nScaleFactors;
        move16();

#endif //*#if defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit ) || defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage2 )

#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit
    IF( EQ_16( element_mode, EVS_MONO ) )
    {
#if !defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage2 ) && !defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit )
        /*Common Part 2*/
        hTonalMDCTConc->lastBlockData.scaleFactors_exp = hTonalMDCTConc->scaleFactorsBuffers_exp[0];
        move16();
        hTonalMDCTConc->secondLastBlockData.scaleFactors_exp = hTonalMDCTConc->scaleFactorsBuffers_exp[1];
        move16();

        hTonalMDCTConc->lastBlockData.blockIsValid = 0;
        move16();
        hTonalMDCTConc->secondLastBlockData.blockIsValid = 0;
        move16();
        hTonalMDCTConc->nSamples = 0;
        move16();
        hTonalMDCTConc->nScaleFactors = 0;
        move16();

        hTonalMDCTConc->lastBlockData.blockIsConcealed = 0;
        /*Common Part 3*/
        /* Offset the pointer to the end of buffer, so that pTCI is not destroyed when
           new time samples are stored in lastPcmOut */
        move16();
        hTonalMDCTConc->secondLastBlockData.blockIsConcealed = 0;
        move16();
        /* just the second half of the second last pcm output is needed */

        hTonalMDCTConc->pTCI = (TonalComponentsInfo *) hTonalMDCTConc->timeDataBuffer;
        move16();
        /*Common Part 4*/
        hTonalMDCTConc->secondLastPcmOut = &hTonalMDCTConc->timeDataBuffer[( 3 * L_FRAME_MAX ) / 2 - ( 3 * ( s_min( L_FRAME_MAX, nSamples ) ) / 2 )];
        hTonalMDCTConc->lastPcmOut = &hTonalMDCTConc->timeDataBuffer[( 3 * L_FRAME_MAX ) / 2 - s_min( L_FRAME_MAX, nSamples )];
        /* If the second last frame was lost, we reuse saved TonalComponentsInfo and don't update pcm buffers */
        assert( sizeof( *hTonalMDCTConc->pTCI ) <= ( hTonalMDCTConc->lastPcmOut - hTonalMDCTConc->timeDataBuffer ) * sizeof( hTonalMDCTConc->timeDataBuffer[0] ) );
    }
#endif /*#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit*/

        hTonalMDCTConc->lastPitchLag = L_deposit_l( 0 );
#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit
    IF( GT_16( element_mode, EVS_MONO ) )
    {
#endif  /*#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit*/

        IF( NE_16( hTonalMDCTConc->nSamples, nSamples ) )
        /*Common Part 1*/
        test();
        IF( GT_16( nSamples, L_FRAME_MAX ) || GT_16( nScaleFactors, FDNS_NPTS ) )
        {
            hTonalMDCTConc->secondLastBlockData.blockIsValid = 0;
            move16();
            hTonalMDCTConc->lastBlockData.blockIsValid = 0;
            move16();
            assert( LE_16( nSamples, L_FRAME_MAX ) );
            assert( LE_16( nScaleFactors, FDNS_NPTS ) );
            return ( IVAS_ERROR( IVAS_ERR_INTERNAL, "TonalMDCT FEC: Number of samples larger than max. block size\n" ) );
        }
        assert( EQ_16( hTonalMDCTConc->nScaleFactors, nScaleFactors ) || NE_16( hTonalMDCTConc->nSamples, nSamples ) ); /* If nSamples doesn't change then also nScaleFactors must stay the same */

        hTonalMDCTConc->nSamples = nSamples;
        hTonalMDCTConc->tcx_cfg = hTcxCfg;
        hTonalMDCTConc->lastBlockData.spectralData = hTonalMDCTConc->spectralDataBuffers[0];
        /*Start IVAS-only*/
        set16_fx( hTonalMDCTConc->lastBlockData.spectralData, 0, L_FRAME_MAX );
        move16();
        hTonalMDCTConc->nSamplesCore = nSamplesCore;
        hTonalMDCTConc->secondLastBlockData.spectralData = hTonalMDCTConc->spectralDataBuffers[1];
        set16_fx( hTonalMDCTConc->secondLastBlockData.spectralData, 0, L_FRAME_MAX );
        move16();

        hTonalMDCTConc->nScaleFactors = nScaleFactors;
        hTonalMDCTConc->secondLastPowerSpectrum = hTonalMDCTConc->secondLastBlockData.spectralData;
        move16();
        hTonalMDCTConc->secondLastPowerSpectrum_exp = hTonalMDCTConc->secondLastBlockData.spectralData_exp;
        move16();
        hTonalMDCTConc->lastBlockData.scaleFactors = hTonalMDCTConc->scaleFactorsBuffers[0];
        set16_fx( hTonalMDCTConc->lastBlockData.scaleFactors, 0, FDNS_NPTS );
        move16();
        hTonalMDCTConc->secondLastBlockData.scaleFactors = hTonalMDCTConc->scaleFactorsBuffers[1];
        set16_fx( hTonalMDCTConc->secondLastBlockData.scaleFactors, 0, FDNS_NPTS );
        move16();
        /*Stop IVAS-only*/

#endif /*!defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage2 ) && !defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit )*/
    }
#endif /*#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit*/

#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit
    IF( GT_16( element_mode, EVS_MONO ) )
    {
#endif /*#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit*/

#if !defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage2 ) && !defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit )
        /*Common Part 2*/
        hTonalMDCTConc->lastBlockData.scaleFactors_exp = hTonalMDCTConc->scaleFactorsBuffers_exp[0];
        move16();
@@ -380,101 +310,30 @@ ivas_error TonalMDCTConceal_Init_ivas_fx(
        hTonalMDCTConc->faded_signal_nrg_exp = 0;
        move16();
        /*stop IVAS-only*/
#endif /*!defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage2 ) && !defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit )*/
#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit
    }
#endif /*#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit*/

#if defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit ) || defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage3 )
    /*Common Part 3*/
    /* Offset the pointer to the end of buffer, so that pTCI is not destroyed when
       new time samples are stored in lastPcmOut */
    move16();
    move16();
    /* just the second half of the second last pcm output is needed */
#endif /*#if defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit ) || defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage3 )*/

#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit
    IF( EQ_16( element_mode, EVS_MONO ) )
    {
#if !defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage3 ) && !defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit )
        /*Common Part 3*/
        /* Offset the pointer to the end of buffer, so that pTCI is not destroyed when
           new time samples are stored in lastPcmOut */
        move16();
        move16();
        /* just the second half of the second last pcm output is needed */
#endif /* !defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage3 ) && !defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit )*/
    }

#endif /*#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit*/


#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit
    IF( GT_16( element_mode, EVS_MONO ) )
    {
#endif /*#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit*/


#if !defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage3 ) && !defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit )
        /*Common Part 3*/
        /* Offset the pointer to the end of buffer, so that pTCI is not destroyed when
           new time samples are stored in lastPcmOut */
        move16();
        move16();
        /* just the second half of the second last pcm output is needed */
#endif /*#if !defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage3 ) && !defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit )*/

        /*start IVAS-only*/
        set16_fx( hTonalMDCTConc->timeDataBuffer, 0, ( 3 * L_FRAME_MAX ) / 2 );
        /*stop IVAS-only*/

#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit
    }
#endif /*#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit*/


#if defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit ) || defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage4 )
        /*Common Part 4*/
        hTonalMDCTConc->secondLastPcmOut = &hTonalMDCTConc->timeDataBuffer[( 3 * L_FRAME_MAX ) / 2 - ( 3 * ( s_min( L_FRAME_MAX, nSamples ) ) / 2 )];
        hTonalMDCTConc->lastPcmOut = &hTonalMDCTConc->timeDataBuffer[( 3 * L_FRAME_MAX ) / 2 - s_min( L_FRAME_MAX, nSamples )];
        /* If the second last frame was lost, we reuse saved TonalComponentsInfo and don't update pcm buffers */
        assert( sizeof( *hTonalMDCTConc->pTCI ) <= ( hTonalMDCTConc->lastPcmOut - hTonalMDCTConc->timeDataBuffer ) * sizeof( hTonalMDCTConc->timeDataBuffer[0] ) );

#endif /*#if defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit ) || defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage4 )*/


#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit
    IF( EQ_16( element_mode, EVS_MONO ) )
    {
#if !defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage4 ) && !defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit )
        /*Common Part 4*/
        hTonalMDCTConc->secondLastPcmOut = &hTonalMDCTConc->timeDataBuffer[( 3 * L_FRAME_MAX ) / 2 - ( 3 * ( s_min( L_FRAME_MAX, nSamples ) ) / 2 )];
        hTonalMDCTConc->lastPcmOut = &hTonalMDCTConc->timeDataBuffer[( 3 * L_FRAME_MAX ) / 2 - s_min( L_FRAME_MAX, nSamples )];
        /* If the second last frame was lost, we reuse saved TonalComponentsInfo and don't update pcm buffers */
        assert( sizeof( *hTonalMDCTConc->pTCI ) <= ( hTonalMDCTConc->lastPcmOut - hTonalMDCTConc->timeDataBuffer ) * sizeof( hTonalMDCTConc->timeDataBuffer[0] ) );
#endif /* !defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage4 ) && !defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit )*/
    }

#endif /*#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit*/


#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit
    IF( GT_16( element_mode, EVS_MONO ) )
    {
#endif /*#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit*/

#if !defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage4 ) && !defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit )
        /*Common Part 4*/
        hTonalMDCTConc->secondLastPcmOut = &hTonalMDCTConc->timeDataBuffer[( 3 * L_FRAME_MAX ) / 2 - ( 3 * ( s_min( L_FRAME_MAX, nSamples ) ) / 2 )];
        hTonalMDCTConc->lastPcmOut = &hTonalMDCTConc->timeDataBuffer[( 3 * L_FRAME_MAX ) / 2 - s_min( L_FRAME_MAX, nSamples )];
        /* If the second last frame was lost, we reuse saved TonalComponentsInfo and don't update pcm buffers */
        assert( sizeof( *hTonalMDCTConc->pTCI ) <= ( hTonalMDCTConc->lastPcmOut - hTonalMDCTConc->timeDataBuffer ) * sizeof( hTonalMDCTConc->timeDataBuffer[0] ) );
#endif /*#if !defined( HARMONIZE_2583_open_decoder_LPD_TonalConceal_reharmonize_stage4 ) && !defined( HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit )*/

#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit
    }
#endif /*#ifndef HARMONIZE_2583_open_decoder_LPD_TonalConcealseparateinit*/

    return IVAS_ERR_OK;
}