Commit 8189dbff authored by emerit's avatar emerit
Browse files

bug fix fasctconv ok

parent fd5bf4ae
Loading
Loading
Loading
Loading
+85 −57
Original line number Diff line number Diff line
@@ -71,6 +71,7 @@ static void ivas_binRenderer_filterModule_fx(
    Word16 *Q_filterStates;
#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
    const Word16 *filterTapsLeftRealPtr_fx, *filterTapsLeftImagPtr_fx, *filterTapsRightRealPtr_fx, *filterTapsRightImagPtr_fx;
    const Word16 Q_filter = Q15 + ( Q15 - hBinRenderer->hBinRenConvModule->Q_factor_filters ) - ( Q31 - Q29 );
#else
    const Word32 *filterTapsLeftRealPtr_fx, *filterTapsLeftImagPtr_fx, *filterTapsRightRealPtr_fx, *filterTapsRightImagPtr_fx;
#endif
@@ -108,6 +109,16 @@ static void ivas_binRenderer_filterModule_fx(
                    filterStatesLeftImagPtr_fx[tapIdx] = filterStatesLeftImagPtr_fx[tapIdx - 1];
                    move32();

#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
                    W_sub1 = W_sub( W_mult_32_32( filterStatesLeftRealPtr_fx[tapIdx], L_shl( filterTapsLeftRealPtr_fx[tapIdx], Q_filter ) ),
                                    W_mult_32_32( filterStatesLeftImagPtr_fx[tapIdx], L_shl( filterTapsLeftImagPtr_fx[tapIdx], Q_filter ) ) ); // Q29 + Q_filterStates[tapIdx - 1]
                    W_add1 = W_add( W_mult_32_32( filterStatesLeftRealPtr_fx[tapIdx], L_shl( filterTapsLeftImagPtr_fx[tapIdx], Q_filter ) ),
                                    W_mult_32_32( filterStatesLeftImagPtr_fx[tapIdx], L_shl( filterTapsLeftRealPtr_fx[tapIdx], Q_filter ) ) ); // Q29 + Q_filterStates[tapIdx - 1]
                    W_sub2 = W_sub( W_mult_32_32( filterStatesLeftRealPtr_fx[tapIdx], L_shl( filterTapsRightRealPtr_fx[tapIdx], Q_filter ) ),
                                    W_mult_32_32( filterStatesLeftImagPtr_fx[tapIdx], L_shl( filterTapsRightImagPtr_fx[tapIdx], Q_filter ) ) ); // Q29 + Q_filterStates[tapIdx - 1]
                    W_add2 = W_add( W_mult_32_32( filterStatesLeftRealPtr_fx[tapIdx], L_shl( filterTapsRightImagPtr_fx[tapIdx], Q_filter ) ),
                                    W_mult_32_32( filterStatesLeftImagPtr_fx[tapIdx], L_shl( filterTapsRightRealPtr_fx[tapIdx], Q_filter ) ) ); // Q29 + Q_filterStates[tapIdx - 1]
#else
                    W_sub1 = W_sub( W_mult0_32_32( filterStatesLeftRealPtr_fx[tapIdx], filterTapsLeftRealPtr_fx[tapIdx] ),
                                    W_mult0_32_32( filterStatesLeftImagPtr_fx[tapIdx], filterTapsLeftImagPtr_fx[tapIdx] ) ); // Q29 + Q_filterStates[tapIdx - 1]
                    W_add1 = W_add( W_mult0_32_32( filterStatesLeftRealPtr_fx[tapIdx], filterTapsLeftImagPtr_fx[tapIdx] ),
@@ -116,7 +127,7 @@ static void ivas_binRenderer_filterModule_fx(
                                    W_mult0_32_32( filterStatesLeftImagPtr_fx[tapIdx], filterTapsRightImagPtr_fx[tapIdx] ) ); // Q29 + Q_filterStates[tapIdx - 1]
                    W_add2 = W_add( W_mult0_32_32( filterStatesLeftRealPtr_fx[tapIdx], filterTapsRightImagPtr_fx[tapIdx] ),
                                    W_mult0_32_32( filterStatesLeftImagPtr_fx[tapIdx], filterTapsRightRealPtr_fx[tapIdx] ) ); // Q29 + Q_filterStates[tapIdx - 1]

#endif
                    outRealLeft_fx = W_shr( outRealLeft_fx, sub( Q_filterStates[tapIdx], Q_filterStates[tapIdx - 1] ) );
                    outImagLeft_fx = W_shr( outImagLeft_fx, sub( Q_filterStates[tapIdx], Q_filterStates[tapIdx - 1] ) );
                    outRealRight_fx = W_shr( outRealRight_fx, sub( Q_filterStates[tapIdx], Q_filterStates[tapIdx - 1] ) );
@@ -145,6 +156,29 @@ static void ivas_binRenderer_filterModule_fx(
                /* Left Real and Imag */
                // Q29 + Q_curr

#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
                out_Conv_CLDFB_real[0][k][bandIdx] = W_add( out_Conv_CLDFB_real[0][k][bandIdx],
                                                            W_add( W_shr( outRealLeft_fx, sub( Q_filterStates[1], Q_curr ) ),
                                                                   W_sub( W_mult_32_32( filterStatesLeftRealPtr_fx[0], L_shl( filterTapsLeftRealPtr_fx[0], Q_filter ) ),
                                                                          W_mult_32_32( filterStatesLeftImagPtr_fx[0], L_shl( filterTapsLeftImagPtr_fx[0], Q_filter ) ) ) ) ); // Q29
                move64();
                out_Conv_CLDFB_imag[0][k][bandIdx] = W_add( out_Conv_CLDFB_imag[0][k][bandIdx],
                                                            W_add( W_shr( outImagLeft_fx, sub( Q_filterStates[1], Q_curr ) ),
                                                                   W_add( W_mult_32_32( filterStatesLeftRealPtr_fx[0], L_shl( filterTapsLeftImagPtr_fx[0], Q_filter ) ),
                                                                          W_mult_32_32( filterStatesLeftImagPtr_fx[0], L_shl( filterTapsLeftRealPtr_fx[0], Q_filter ) ) ) ) ); // Q29
                move64();
                /* Right Real and Imag */
                out_Conv_CLDFB_real[1][k][bandIdx] = W_add( out_Conv_CLDFB_real[1][k][bandIdx],
                                                            W_add( W_shr( outRealRight_fx, sub( Q_filterStates[1], Q_curr ) ),
                                                                   W_sub( W_mult_32_32( filterStatesLeftRealPtr_fx[0], L_shl( filterTapsRightRealPtr_fx[0], Q_filter ) ),
                                                                          W_mult_32_32( filterStatesLeftImagPtr_fx[0], L_shl( filterTapsRightImagPtr_fx[0], Q_filter ) ) ) ) ); // Q29
                move64();
                out_Conv_CLDFB_imag[1][k][bandIdx] = W_add( out_Conv_CLDFB_imag[1][k][bandIdx],
                                                            W_add( W_shr( outImagRight_fx, sub( Q_filterStates[1], Q_curr ) ),
                                                                   W_add( W_mult_32_32( filterStatesLeftRealPtr_fx[0], L_shl( filterTapsRightImagPtr_fx[0], Q_filter ) ),
                                                                          W_mult_32_32( filterStatesLeftImagPtr_fx[0], L_shl( filterTapsRightRealPtr_fx[0], Q_filter ) ) ) ) ); // Q29
                move64();
#else
                out_Conv_CLDFB_real[0][k][bandIdx] = W_add( out_Conv_CLDFB_real[0][k][bandIdx],
                                                            W_add( W_shr( outRealLeft_fx, sub( Q_filterStates[1], Q_curr ) ),
                                                                   W_sub( W_mult0_32_32( filterStatesLeftRealPtr_fx[0], filterTapsLeftRealPtr_fx[0] ),
@@ -167,6 +201,7 @@ static void ivas_binRenderer_filterModule_fx(
                                                                   W_add( W_mult0_32_32( filterStatesLeftRealPtr_fx[0], filterTapsRightImagPtr_fx[0] ),
                                                                          W_mult0_32_32( filterStatesLeftImagPtr_fx[0], filterTapsRightRealPtr_fx[0] ) ) ) ); // Q29
                move64();
#endif
            }
        }
    }
@@ -213,6 +248,8 @@ static ivas_error ivas_binRenderer_convModuleOpen(
#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
    hBinRenConvModule->numTaps = hHrtf->ntaps;
    move16();
    hBinRenConvModule->Q_factor_filters = hHrtf->factor_Q_filters_fx;
    move16();
#endif
    IF( EQ_16( renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) )
    {
@@ -366,78 +403,46 @@ static ivas_error ivas_binRenderer_convModuleOpen(
    }


#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
    IF( ( hBinRenConvModule->filterStatesLeftReal_fx = (Word16 ***) malloc( hBinRenderer->conv_band * sizeof( Word16 ** ) ) ) == NULL )
#else
    IF( ( hBinRenConvModule->filterStatesLeftReal_fx = (Word32 ***) malloc( hBinRenderer->conv_band * sizeof( Word32 ** ) ) ) == NULL )
#endif
    {
        return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
    }

#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
    IF( ( hBinRenConvModule->filterStatesLeftImag_fx = (Word16 ***) malloc( hBinRenderer->conv_band * sizeof( Word16 ** ) ) ) == NULL )
#else
    IF( ( hBinRenConvModule->filterStatesLeftImag_fx = (Word32 ***) malloc( hBinRenderer->conv_band * sizeof( Word32 ** ) ) ) == NULL )
#endif
    {
        return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
    }

#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
    IF( ( hBinRenConvModule->Q_filterStatesLeft = (Word16 ***) malloc( hBinRenderer->conv_band * sizeof( Word16 ** ) ) ) == NULL )
#else
    IF( ( hBinRenConvModule->Q_filterStatesLeft = (Word16 ***) malloc( hBinRenderer->conv_band * sizeof( Word16 ** ) ) ) == NULL )
#endif
    {
        return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
    }

    FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ )
    {
#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
        IF( ( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx] = (Word16 **) malloc( hBinRenderer->nInChannels * sizeof( Word16 * ) ) ) == NULL )
#else
        IF( ( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx] = (Word32 **) malloc( hBinRenderer->nInChannels * sizeof( Word32 * ) ) ) == NULL )
#endif
        {
            return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
        }

#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
        IF( ( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx] = (Word16 **) malloc( hBinRenderer->nInChannels * sizeof( Word16 * ) ) ) == NULL )
#else
        IF( ( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx] = (Word32 **) malloc( hBinRenderer->nInChannels * sizeof( Word32 * ) ) ) == NULL )
#endif
        {
            return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
        }

#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
        IF( ( hBinRenConvModule->Q_filterStatesLeft[bandIdx] = (Word16 **) malloc( hBinRenderer->nInChannels * sizeof( Word16 * ) ) ) == NULL )
#else
        IF( ( hBinRenConvModule->Q_filterStatesLeft[bandIdx] = (Word16 **) malloc( hBinRenderer->nInChannels * sizeof( Word16 * ) ) ) == NULL )
#endif
        {
            return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
        }

        FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ )
        {
#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
            IF( ( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx] = (Word16 *) malloc( hBinRenConvModule->numTapsArray[bandIdx] * sizeof( Word16 ) ) ) == NULL )
