Commit 1940c7c4 authored by Marek Szczerba's avatar Marek Szczerba
Browse files

And avoiding memcpy()

parent dcab31ec
Loading
Loading
Loading
Loading
Loading
+44 −2
Original line number Diff line number Diff line
@@ -3038,7 +3038,49 @@ ivas_error IVAS_DEC_AddAcousticEnvironment(
            return IVAS_ERR_FAILED_ALLOC;
        }

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

            Copy32( roomAcousticsConfig.pFc_input_fx, pAE->pFc_input_fx, CLDFB_NO_CHANNELS_MAX );           // Q16
            Copy32( roomAcousticsConfig.pAcoustic_rt60_fx, pAE->pAcoustic_rt60_fx, CLDFB_NO_CHANNELS_MAX ); // Q26
            Copy32( roomAcousticsConfig.pAcoustic_dsr_fx, pAE->pAcoustic_dsr_fx, CLDFB_NO_CHANNELS_MAX );   // Q30

            pAE->use_er = roomAcousticsConfig.use_er;

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

            IF( EQ_16( pAE->use_er, 1 ) )
            {
                pAE->lowComplexity = roomAcousticsConfig.lowComplexity;
                move32();

                pAE->dimensions.x_fx = roomAcousticsConfig.dimensions.x_fx;
                pAE->dimensions.y_fx = roomAcousticsConfig.dimensions.y_fx;
                pAE->dimensions.z_fx = roomAcousticsConfig.dimensions.z_fx;
                move32();
                move32();
                move32();

                pAE->ListenerOrigin.x_fx = roomAcousticsConfig.ListenerOrigin.x_fx;
                pAE->ListenerOrigin.y_fx = roomAcousticsConfig.ListenerOrigin.y_fx;
                pAE->ListenerOrigin.z_fx = roomAcousticsConfig.ListenerOrigin.z_fx;
                move32();
                move32();
                move32();

                Copy32( roomAcousticsConfig.AbsCoeff_fx, pAE->AbsCoeff_fx, IVAS_ROOM_ABS_COEFF );
            }
        }

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

@@ -3488,7 +3530,7 @@ static ivas_error feedAcousticEnvPI(
            move32();
            move32();

            Copy32( hRenderConfig->roomAcoustics.AbsCoeff_fx, hAcoustEnvPI.absorbCoeffs_fx, IVAS_ROOM_ABS_COEFF );
            Copy32( hAcoustEnvPI.absorbCoeffs_fx, hRenderConfig->roomAcoustics.AbsCoeff_fx, IVAS_ROOM_ABS_COEFF );
        }

        IF( ( error = IVAS_DEC_AddAcousticEnvironment( hIvasDec, acEnv ) ) != IVAS_ERR_OK )