Commit 06a8cc61 authored by emerit's avatar emerit
Browse files

fix sba

parent f2399e41
Loading
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -116,9 +116,7 @@
#define USE_CREND_16BIT_ROM
#define USE_REVERB_16BIT_ROM
#define USE_TDREND_16BIT_ROM
// #define USE_FASTCONV_PARAMBIN_16BIT_ROM
// #define USE_PARAMBIN_16BIT_ROM
// #define USE_TDREND_16BIT_ROM
#define USE_FASTCONV_PARAMBIN_16BIT_ROM
#endif
#define NONBE_1377_REND_DIRATT_CONF                     /* Eri: Issue 1377: Error in directivity attenuation configuration for both IVAS_dec and IVAS_rend */

+44 −0
Original line number Diff line number Diff line
@@ -926,7 +926,11 @@ static ivas_error ivas_binaural_hrtf_open_fx(
#endif
        }

#ifdef USE_FASTCONV_PARAMBIN_16BIT_ROM
        HrtfFastConv->allocate_init_flag = 0;
#else
        HrtfFastConv->allocate_init_flag = 1;
#endif
        move16();

#ifdef FIX_CREND_SIMPLIFY_CODE
@@ -976,10 +980,17 @@ static ivas_error ivas_binaural_hrtf_open_fx(
                FOR( j = 0; j < HRTF_LS_CHANNELS; j++ )
                {
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef USE_FASTCONV_PARAMBIN_16BIT_ROM
                    Copy_Scale_sig_16_32_no_sat( leftHRIRReal_fx[i][j], HrtfFastConv->leftReal_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_HRIR_fx );
                    Copy_Scale_sig_16_32_no_sat( leftHRIRImag_fx[i][j], HrtfFastConv->leftImag_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_HRIR_fx );
                    Copy_Scale_sig_16_32_no_sat( rightHRIRReal_fx[i][j], HrtfFastConv->rightReal_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_HRIR_fx );
                    Copy_Scale_sig_16_32_no_sat( rightHRIRImag_fx[i][j], HrtfFastConv->rightImag_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_HRIR_fx );
#else
                    HrtfFastConv->leftReal_fx[i][j] = leftHRIRReal_fx[i][j];
                    HrtfFastConv->leftImag_fx[i][j] = leftHRIRImag_fx[i][j];
                    HrtfFastConv->rightReal_fx[i][j] = rightHRIRReal_fx[i][j];
                    HrtfFastConv->rightImag_fx[i][j] = rightHRIRImag_fx[i][j];
#endif
#else
                    HrtfFastConv->leftHRIRReal_fx[i][j] = leftHRIRReal_fx[i][j];
                    HrtfFastConv->leftHRIRImag_fx[i][j] = leftHRIRImag_fx[i][j];
@@ -997,10 +1008,17 @@ static ivas_error ivas_binaural_hrtf_open_fx(
                FOR( j = 0; j < HRTF_LS_CHANNELS; j++ )
                {
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef USE_FASTCONV_PARAMBIN_16BIT_ROM
                    Copy_Scale_sig_16_32_no_sat( leftBRIRReal_fx[i][j], HrtfFastConv->leftReal_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_BRIR_fx );
                    Copy_Scale_sig_16_32_no_sat( leftBRIRImag_fx[i][j], HrtfFastConv->leftImag_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_BRIR_fx );
                    Copy_Scale_sig_16_32_no_sat( rightBRIRReal_fx[i][j], HrtfFastConv->rightReal_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_BRIR_fx );
                    Copy_Scale_sig_16_32_no_sat( rightBRIRImag_fx[i][j], HrtfFastConv->rightImag_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_BRIR_fx );
#else
                    HrtfFastConv->leftReal_fx[i][j] = leftBRIRReal_fx[i][j];
                    HrtfFastConv->leftImag_fx[i][j] = leftBRIRImag_fx[i][j];
                    HrtfFastConv->rightReal_fx[i][j] = rightBRIRReal_fx[i][j];
                    HrtfFastConv->rightImag_fx[i][j] = rightBRIRImag_fx[i][j];
#endif
#else
                    HrtfFastConv->leftBRIRReal_fx[i][j] = leftBRIRReal_fx[i][j];
                    HrtfFastConv->leftBRIRImag_fx[i][j] = leftBRIRImag_fx[i][j];
@@ -1019,10 +1037,17 @@ static ivas_error ivas_binaural_hrtf_open_fx(
                FOR( j = 0; j < HOA3_CHANNELS; j++ )
                {
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef USE_FASTCONV_PARAMBIN_16BIT_ROM
                    Copy_Scale_sig_16_32_no_sat( leftHRIRReal_HOA3_fx[i][j], HrtfFastConv->leftReal_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_HOA3_fx );
                    Copy_Scale_sig_16_32_no_sat( leftHRIRImag_HOA3_fx[i][j], HrtfFastConv->leftImag_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_HOA3_fx );
                    Copy_Scale_sig_16_32_no_sat( rightHRIRReal_HOA3_fx[i][j], HrtfFastConv->rightReal_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_HOA3_fx );
                    Copy_Scale_sig_16_32_no_sat( rightHRIRImag_HOA3_fx[i][j], HrtfFastConv->rightImag_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_HOA3_fx );
#else
                    HrtfFastConv->leftReal_fx[i][j] = leftHRIRReal_HOA3_fx[i][j];
                    HrtfFastConv->leftImag_fx[i][j] = leftHRIRImag_HOA3_fx[i][j];
                    HrtfFastConv->rightReal_fx[i][j] = rightHRIRReal_HOA3_fx[i][j];
                    HrtfFastConv->rightImag_fx[i][j] = rightHRIRImag_HOA3_fx[i][j];
#endif
#else
                    HrtfFastConv->leftHRIRReal_HOA3_fx[i][j] = leftHRIRReal_HOA3_fx[i][j];
                    HrtfFastConv->leftHRIRImag_HOA3_fx[i][j] = leftHRIRImag_HOA3_fx[i][j];
@@ -1043,10 +1068,17 @@ static ivas_error ivas_binaural_hrtf_open_fx(
                FOR( j = 0; j < HOA2_CHANNELS; j++ )
                {
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef USE_FASTCONV_PARAMBIN_16BIT_ROM
                    Copy_Scale_sig_16_32_no_sat( leftHRIRReal_HOA2_fx[i][j], HrtfFastConv->leftReal_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_HOA2_fx );
                    Copy_Scale_sig_16_32_no_sat( leftHRIRImag_HOA2_fx[i][j], HrtfFastConv->leftImag_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_HOA2_fx );
                    Copy_Scale_sig_16_32_no_sat( rightHRIRReal_HOA2_fx[i][j], HrtfFastConv->rightReal_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_HOA2_fx );
                    Copy_Scale_sig_16_32_no_sat( rightHRIRImag_HOA2_fx[i][j], HrtfFastConv->rightImag_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_HOA2_fx );
#else
                    HrtfFastConv->leftReal_fx[i][j] = leftHRIRReal_HOA2_fx[i][j];
                    HrtfFastConv->leftImag_fx[i][j] = leftHRIRImag_HOA2_fx[i][j];
                    HrtfFastConv->rightReal_fx[i][j] = rightHRIRReal_HOA2_fx[i][j];
                    HrtfFastConv->rightImag_fx[i][j] = rightHRIRImag_HOA2_fx[i][j];
#endif
#else
                    HrtfFastConv->leftHRIRReal_HOA2_fx[i][j] = leftHRIRReal_HOA2_fx[i][j];
                    HrtfFastConv->leftHRIRImag_HOA2_fx[i][j] = leftHRIRImag_HOA2_fx[i][j];
@@ -1064,10 +1096,17 @@ static ivas_error ivas_binaural_hrtf_open_fx(
                FOR( j = 0; j < FOA_CHANNELS; j++ )
                {
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef USE_FASTCONV_PARAMBIN_16BIT_ROM
                    Copy_Scale_sig_16_32_no_sat( leftHRIRReal_FOA_fx[i][j], HrtfFastConv->leftReal_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_FOA_fx );
                    Copy_Scale_sig_16_32_no_sat( leftHRIRImag_FOA_fx[i][j], HrtfFastConv->leftImag_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_FOA_fx );
                    Copy_Scale_sig_16_32_no_sat( rightHRIRReal_FOA_fx[i][j], HrtfFastConv->rightReal_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_FOA_fx );
                    Copy_Scale_sig_16_32_no_sat( rightHRIRImag_FOA_fx[i][j], HrtfFastConv->rightImag_fx[i][j], HrtfFastConv->ntaps, Q29 - FASTCONV_factor_Q_FOA_fx );
#else
                    HrtfFastConv->leftReal_fx[i][j] = leftHRIRReal_FOA_fx[i][j];
                    HrtfFastConv->leftImag_fx[i][j] = leftHRIRImag_FOA_fx[i][j];
                    HrtfFastConv->rightReal_fx[i][j] = rightHRIRReal_FOA_fx[i][j];
                    HrtfFastConv->rightImag_fx[i][j] = rightHRIRImag_FOA_fx[i][j];
#endif
#else
                    HrtfFastConv->leftHRIRReal_FOA_fx[i][j] = leftHRIRReal_FOA_fx[i][j];
                    HrtfFastConv->leftHRIRImag_FOA_fx[i][j] = leftHRIRImag_FOA_fx[i][j];
@@ -1077,8 +1116,13 @@ static ivas_error ivas_binaural_hrtf_open_fx(
                }
            }
        }
#ifdef USE_FASTCONV_PARAMBIN_16BIT_ROM
        Copy_Scale_sig_16_32_no_sat( fastconvReverberationTimes_fx, HrtfFastConv->fastconvReverberationTimes_fx, CLDFB_NO_CHANNELS_MAX, Q26 - FASTCONV_factor_Q_reverberationTimes_fx );
        Copy_Scale_sig_16_32_no_sat( fastconvReverberationEneCorrections_fx, HrtfFastConv->fastconvReverberationEneCorrections_fx, CLDFB_NO_CHANNELS_MAX, Q31 - FASTCONV_factor_Q_reverberationTimes_fx );
#else
        Copy32( fastconvReverberationTimes_fx, HrtfFastConv->fastconvReverberationTimes_fx, CLDFB_NO_CHANNELS_MAX );
        Copy32( fastconvReverberationEneCorrections_fx, HrtfFastConv->fastconvReverberationEneCorrections_fx, CLDFB_NO_CHANNELS_MAX );
#endif

        *hHrtfFastConv = HrtfFastConv;
    }
+18 −1
Original line number Diff line number Diff line
@@ -481,18 +481,35 @@ ivas_error ivas_dirac_dec_binaural_copy_hrtfs_fx(
        {
            return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for parametric binauralizer HRTF tables" );
        }
#ifdef USE_FASTCONV_PARAMBIN_16BIT_ROM
        FOR( i = 0; i < BINAURAL_CHANNELS; i++ )
        {
            FOR( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
                Copy( hrtfShCoeffsRe_fx[i][j], hrtfParambin->hrtfShCoeffsRe_fx[i][j], HRTF_NUM_BINS ); /*Q14*/
                Scale_sig( hrtfParambin->hrtfShCoeffsRe_fx[i][j], HRTF_NUM_BINS, Q14 - hrtfShCoeffs_factorQ_fx );
                Copy( hrtfShCoeffsIm_fx[i][j], hrtfParambin->hrtfShCoeffsIm_fx[i][j], HRTF_NUM_BINS ); /*Q14*/
                Scale_sig( hrtfParambin->hrtfShCoeffsIm_fx[i][j], HRTF_NUM_BINS, Q14 - hrtfShCoeffs_factorQ_fx );
            }
        }

        Copy_Scale_sig_16_32_no_sat( parametricReverberationTimes_fx, hrtfParambin->parametricReverberationTimes_fx, CLDFB_NO_CHANNELS_MAX, Q26 - parametricReverberationTimes_factorQ_fx );                            /*Q26*/
        Copy_Scale_sig_16_32_no_sat( parametricReverberationEneCorrections_fx, hrtfParambin->parametricReverberationEneCorrections_fx, CLDFB_NO_CHANNELS_MAX, Q31 - parametricReverberationEneCorrections_factorQ_fx ); /*Q31*/
        Copy_Scale_sig_16_32_no_sat( parametricEarlyPartEneCorrection_fx, hrtfParambin->parametricEarlyPartEneCorrection_fx, CLDFB_NO_CHANNELS_MAX, Q28 - parametricEarlyPartEneCorrection_factorQ_fx );                /*Q28*/
#else
        FOR( i = 0; i < BINAURAL_CHANNELS; i++ )
        {
            FOR( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
                Copy( hrtfShCoeffsRe_fx[i][j], hrtfParambin->hrtfShCoeffsRe_fx[i][j], HRTF_NUM_BINS ); /*Q14*/
                Copy( hrtfShCoeffsIm_fx[i][j], hrtfParambin->hrtfShCoeffsIm_fx[i][j], HRTF_NUM_BINS ); /*Q14*/
            }
        }

        Copy32( parametricReverberationTimes_fx, hrtfParambin->parametricReverberationTimes_fx, CLDFB_NO_CHANNELS_MAX );                   /*Q26*/
        Copy32( parametricReverberationEneCorrections_fx, hrtfParambin->parametricReverberationEneCorrections_fx, CLDFB_NO_CHANNELS_MAX ); /*Q31*/
        Copy32( parametricEarlyPartEneCorrection_fx, hrtfParambin->parametricEarlyPartEneCorrection_fx, CLDFB_NO_CHANNELS_MAX );           /*Q28*/

#endif
        *hHrtfParambin = hrtfParambin;
    }

+2 −2
Original line number Diff line number Diff line
@@ -91,13 +91,13 @@ extern Word16 leftBRIRImag_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTA
extern Word16 rightBRIRReal_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; /* Q29 */
extern Word16 rightBRIRImag_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; /* Q29 */
/* Reverberation parameters based on BRIRs for fastconv */
extern Word16 fastconvReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX];          /* Q31 */
extern Word16 fastconvReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX];          /* Q26 */
extern Word16 fastconvReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */

/* Binaural rendering data set based on BRIRs, to be used in a combined manner
 * with the above binaural rendering data set based on HRIRs for parametric
 * renderer */
extern const Word16 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX];          /* Q31 */
extern const Word16 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX];          /* Q26 */
extern const Word16 parametricReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */
extern const Word16 parametricEarlyPartEneCorrection_fx[CLDFB_NO_CHANNELS_MAX];      /* Q28 */

+1 −2
Original line number Diff line number Diff line
@@ -67554,5 +67554,4 @@ Word32 cosine_table_Q31 [181] = {
#undef WMC_TOOL_SKIP
/* clang-format on */
Loading