Loading lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -72,7 +72,6 @@ #endif /* Note: each compile switch (FIX_1101_...) is independent from the other ones */ #define OPT_BIN_REND_V2_NBE #define FIX_1348_BIT_PRECISION_IMPROVEMENT #define FIX_1348_BIT_PRECISION_IMPROVEMENT_QWIN Loading lib_dec/ivas_binRenderer_internal_fx.c +0 −77 Original line number Diff line number Diff line Loading @@ -88,31 +88,11 @@ static void ivas_binRenderer_filterModule_fx( Q_filterStates = hBinRenderer->hBinRenConvModule->Q_filterStates[pos_idx]; move16(); #ifdef OPT_BIN_REND_V2_NBE shift_q = add( sub( Q_filterStates, Q_curr ), 1 ); hBinRenderer->hBinRenConvModule->Q_filterStates[pos_idx] = Q_curr; #else /* OPT_BIN_REND_V2_NBE */ Word64 Cldfb_RealBuffer_64fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES]; Word64 Cldfb_ImagBuffer_64fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES]; #endif /* OPT_BIN_REND_V2_NBE */ FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) { #ifndef OPT_BIN_REND_V2_NBE set64_fx( &Cldfb_RealBuffer_64fx[0][0], 0, BINAURAL_CHANNELS * MAX_PARAM_SPATIAL_SUBFRAMES ); set64_fx( &Cldfb_ImagBuffer_64fx[0][0], 0, BINAURAL_CHANNELS * MAX_PARAM_SPATIAL_SUBFRAMES ); FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ ) { filterStatesLeftRealPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftReal_fx[pos_idx][bandIdx][chIdx][0] ); filterStatesLeftImagPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftImag_fx[pos_idx][bandIdx][chIdx][0] ); filterTapsLeftRealPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsLeftReal_fx[bandIdx][chIdx]; // Q29 filterTapsLeftImagPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsLeftImag_fx[bandIdx][chIdx]; // Q29 filterTapsRightRealPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsRightReal_fx[bandIdx][chIdx]; // Q29 filterTapsRightImagPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsRightImag_fx[bandIdx][chIdx]; // Q29 #endif /* OPT_BIN_REND_V2_NBE */ FOR( k = 0; k < numTimeSlots; k++ ) { Word64 outRealLeft_fx = 0, outRealRight_fx = 0, outImagLeft_fx = 0, outImagRight_fx = 0; Loading @@ -120,7 +100,6 @@ static void ivas_binRenderer_filterModule_fx( move64(); move64(); move64(); #ifdef OPT_BIN_REND_V2_NBE Word64 outRealLeft = 0, outRealRight = 0, outImagLeft = 0, outImagRight = 0; move64(); move64(); Loading @@ -136,7 +115,6 @@ static void ivas_binRenderer_filterModule_fx( filterTapsLeftImagPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsLeftImag_fx[bandIdx][chIdx]; // Q29 filterTapsRightRealPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsRightReal_fx[bandIdx][chIdx]; // Q29 filterTapsRightImagPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsRightImag_fx[bandIdx][chIdx]; // Q29 #endif /* OPT_BIN_REND_V2_NBE */ FOR( tapIdx = hBinRenderer->hBinRenConvModule->numTapsArray[bandIdx] - 1; tapIdx > 0; tapIdx-- ) { Loading @@ -160,25 +138,11 @@ static void ivas_binRenderer_filterModule_fx( outImagRight_fx = W_mac_32_32( outImagRight_fx, filterStatesLeftImagPtr_fx[tapIdx], filterTapsRightRealPtr_fx[tapIdx] ); // Q30 + Q_filterStates } #ifndef OPT_BIN_REND_V2_NBE shift_q = add( sub( Q_filterStates, Q_curr ), 1 ); IF( shift_q != 0 ) { outRealLeft_fx = W_shr( outRealLeft_fx, shift_q ); // Q_curr + Q29 outImagLeft_fx = W_shr( outImagLeft_fx, shift_q ); // Q_curr + Q29 outRealRight_fx = W_shr( outRealRight_fx, shift_q ); // Q_curr + Q29 outImagRight_fx = W_shr( outImagRight_fx, shift_q ); // Q_curr + Q29 hBinRenderer->hBinRenConvModule->Q_filterStates[pos_idx] = Q_curr; move16(); } #endif /* OPT_BIN_REND_V2_NBE */ filterStatesLeftRealPtr_fx[0] = CLDFB_real[chIdx][k][bandIdx]; move32(); filterStatesLeftImagPtr_fx[0] = CLDFB_imag[chIdx][k][bandIdx]; move32(); #ifdef OPT_BIN_REND_V2_NBE /* Left Real and Imag */ Word32 neg_temp2 = L_negate( filterStatesLeftImagPtr_fx[0] ); // Q_curr Loading @@ -198,47 +162,6 @@ static void ivas_binRenderer_filterModule_fx( move32(); move32(); } #else /* OPT_BIN_REND_V2_NBE */ /* Left Real and Imag */ Word32 temp1 = L_shr( filterStatesLeftRealPtr_fx[0], 1 ); // Q_curr -1 Word32 temp2 = L_shr( filterStatesLeftImagPtr_fx[0], 1 ); // Q_curr -1 Word32 neg_temp2 = L_negate( temp2 ); // Q_curr -1 outRealLeft_fx = W_mac_32_32( outRealLeft_fx, temp1, filterTapsLeftRealPtr_fx[0] ); outRealLeft_fx = W_mac_32_32( outRealLeft_fx, neg_temp2, filterTapsLeftImagPtr_fx[0] ); Cldfb_RealBuffer_64fx[0][k] = W_add( Cldfb_RealBuffer_64fx[0][k], outRealLeft_fx ); // Q29 + Q_curr move64(); outImagLeft_fx = W_mac_32_32( outImagLeft_fx, temp1, filterTapsLeftImagPtr_fx[0] ); outImagLeft_fx = W_mac_32_32( outImagLeft_fx, temp2, filterTapsLeftRealPtr_fx[0] ); Cldfb_ImagBuffer_64fx[0][k] = W_add( Cldfb_ImagBuffer_64fx[0][k], outImagLeft_fx ); // Q29 + Q_curr move64(); /* Right Real and Imag */ outRealRight_fx = W_mac_32_32( outRealRight_fx, temp1, filterTapsRightRealPtr_fx[0] ); outRealRight_fx = W_mac_32_32( outRealRight_fx, neg_temp2, filterTapsRightImagPtr_fx[0] ); Cldfb_RealBuffer_64fx[1][k] = W_add( Cldfb_RealBuffer_64fx[1][k], outRealRight_fx ); // Q29 + Q_curr move64(); outImagRight_fx = W_mac_32_32( outImagRight_fx, temp1, filterTapsRightImagPtr_fx[0] ); outImagRight_fx = W_mac_32_32( outImagRight_fx, temp2, filterTapsRightRealPtr_fx[0] ); Cldfb_ImagBuffer_64fx[1][k] = W_add( Cldfb_ImagBuffer_64fx[1][k], outImagRight_fx ); // Q29 + Q_curr move64(); } } FOR( chIdx = 0; chIdx < BINAURAL_CHANNELS; chIdx++ ) { FOR( k = 0; k < MAX_PARAM_SPATIAL_SUBFRAMES; k++ ) { out_Conv_CLDFB_real[chIdx][k][bandIdx] = W_shl_sat_l( Cldfb_RealBuffer_64fx[chIdx][k], shift_q6 ); // Q6 move32(); out_Conv_CLDFB_imag[chIdx][k][bandIdx] = W_shl_sat_l( Cldfb_ImagBuffer_64fx[chIdx][k], shift_q6 ); // Q6 move32(); } } #endif /* OPT_BIN_REND_V2_NBE */ } Loading Loading
lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -72,7 +72,6 @@ #endif /* Note: each compile switch (FIX_1101_...) is independent from the other ones */ #define OPT_BIN_REND_V2_NBE #define FIX_1348_BIT_PRECISION_IMPROVEMENT #define FIX_1348_BIT_PRECISION_IMPROVEMENT_QWIN Loading
lib_dec/ivas_binRenderer_internal_fx.c +0 −77 Original line number Diff line number Diff line Loading @@ -88,31 +88,11 @@ static void ivas_binRenderer_filterModule_fx( Q_filterStates = hBinRenderer->hBinRenConvModule->Q_filterStates[pos_idx]; move16(); #ifdef OPT_BIN_REND_V2_NBE shift_q = add( sub( Q_filterStates, Q_curr ), 1 ); hBinRenderer->hBinRenConvModule->Q_filterStates[pos_idx] = Q_curr; #else /* OPT_BIN_REND_V2_NBE */ Word64 Cldfb_RealBuffer_64fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES]; Word64 Cldfb_ImagBuffer_64fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES]; #endif /* OPT_BIN_REND_V2_NBE */ FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) { #ifndef OPT_BIN_REND_V2_NBE set64_fx( &Cldfb_RealBuffer_64fx[0][0], 0, BINAURAL_CHANNELS * MAX_PARAM_SPATIAL_SUBFRAMES ); set64_fx( &Cldfb_ImagBuffer_64fx[0][0], 0, BINAURAL_CHANNELS * MAX_PARAM_SPATIAL_SUBFRAMES ); FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ ) { filterStatesLeftRealPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftReal_fx[pos_idx][bandIdx][chIdx][0] ); filterStatesLeftImagPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftImag_fx[pos_idx][bandIdx][chIdx][0] ); filterTapsLeftRealPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsLeftReal_fx[bandIdx][chIdx]; // Q29 filterTapsLeftImagPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsLeftImag_fx[bandIdx][chIdx]; // Q29 filterTapsRightRealPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsRightReal_fx[bandIdx][chIdx]; // Q29 filterTapsRightImagPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsRightImag_fx[bandIdx][chIdx]; // Q29 #endif /* OPT_BIN_REND_V2_NBE */ FOR( k = 0; k < numTimeSlots; k++ ) { Word64 outRealLeft_fx = 0, outRealRight_fx = 0, outImagLeft_fx = 0, outImagRight_fx = 0; Loading @@ -120,7 +100,6 @@ static void ivas_binRenderer_filterModule_fx( move64(); move64(); move64(); #ifdef OPT_BIN_REND_V2_NBE Word64 outRealLeft = 0, outRealRight = 0, outImagLeft = 0, outImagRight = 0; move64(); move64(); Loading @@ -136,7 +115,6 @@ static void ivas_binRenderer_filterModule_fx( filterTapsLeftImagPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsLeftImag_fx[bandIdx][chIdx]; // Q29 filterTapsRightRealPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsRightReal_fx[bandIdx][chIdx]; // Q29 filterTapsRightImagPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsRightImag_fx[bandIdx][chIdx]; // Q29 #endif /* OPT_BIN_REND_V2_NBE */ FOR( tapIdx = hBinRenderer->hBinRenConvModule->numTapsArray[bandIdx] - 1; tapIdx > 0; tapIdx-- ) { Loading @@ -160,25 +138,11 @@ static void ivas_binRenderer_filterModule_fx( outImagRight_fx = W_mac_32_32( outImagRight_fx, filterStatesLeftImagPtr_fx[tapIdx], filterTapsRightRealPtr_fx[tapIdx] ); // Q30 + Q_filterStates } #ifndef OPT_BIN_REND_V2_NBE shift_q = add( sub( Q_filterStates, Q_curr ), 1 ); IF( shift_q != 0 ) { outRealLeft_fx = W_shr( outRealLeft_fx, shift_q ); // Q_curr + Q29 outImagLeft_fx = W_shr( outImagLeft_fx, shift_q ); // Q_curr + Q29 outRealRight_fx = W_shr( outRealRight_fx, shift_q ); // Q_curr + Q29 outImagRight_fx = W_shr( outImagRight_fx, shift_q ); // Q_curr + Q29 hBinRenderer->hBinRenConvModule->Q_filterStates[pos_idx] = Q_curr; move16(); } #endif /* OPT_BIN_REND_V2_NBE */ filterStatesLeftRealPtr_fx[0] = CLDFB_real[chIdx][k][bandIdx]; move32(); filterStatesLeftImagPtr_fx[0] = CLDFB_imag[chIdx][k][bandIdx]; move32(); #ifdef OPT_BIN_REND_V2_NBE /* Left Real and Imag */ Word32 neg_temp2 = L_negate( filterStatesLeftImagPtr_fx[0] ); // Q_curr Loading @@ -198,47 +162,6 @@ static void ivas_binRenderer_filterModule_fx( move32(); move32(); } #else /* OPT_BIN_REND_V2_NBE */ /* Left Real and Imag */ Word32 temp1 = L_shr( filterStatesLeftRealPtr_fx[0], 1 ); // Q_curr -1 Word32 temp2 = L_shr( filterStatesLeftImagPtr_fx[0], 1 ); // Q_curr -1 Word32 neg_temp2 = L_negate( temp2 ); // Q_curr -1 outRealLeft_fx = W_mac_32_32( outRealLeft_fx, temp1, filterTapsLeftRealPtr_fx[0] ); outRealLeft_fx = W_mac_32_32( outRealLeft_fx, neg_temp2, filterTapsLeftImagPtr_fx[0] ); Cldfb_RealBuffer_64fx[0][k] = W_add( Cldfb_RealBuffer_64fx[0][k], outRealLeft_fx ); // Q29 + Q_curr move64(); outImagLeft_fx = W_mac_32_32( outImagLeft_fx, temp1, filterTapsLeftImagPtr_fx[0] ); outImagLeft_fx = W_mac_32_32( outImagLeft_fx, temp2, filterTapsLeftRealPtr_fx[0] ); Cldfb_ImagBuffer_64fx[0][k] = W_add( Cldfb_ImagBuffer_64fx[0][k], outImagLeft_fx ); // Q29 + Q_curr move64(); /* Right Real and Imag */ outRealRight_fx = W_mac_32_32( outRealRight_fx, temp1, filterTapsRightRealPtr_fx[0] ); outRealRight_fx = W_mac_32_32( outRealRight_fx, neg_temp2, filterTapsRightImagPtr_fx[0] ); Cldfb_RealBuffer_64fx[1][k] = W_add( Cldfb_RealBuffer_64fx[1][k], outRealRight_fx ); // Q29 + Q_curr move64(); outImagRight_fx = W_mac_32_32( outImagRight_fx, temp1, filterTapsRightImagPtr_fx[0] ); outImagRight_fx = W_mac_32_32( outImagRight_fx, temp2, filterTapsRightRealPtr_fx[0] ); Cldfb_ImagBuffer_64fx[1][k] = W_add( Cldfb_ImagBuffer_64fx[1][k], outImagRight_fx ); // Q29 + Q_curr move64(); } } FOR( chIdx = 0; chIdx < BINAURAL_CHANNELS; chIdx++ ) { FOR( k = 0; k < MAX_PARAM_SPATIAL_SUBFRAMES; k++ ) { out_Conv_CLDFB_real[chIdx][k][bandIdx] = W_shl_sat_l( Cldfb_RealBuffer_64fx[chIdx][k], shift_q6 ); // Q6 move32(); out_Conv_CLDFB_imag[chIdx][k][bandIdx] = W_shl_sat_l( Cldfb_ImagBuffer_64fx[chIdx][k], shift_q6 ); // Q6 move32(); } } #endif /* OPT_BIN_REND_V2_NBE */ } Loading