Commit 45f93a68 authored by Marek Szczerba's avatar Marek Szczerba Committed by Manuel Jander
Browse files

Realloc replaced with calloc/free combination

Using fixed-point absorption coeffs in PI frame
parent 82fc6b0f
Loading
Loading
Loading
Loading
+47 −7
Original line number Diff line number Diff line
@@ -3021,14 +3021,59 @@ ivas_error IVAS_DEC_AddAcousticEnvironment(
    /* If not found */
    IF( pAE == NULL )
    {
        IVAS_ROOM_ACOUSTICS_CONFIG_DATA *ppAE = realloc( st_ivas->pAcousticEnvironments, ( st_ivas->acousticEnvironmentsCount + 1 ) * sizeof( IVAS_ROOM_ACOUSTICS_CONFIG_DATA ) );
        IVAS_ROOM_ACOUSTICS_CONFIG_DATA *ppAE = malloc( ( st_ivas->acousticEnvironmentsCount + 1 ) * sizeof( IVAS_ROOM_ACOUSTICS_CONFIG_DATA ) );

        IF( ppAE == NULL )
        {
            return IVAS_ERR_FAILED_ALLOC;
        }

        FOR( n = 0; n < st_ivas->acousticEnvironmentsCount; n++ )
        {
            pAE = &ppAE[n];
            pAE->aeID = st_ivas->pAcousticEnvironments[n].aeID;
            pAE->nBands = st_ivas->pAcousticEnvironments[n].nBands;
            pAE->acousticPreDelay_fx = st_ivas->pAcousticEnvironments[n].acousticPreDelay_fx;
            pAE->inputPreDelay_fx = st_ivas->pAcousticEnvironments[n].inputPreDelay_fx;

            Copy32( st_ivas->pAcousticEnvironments[n].pFc_input_fx, pAE->pFc_input_fx, CLDFB_NO_CHANNELS_MAX );           // Q16
            Copy32( st_ivas->pAcousticEnvironments[n].pAcoustic_rt60_fx, pAE->pAcoustic_rt60_fx, CLDFB_NO_CHANNELS_MAX ); // Q26
            Copy32( st_ivas->pAcousticEnvironments[n].pAcoustic_dsr_fx, pAE->pAcoustic_dsr_fx, CLDFB_NO_CHANNELS_MAX );   // Q30

            pAE->use_er = st_ivas->pAcousticEnvironments[n].use_er;

            move16();
            move16();
            move32();
            move32();
            move16();

            IF( EQ_16( pAE->use_er, 1 ) )
            {
                pAE->lowComplexity = st_ivas->pAcousticEnvironments[n].lowComplexity;
                move32();

                pAE->dimensions.x_fx = st_ivas->pAcousticEnvironments[n].dimensions.x_fx;
                pAE->dimensions.y_fx = st_ivas->pAcousticEnvironments[n].dimensions.y_fx;
                pAE->dimensions.z_fx = st_ivas->pAcousticEnvironments[n].dimensions.z_fx;
                move32();
                move32();
                move32();

                pAE->ListenerOrigin.x_fx = st_ivas->pAcousticEnvironments[n].ListenerOrigin.x_fx;
                pAE->ListenerOrigin.y_fx = st_ivas->pAcousticEnvironments[n].ListenerOrigin.y_fx;
                pAE->ListenerOrigin.z_fx = st_ivas->pAcousticEnvironments[n].ListenerOrigin.z_fx;
                move32();
                move32();
                move32();

                Copy32( st_ivas->pAcousticEnvironments[n].AbsCoeff_fx, pAE->AbsCoeff_fx, IVAS_ROOM_ABS_COEFF );
            }
        }

        free( st_ivas->pAcousticEnvironments );
        st_ivas->pAcousticEnvironments = ppAE;

        n = st_ivas->acousticEnvironmentsCount++;
        pAE = &st_ivas->pAcousticEnvironments[n];
        move32();
@@ -3475,11 +3520,7 @@ static ivas_error feedAcousticEnvPI(
            move32();
            move32();

            FOR( Word16 i = 0; i < IVAS_ROOM_ABS_COEFF; i++ )
            {
                hRenderConfig->roomAcoustics.AbsCoeff[i] = hAcoustEnvPI.absorbCoeffs[i];
                move16();
            }
            Copy32( hAcoustEnvPI.absorbCoeffs_fx, hRenderConfig->roomAcoustics.AbsCoeff_fx, IVAS_ROOM_ABS_COEFF );
        }

        IF( ( error = IVAS_DEC_AddAcousticEnvironment( hIvasDec, acEnv ) ) != IVAS_ERR_OK )
@@ -6998,7 +7039,6 @@ ivas_error IVAS_DEC_FeedPiDataToDecoder(
    {
        UWord32 piDataType = piData->data.noPiData.piDataType;
        move32();
        numPiData = UL_subNsD( numPiData, 1 ); /* Subtraction of WHILE variable */

        SWITCH( piDataType )
        {