#else
            IF( ( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx] = (Word32 *) malloc( hBinRenConvModule->numTapsArray[bandIdx] * sizeof( Word32 ) ) ) == NULL )
#endif
            {
                return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
            }

#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
            IF( ( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx] = (Word16 *) malloc( hBinRenConvModule->numTapsArray[bandIdx] * sizeof( Word16 ) ) ) == NULL )
#else
            IF( ( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx] = (Word32 *) malloc( hBinRenConvModule->numTapsArray[bandIdx] * sizeof( Word32 ) ) ) == NULL )
#endif
            {
                return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) );
            }
@@ -453,7 +458,7 @@ static ivas_error ivas_binRenderer_convModuleOpen(
    {
        FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ )
        {
            Word16 tmp = 0;
            Word16 tmp = chIdx;
            move16();

            IF( isLoudspeaker )
@@ -504,13 +509,8 @@ static ivas_error ivas_binRenderer_convModuleOpen(
        for ( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ )
        {
            /* set the memories to zero */
#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
            set16_zero_fx( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx], hBinRenConvModule->numTapsArray[bandIdx] );
            set16_zero_fx( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx], hBinRenConvModule->numTapsArray[bandIdx] );
#else
            set_zero_fx( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx], hBinRenConvModule->numTapsArray[bandIdx] );
            set_zero_fx( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx], hBinRenConvModule->numTapsArray[bandIdx] );
