Commit 13808b87 authored by emerit's avatar emerit
Browse files

fix fastconv memeory allocation

parent 3e185409
Loading
Loading
Loading
Loading
+40 −23
Original line number Diff line number Diff line
@@ -708,7 +708,7 @@ ivas_error ivas_allocate_binaural_hrtf(
    }

#ifdef FIX_1123_FASTCONV_16BIT_ROM
    if ( renderer_type == RENDERER_BINAURAL_FASTCONV && bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED )
    if ( renderer_type == RENDERER_BINAURAL_FASTCONV && ( bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED || bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_INVALID ) )
#else
    if ( renderer_type == RENDERER_BINAURAL_FASTCONV || bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED )
#endif
@@ -753,7 +753,7 @@ ivas_error ivas_allocate_binaural_hrtf(
        }
    }
#ifdef FIX_1123_FASTCONV_16BIT_ROM
    if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM && bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED )
    if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM && ( bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED || bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_INVALID ) )
#else
    if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM || bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED )
#endif
@@ -871,46 +871,28 @@ static ivas_error ivas_binaural_hrtf_open(
        }
        for ( i = 0; i < BINAURAL_CONVBANDS; i++ )
        {
#ifndef FIX_1123_FASTCONV_16BIT_ROM
            if ( renderer_type == RENDERER_BINAURAL_FASTCONV )
            {
                for ( j = 0; j < HRTF_LS_CHANNELS; j++ )
                {
#ifdef FIX_1123_FASTCONV_16BIT_ROM
                    for ( k = 0; k < HrtfFastConv->ntaps_hrir; k++ )
                    {
                        HrtfFastConv->leftHRIRReal[i][j][k] = (float) leftHRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ );
                        HrtfFastConv->leftHRIRImag[i][j][k] = (float) leftHRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ );
                        HrtfFastConv->rightHRIRReal[i][j][k] = (float) rightHRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ );
                        HrtfFastConv->rightHRIRImag[i][j][k] = (float) rightHRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ );
                    }
#else
                    HrtfFastConv->leftHRIRReal[i][j] = leftHRIRReal[i][j];
                    HrtfFastConv->leftHRIRImag[i][j] = leftHRIRImag[i][j];
                    HrtfFastConv->rightHRIRReal[i][j] = rightHRIRReal[i][j];
                    HrtfFastConv->rightHRIRImag[i][j] = rightHRIRImag[i][j];
#endif
                }
            }
            else if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM )
            {
                for ( j = 0; j < HRTF_LS_CHANNELS; j++ )
                {
#ifdef FIX_1123_FASTCONV_16BIT_ROM
                    for ( k = 0; k < HrtfFastConv->ntaps_brir; k++ )
                    {
                        HrtfFastConv->leftBRIRReal[i][j][k] = (float) leftBRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ );
                        HrtfFastConv->leftBRIRImag[i][j][k] = (float) leftBRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ );
                        HrtfFastConv->rightBRIRReal[i][j][k] = (float) rightBRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ );
                        HrtfFastConv->rightBRIRImag[i][j][k] = (float) rightBRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ );
                    }
#else
                    HrtfFastConv->leftBRIRReal[i][j] = leftBRIRReal[i][j];
                    HrtfFastConv->leftBRIRImag[i][j] = leftBRIRImag[i][j];
                    HrtfFastConv->rightBRIRReal[i][j] = rightBRIRReal[i][j];
                    HrtfFastConv->rightBRIRImag[i][j] = rightBRIRImag[i][j];
#endif
                }
            }
#endif
            if ( input_config == IVAS_AUDIO_CONFIG_HOA3 )
            {
                for ( j = 0; j < HOA3_CHANNELS; j++ )
@@ -931,7 +913,11 @@ static ivas_error ivas_binaural_hrtf_open(
#endif
                }
            }
#ifdef FIX_1123_FASTCONV_16BIT_ROM
            else if ( input_config == IVAS_AUDIO_CONFIG_HOA2 )
#else
            if ( input_config == IVAS_AUDIO_CONFIG_HOA2 )
#endif
            {
                for ( j = 0; j < HOA2_CHANNELS; j++ )
                {
@@ -951,7 +937,7 @@ static ivas_error ivas_binaural_hrtf_open(
#endif
                }
            }
            if ( input_config == IVAS_AUDIO_CONFIG_FOA )
            else if ( input_config == IVAS_AUDIO_CONFIG_FOA )
            {
                for ( j = 0; j < FOA_CHANNELS; j++ )
                {
@@ -971,6 +957,37 @@ static ivas_error ivas_binaural_hrtf_open(
#endif
                }
            }
#ifdef FIX_1123_FASTCONV_16BIT_ROM
            else
            {
                if ( renderer_type == RENDERER_BINAURAL_FASTCONV )
                {
                    for ( j = 0; j < HRTF_LS_CHANNELS; j++ )
                    {
                        for ( k = 0; k < HrtfFastConv->ntaps_hrir; k++ )
                        {
                            HrtfFastConv->leftHRIRReal[i][j][k] = (float) leftHRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ );
                            HrtfFastConv->leftHRIRImag[i][j][k] = (float) leftHRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ );
                            HrtfFastConv->rightHRIRReal[i][j][k] = (float) rightHRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ );
                            HrtfFastConv->rightHRIRImag[i][j][k] = (float) rightHRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ );
                        }
                    }
                }
                else if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM )
                {
                    for ( j = 0; j < HRTF_LS_CHANNELS; j++ )
                    {
                        for ( k = 0; k < HrtfFastConv->ntaps_brir; k++ )
                        {
                            HrtfFastConv->leftBRIRReal[i][j][k] = (float) leftBRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ );
                            HrtfFastConv->leftBRIRImag[i][j][k] = (float) leftBRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ );
                            HrtfFastConv->rightBRIRReal[i][j][k] = (float) rightBRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ );
                            HrtfFastConv->rightBRIRImag[i][j][k] = (float) rightBRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ );
                        }
                    }
                }
            }
#endif
        }
#ifdef FIX_1123_FASTCONV_16BIT_ROM
        for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ )