Commit e51b82b5 authored by emerit's avatar emerit
Browse files

fix fastconv scaling factor computation

parent 00891dda
Loading
Loading
Loading
Loading
Loading
+17 −20
Original line number Diff line number Diff line
@@ -817,7 +817,8 @@ static ivas_error ivas_binaural_hrtf_open(
{
#ifdef FIX_1123_FASTCONV_16BIT_ROM
    int16_t i, j, k;
    float scaleFactor;
    float scaleFactor = 1.f;
    float scaleFactorSBA = 1.f;
#else
    int16_t i, j;
#endif
@@ -892,19 +893,15 @@ static ivas_error ivas_binaural_hrtf_open(
        }
        if ( input_config == IVAS_AUDIO_CONFIG_HOA3 )
        {
            scaleFactor = powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ );
            scaleFactorSBA = powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ );
        }
        else if ( input_config == IVAS_AUDIO_CONFIG_HOA2 )
        {
            scaleFactor = powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ );
            scaleFactorSBA = powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ );
        }
        else if ( input_config == IVAS_AUDIO_CONFIG_FOA )
        {
            scaleFactor = powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ );
        }
        else
        {
            scaleFactor = 1.f;
            scaleFactorSBA = powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ );
        }
        HrtfFastConv->allocate_init_flag = 0; /* TODO: consider getting rid of this flag entirely? */
#else
@@ -964,10 +961,10 @@ static ivas_error ivas_binaural_hrtf_open(
#ifdef FIX_1123_FASTCONV_16BIT_ROM
                    for ( k = 0; k < HrtfFastConv->ntaps_hrir_hoa3; k++ )
                    {
                        HrtfFastConv->leftHRIRReal_HOA3[i][j][k] = (float) leftHRIRReal_HOA3[i][j][k] * scaleFactor;
                        HrtfFastConv->leftHRIRImag_HOA3[i][j][k] = (float) leftHRIRImag_HOA3[i][j][k] * scaleFactor;
                        HrtfFastConv->rightHRIRReal_HOA3[i][j][k] = (float) rightHRIRReal_HOA3[i][j][k] * scaleFactor;
                        HrtfFastConv->rightHRIRImag_HOA3[i][j][k] = (float) rightHRIRImag_HOA3[i][j][k] * scaleFactor;
                        HrtfFastConv->leftHRIRReal_HOA3[i][j][k] = (float) leftHRIRReal_HOA3[i][j][k] * scaleFactorSBA;
                        HrtfFastConv->leftHRIRImag_HOA3[i][j][k] = (float) leftHRIRImag_HOA3[i][j][k] * scaleFactorSBA;
                        HrtfFastConv->rightHRIRReal_HOA3[i][j][k] = (float) rightHRIRReal_HOA3[i][j][k] * scaleFactorSBA;
                        HrtfFastConv->rightHRIRImag_HOA3[i][j][k] = (float) rightHRIRImag_HOA3[i][j][k] * scaleFactorSBA;
                    }
#else
                    HrtfFastConv->leftHRIRReal_HOA3[i][j] = leftHRIRReal_HOA3[i][j];
@@ -987,10 +984,10 @@ static ivas_error ivas_binaural_hrtf_open(
#ifdef FIX_1123_FASTCONV_16BIT_ROM
                    for ( k = 0; k < HrtfFastConv->ntaps_hrir_hoa2; k++ )
                    {
                        HrtfFastConv->leftHRIRReal_HOA2[i][j][k] = (float) leftHRIRReal_HOA2[i][j][k] * scaleFactor;
                        HrtfFastConv->leftHRIRImag_HOA2[i][j][k] = (float) leftHRIRImag_HOA2[i][j][k] * scaleFactor;
                        HrtfFastConv->rightHRIRReal_HOA2[i][j][k] = (float) rightHRIRReal_HOA2[i][j][k] * scaleFactor;
                        HrtfFastConv->rightHRIRImag_HOA2[i][j][k] = (float) rightHRIRImag_HOA2[i][j][k] * scaleFactor;
                        HrtfFastConv->leftHRIRReal_HOA2[i][j][k] = (float) leftHRIRReal_HOA2[i][j][k] * scaleFactorSBA;
                        HrtfFastConv->leftHRIRImag_HOA2[i][j][k] = (float) leftHRIRImag_HOA2[i][j][k] * scaleFactorSBA;
                        HrtfFastConv->rightHRIRReal_HOA2[i][j][k] = (float) rightHRIRReal_HOA2[i][j][k] * scaleFactorSBA;
                        HrtfFastConv->rightHRIRImag_HOA2[i][j][k] = (float) rightHRIRImag_HOA2[i][j][k] * scaleFactorSBA;
                    }
#else
                    HrtfFastConv->leftHRIRReal_HOA2[i][j] = leftHRIRReal_HOA2[i][j];
@@ -1010,10 +1007,10 @@ static ivas_error ivas_binaural_hrtf_open(
#ifdef FIX_1123_FASTCONV_16BIT_ROM
                    for ( k = 0; k < HrtfFastConv->ntaps_hrir_foa; k++ )
                    {
                        HrtfFastConv->leftHRIRReal_FOA[i][j][k] = (float) leftHRIRReal_FOA[i][j][k] * scaleFactor;
                        HrtfFastConv->leftHRIRImag_FOA[i][j][k] = (float) leftHRIRImag_FOA[i][j][k] * scaleFactor;
                        HrtfFastConv->rightHRIRReal_FOA[i][j][k] = (float) rightHRIRReal_FOA[i][j][k] * scaleFactor;
                        HrtfFastConv->rightHRIRImag_FOA[i][j][k] = (float) rightHRIRImag_FOA[i][j][k] * scaleFactor;
                        HrtfFastConv->leftHRIRReal_FOA[i][j][k] = (float) leftHRIRReal_FOA[i][j][k] * scaleFactorSBA;
                        HrtfFastConv->leftHRIRImag_FOA[i][j][k] = (float) leftHRIRImag_FOA[i][j][k] * scaleFactorSBA;
                        HrtfFastConv->rightHRIRReal_FOA[i][j][k] = (float) rightHRIRReal_FOA[i][j][k] * scaleFactorSBA;
                        HrtfFastConv->rightHRIRImag_FOA[i][j][k] = (float) rightHRIRImag_FOA[i][j][k] * scaleFactorSBA;
                    }
#else
                    HrtfFastConv->leftHRIRReal_FOA[i][j] = leftHRIRReal_FOA[i][j];
+0 −4
Original line number Diff line number Diff line
@@ -65,10 +65,6 @@ def test_binary_file(test_info, hrtf_tag, out_fs):
def test_multichannel_binaural_static(
    test_info, in_fmt, out_fmt, out_fs, hrtf_tag, bitrate
):
    if bitrate == 32000 and hrtf_tag == HRTF_TAG_SAME_AS_ROM:
        pytest.skip("Skipping ParamBin until binary and ROM contain same data")
    if bitrate == 160000 and hrtf_tag == HRTF_TAG_SAME_AS_ROM:
        pytest.skip("Skipped until reason for non-BE in FastConv is clarified")
    in_fs = 48
    option_list = ["-mc", in_fmt]
    in_file = FORMAT_TO_FILE_MC_WOEXT[in_fmt].format(in_fs)