#endif
        }
    }
#else
@@ -519,13 +519,8 @@ static ivas_error ivas_binRenderer_convModuleOpen(
            IF( EQ_16( renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) )
            {
                /* set the memories to zero */
#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
                set16_fx( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx], 0, hBinRenConvModule->numTapsArray[bandIdx] );
                set16_fx( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx], 0, hBinRenConvModule->numTapsArray[bandIdx] );
#else
                set32_fx( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx], 0, hBinRenConvModule->numTapsArray[bandIdx] );
                set32_fx( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx], 0, hBinRenConvModule->numTapsArray[bandIdx] );
#endif
                set16_fx( hBinRenConvModule->Q_filterStatesLeft[bandIdx][chIdx], 31, hBinRenConvModule->numTapsArray[bandIdx] );
                IF( isLoudspeaker )
                {
@@ -538,13 +533,8 @@ static ivas_error ivas_binRenderer_convModuleOpen(
            ELSE
            {
                /* set the memories to zero */
#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
                set16_fx( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx], 0, hBinRenConvModule->numTapsArray[bandIdx] );
                set16_fx( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx], 0, hBinRenConvModule->numTapsArray[bandIdx] );
#else
                set32_fx( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx], 0, hBinRenConvModule->numTaps );
                set32_fx( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx], 0, hBinRenConvModule->numTaps );
#endif
                set16_fx( hBinRenConvModule->Q_filterStatesLeft[bandIdx][chIdx], 31, hBinRenConvModule->numTaps );
                IF( isLoudspeaker )
                {
@@ -614,6 +604,14 @@ void ivas_init_binaural_hrtf_fx(
    move16();
    HrtfFastConv->ntaps = 0;
    move16();
    HrtfFastConv->factor_Q_latency_s_fx = 0;
    move16();
    HrtfFastConv->factor_Q_filters_fx = 0;
    move16();
    HrtfFastConv->factor_Q_ReverberationTimes_fx = 0;
    move16();
    HrtfFastConv->factor_Q_ReverberationEneCorrections_fx = 0;
    move16();
#else
    HrtfFastConv->leftHRIRReal_HOA3_fx = NULL;
    HrtfFastConv->leftHRIRImag_HOA3_fx = NULL;
@@ -975,6 +973,8 @@ static ivas_error ivas_binaural_hrtf_open_fx(
#ifdef FIX_POINT_HRTF_FILE_OPTIM
            HrtfFastConv->FASTCONV_latency_s_fx = FASTCONV_HRIR_latency_s_fx;
            HrtfFastConv->ntaps = BINAURAL_NTAPS;
            HrtfFastConv->factor_Q_latency_s_fx = FASTCONV_factor_Q_HRIR_latency_s_fx;
            move16();
            move16();
#else
            HrtfFastConv->FASTCONV_HRIR_latency_s_fx = FASTCONV_HRIR_latency_s_fx;
@@ -990,6 +990,8 @@ static ivas_error ivas_binaural_hrtf_open_fx(
#ifdef FIX_POINT_HRTF_FILE_OPTIM
            HrtfFastConv->FASTCONV_latency_s_fx = FASTCONV_HOA2_latency_s_fx;
            HrtfFastConv->ntaps = BINAURAL_NTAPS_SBA;
            HrtfFastConv->factor_Q_latency_s_fx = FASTCONV_factor_Q_HOA2_latency_s_fx;
            move16();
            move16();
#else
            HrtfFastConv->FASTCONV_HOA2_latency_s_fx = FASTCONV_HOA2_latency_s_fx;
@@ -1006,6 +1008,8 @@ static ivas_error ivas_binaural_hrtf_open_fx(
#ifdef FIX_POINT_HRTF_FILE_OPTIM
            HrtfFastConv->FASTCONV_latency_s_fx = FASTCONV_HOA3_latency_s_fx;
            HrtfFastConv->ntaps = BINAURAL_NTAPS_SBA;
            HrtfFastConv->factor_Q_latency_s_fx = FASTCONV_factor_Q_HOA3_latency_s_fx;
            move16();
            move16();
#else
            HrtfFastConv->FASTCONV_HOA3_latency_s_fx = FASTCONV_HOA3_latency_s_fx;
@@ -1021,6 +1025,8 @@ static ivas_error ivas_binaural_hrtf_open_fx(
#ifdef FIX_POINT_HRTF_FILE_OPTIM
            HrtfFastConv->FASTCONV_latency_s_fx = FASTCONV_FOA_latency_s_fx;
            HrtfFastConv->ntaps = BINAURAL_NTAPS_SBA;
            HrtfFastConv->factor_Q_latency_s_fx = FASTCONV_factor_Q_FOA_latency_s_fx;
            move16();
            move16();
#else
            HrtfFastConv->FASTCONV_FOA_latency_s_fx = FASTCONV_FOA_latency_s_fx;
@@ -1037,6 +1043,8 @@ static ivas_error ivas_binaural_hrtf_open_fx(
#ifdef FIX_POINT_HRTF_FILE_OPTIM
            HrtfFastConv->FASTCONV_latency_s_fx = FASTCONV_BRIR_latency_s_fx;
            HrtfFastConv->ntaps = BINAURAL_NTAPS_MAX;
            HrtfFastConv->factor_Q_latency_s_fx = FASTCONV_factor_Q_BRIR_latency_s_fx;
            move16();
            move16();
#else
            HrtfFastConv->FASTCONV_BRIR_latency_s_fx = FASTCONV_BRIR_latency_s_fx;
@@ -1086,7 +1094,11 @@ static ivas_error ivas_binaural_hrtf_open_fx(
        }
        FOR( i = 0; i < BINAURAL_CONVBANDS; i++ )
        {
#ifdef FIX_POINT_HRTF_FILE_OPTIM
            IF( EQ_32( renderer_type, RENDERER_BINAURAL_FASTCONV ) && EQ_16( HrtfFastConv->n_channels, HRTF_LS_CHANNELS ) )
#else
            IF( EQ_32( renderer_type, RENDERER_BINAURAL_FASTCONV ) )
#endif
            {
                FOR( j = 0; j < HRTF_LS_CHANNELS; j++ )
                {
@@ -1103,7 +1115,11 @@ static ivas_error ivas_binaural_hrtf_open_fx(
#endif
                }
            }
#ifdef FIX_POINT_HRTF_FILE_OPTIM
            ELSE IF( EQ_32( renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) && EQ_16( HrtfFastConv->n_channels, HRTF_LS_CHANNELS ) )
#else
            ELSE IF( EQ_32( renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) )
#endif
            {
                FOR( j = 0; j < HRTF_LS_CHANNELS; j++ )
                {
@@ -1120,15 +1136,19 @@ static ivas_error ivas_binaural_hrtf_open_fx(
#endif
                }
            }
#ifdef FIX_POINT_HRTF_FILE_OPTIM
            IF( EQ_32( input_config, IVAS_AUDIO_CONFIG_HOA3 ) && EQ_16( HrtfFastConv->n_channels, HOA3_CHANNELS ) )
#else
            IF( EQ_32( input_config, IVAS_AUDIO_CONFIG_HOA3 ) )
#endif
            {
                FOR( j = 0; j < HOA3_CHANNELS; j++ )
                {
#ifdef FIX_POINT_HRTF_FILE_OPTIM
                    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] = leftHRIRReal_HOA3_fx[i][j];
                    HrtfFastConv->rightImag_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];
#else
                    HrtfFastConv->leftHRIRReal_HOA3_fx[i][j] = leftHRIRReal_HOA3_fx[i][j];
                    HrtfFastConv->leftHRIRImag_HOA3_fx[i][j] = leftHRIRImag_HOA3_fx[i][j];
@@ -1137,15 +1157,19 @@ static ivas_error ivas_binaural_hrtf_open_fx(
#endif
                }
            }
#ifdef FIX_POINT_HRTF_FILE_OPTIM
            IF( EQ_32( input_config, IVAS_AUDIO_CONFIG_HOA2 ) && EQ_16( HrtfFastConv->n_channels, HOA2_CHANNELS ) )
#else
            IF( EQ_32( input_config, IVAS_AUDIO_CONFIG_HOA2 ) )
#endif
            {
                FOR( j = 0; j < HOA2_CHANNELS; j++ )
                {
#ifdef FIX_POINT_HRTF_FILE_OPTIM
                    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] = leftHRIRReal_HOA2_fx[i][j];
                    HrtfFastConv->rightImag_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];
#else
                    HrtfFastConv->leftHRIRReal_HOA2_fx[i][j] = leftHRIRReal_HOA2_fx[i][j];
                    HrtfFastConv->leftHRIRImag_HOA2_fx[i][j] = leftHRIRImag_HOA2_fx[i][j];
@@ -1154,15 +1178,19 @@ static ivas_error ivas_binaural_hrtf_open_fx(
#endif
                }
            }
#ifdef FIX_POINT_HRTF_FILE_OPTIM
            IF( EQ_32( input_config, IVAS_AUDIO_CONFIG_FOA ) && EQ_16( HrtfFastConv->n_channels, FOA_CHANNELS ) )
#else
            IF( EQ_32( input_config, IVAS_AUDIO_CONFIG_FOA ) )
#endif
            {
                FOR( j = 0; j < FOA_CHANNELS; j++ )
                {
#ifdef FIX_POINT_HRTF_FILE_OPTIM
                    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] = leftHRIRReal_FOA_fx[i][j];
                    HrtfFastConv->rightImag_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];
#else
                    HrtfFastConv->leftHRIRReal_FOA_fx[i][j] = leftHRIRReal_FOA_fx[i][j];
                    HrtfFastConv->leftHRIRImag_FOA_fx[i][j] = leftHRIRImag_FOA_fx[i][j];
@@ -1173,7 +1201,9 @@ static ivas_error ivas_binaural_hrtf_open_fx(
            }
        }
#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
        HrtfFastConv->factor_Q_ReverberationTimes_fx = FASTCONV_factor_Q_fastconvReverberationTimes_fx;
        mvs2s( fastconvReverberationTimes_fx, HrtfFastConv->fastconvReverberationTimes_fx, CLDFB_NO_CHANNELS_MAX );
        HrtfFastConv->factor_Q_ReverberationEneCorrections_fx = FASTCONV_factor_Q_fastconvReverberationEneCorrections_fx;
        mvs2s( fastconvReverberationEneCorrections_fx, HrtfFastConv->fastconvReverberationEneCorrections_fx, CLDFB_NO_CHANNELS_MAX );
#else
        Copy32( fastconvReverberationTimes_fx, HrtfFastConv->fastconvReverberationTimes_fx, CLDFB_NO_CHANNELS_MAX );
@@ -1535,7 +1565,6 @@ ivas_error ivas_binRenderer_open_fx(
        {
            return error;
        }
#ifndef FIX_POINT_HRTF_FILE_OPTIM

        /* initialize the dmx matrix */
        FOR( chIdx = 0; chIdx < BINAURAL_CHANNELS; chIdx++ )
@@ -1546,7 +1575,6 @@ ivas_error ivas_binRenderer_open_fx(
                move32();
            }
        }
#endif
    }
    ELSE
    {
+1 −1
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@
 *------------------------------------------------------------------------*/
/* TD renderer default HRIR model */
#ifdef DEBUGGING
/* Generated on 29-Jan-2025 with Matlab version 23.2.0.2668659 (R2023b) Update 9 by marcemerit on MACA64 */
/* Generated on 30-Jan-2025 with Matlab version 23.2.0.2668659 (R2023b) Update 9 by marcemerit on MACA64 */
#endif
const Word16 defaultHRIR_rom_latency_s_Q_fx = 31;
+7 −7
Original line number Diff line number Diff line
@@ -44,13 +44,13 @@
#define WMC_TOOL_SKIP
#ifdef DEBUGGING
/* Generated on 29-Jan-2025 with Matlab version 23.2.0.2668659 (R2023b) Update 9 by marcemerit on MACA64 */
/* Generated on 30-Jan-2025 with Matlab version 23.2.0.2668659 (R2023b) Update 9 by marcemerit on MACA64 */
#endif
const Word16 FASTCONV_factor_Q_HOA3_latency_s_fx = 31;
const Word32 FASTCONV_HOA3_latency_s_fx = 44739;
const Word16 FASTCONV_HRIR_HOA3_fx= 14;
const Word16 FASTCONV_factor_Q_HOA3_fx= 14;
const Word16 leftHRIRReal_HOA3_fx[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]=
{
    {
@@ -3669,7 +3669,7 @@ const Word16 rightHRIRImag_HOA3_fx[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_N
const Word16 FASTCONV_factor_Q_HOA2_latency_s_fx = 31;
const Word32 FASTCONV_HOA2_latency_s_fx = 44739;
const Word16 FASTCONV_factor_Q_HRIR_HOA2_fx = 14;
const Word16 FASTCONV_factor_Q_HOA2_fx = 14;
const Word16 leftHRIRReal_HOA2_fx[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]=
{
    {
@@ -5888,7 +5888,7 @@ const Word16 rightHRIRImag_HOA2_fx[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_N
const Word16 FASTCONV_factor_Q_FOA_latency_s_fx = 31;
const Word32 FASTCONV_FOA_latency_s_fx = 44739;
const Word16 FASTCONV_factor_Q_HRIR_FOA_fx = 14;
const Word16 FASTCONV_factor_Q_FOA_fx = 14;
const Word16 leftHRIRReal_FOA_fx[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]=
{
    {
@@ -46945,14 +46945,14 @@ const Word16 rightBRIRImag_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTA
    }
};
const Word16 factor_Q_fastconvReverberationTimes_fx = 15;
const Word16 FASTCONV_factor_Q_fastconvReverberationTimes_fx = 15;
const Word16 fastconvReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX] = 
{
    13725,    6792,    6652,    6788,    7095,    7735,    7554,    7509,    7471,    7205,    7392,    7237,    7330,    7306,    7327,    7449,    7454,    7331,    7214,    7168,    7223,    7152,    6988,    6892,    6797,    6513,    6431,    6387,    6237,    6046,    5909,    5773,    5784,    5819,    6016,    6420,    6660,    6829,    7034,    7209,    7305,    7550,    7665,    7656,    7744,    7780,    7918,    7901,    7827,    7942,    8102,    8059,    8133,    8041,    7994,    7999,    7828,    7950,    7695,    8292,    
};
const Word16 factor_Q_fastconvReverberationEneCorrections_fx = 15;
const Word16 FASTCONV_factor_Q_fastconvReverberationEneCorrections_fx = 15;
const Word16 fastconvReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX] = 
{
    19,    7,    8,    7,    8,    50,    38,    36,    41,    43,    76,    80,    88,    89,    86,    84,    90,    89,    85,    83,    112,    58,    32,    23,    20,    18,    17,    19,    20,    18,    41,    40,    31,    20,    9,    3,    2,    2,    1,    1,    1,    1,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    
@@ -46960,7 +46960,7 @@ const Word16 fastconvReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX] =
#ifdef DEBUGGING
/* Generated on 29-Jan-2025 with Matlab version 23.2.0.2668659 (R2023b) Update 9 by marcemerit on MACA64 */
/* Generated on 30-Jan-2025 with Matlab version 23.2.0.2668659 (R2023b) Update 9 by marcemerit on MACA64 */
#endif
+12 −0

File changed.

Preview size limit exceeded, changes collapsed.

+3 −5
Original line number Diff line number Diff line
@@ -689,22 +689,20 @@ typedef struct ivas_dirac_dec_binaural_data_structure
typedef struct ivas_binaural_rendering_conv_module_struct_fx
{
#ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM
    Word16 Q_factor_filters;
    Word16 ***filterTapsLeftReal_fx;
    Word16 ***filterTapsLeftImag_fx;
    Word16 ***filterTapsRightReal_fx;
    Word16 ***filterTapsRightImag_fx;

    Word16 ***filterStatesLeftReal_fx;
    Word16 ***filterStatesLeftImag_fx;
#else
    Word32 ***filterTapsLeftReal_fx;
    Word32 ***filterTapsLeftImag_fx;
    Word32 ***filterTapsRightReal_fx;
    Word32 ***filterTapsRightImag_fx;
#endif

    Word32 ***filterStatesLeftReal_fx;
    Word32 ***filterStatesLeftImag_fx;
#endif
    Word16 ***Q_filterStatesLeft;

    Word16 numTapsArray[BINAURAL_CONVBANDS];
@@ -1544,7 +1542,7 @@ typedef struct ivas_hrtfs_fastconv_struct
    Word16 factor_Q_filters_fx;
    Word16 factor_Q_ReverberationTimes_fx;
    Word16 factor_Q_ReverberationEneCorrections_fx;
    Word16 FASTCONV_latency_s_fx;
    Word32 FASTCONV_latency_s_fx;
    uint16_t ntaps;
#ifdef FIX_POINT_HRTF_FILE_OPTIM
    Word16 ***leftReal_fx;
Loading