Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,7 @@ #define FIX_1766_TCX2ACELP_BWE_ISSUE /* VA : Fix rare BWE issue when switching from TCX to ACELP */ #define FIX_1781_SPECTRAL_GAPS /* FhG: Change internal calculation of tcx_noise_factor_ivas_fx() to 32-bit*/ #define FIX_ISSUE_1811_EXCEEDING_W_SHIFTS /* FhG: limit exceeding 64bit shifts */ #define FIX_1843_IO_QFACTOR_INIT /* FhG: initialize CRend's io_qfactor also in IVAS_rend */ /* #################### Start BASOP porting switches ############################ */ Loading lib_rend/lib_rend_fx.c +37 −1 Original line number Diff line number Diff line Loading @@ -246,8 +246,11 @@ static void freeMasaExtRenderer( MASA_EXT_REND_HANDLE *hMasaExtRendOut ); static void intermidiate_ext_dirac_render( MASA_EXT_REND_HANDLE hMasaExtRend, Word16 to_fix ); static ivas_error renderSbaToMultiBinauralCldfb( input_sba *sbaInput, Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], const Word16 low_res_pre_rend_rot, const Word16 num_subframes, const Word16 Q_in ); #ifdef FIX_1843_IO_QFACTOR_INIT static ivas_error renderSbaToMultiBinaural( input_sba *sbaInput, const AUDIO_CONFIG outConfig, Word32 out[][L_FRAME48k], const Word16 *pq_fact ); #else static ivas_error renderSbaToMultiBinaural( input_sba *sbaInput, const AUDIO_CONFIG outConfig, Word32 out[][L_FRAME48k] ); #endif /*-------------------------------------------------------------------* Loading Loading @@ -6080,6 +6083,9 @@ static ivas_error renderIsmToBinauralRoom( move16(); #ifdef FIX_1843_IO_QFACTOR_INIT *ismInput->crendWrapper->p_io_qfactor = *exp; #endif /* render 7_1_4 with BRIRs */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( ismInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, ismInput->base.inputBuffer.config.numSamplesPerChannel, *ismInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { Loading Loading @@ -6820,6 +6826,9 @@ static ivas_error renderMcToBinaural( CREND_HANDLE hCrend; hCrend = mcInput->crendWrapper->hCrend[0]; #ifdef FIX_1843_IO_QFACTOR_INIT *mcInput->crendWrapper->p_io_qfactor = exp; #endif /* call CREND */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer_fx, p_tmpRendBuffer_fx, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { Loading Loading @@ -6941,6 +6950,9 @@ static ivas_error renderMcToBinauralRoom( CREND_HANDLE hCrend; hCrend = mcInput->crendWrapper->hCrend[0]; #ifdef FIX_1843_IO_QFACTOR_INIT *mcInput->crendWrapper->p_io_qfactor = exp; #endif /* call CREND */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { Loading Loading @@ -7053,6 +7065,9 @@ static ivas_error renderMcCustomLsToBinauralRoom( CREND_HANDLE hCrend; hCrend = mcInput->crendWrapper->hCrend[0]; #ifdef FIX_1843_IO_QFACTOR_INIT *mcInput->crendWrapper->p_io_qfactor = exp; #endif /* call CREND */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { Loading Loading @@ -7292,6 +7307,9 @@ static ivas_error renderMcToSplitBinaural( copyBufferTo2dArray_fx( tmpRotBuffer, tmpRendBuffer ); #ifdef FIX_1843_IO_QFACTOR_INIT *mcInput->crendWrapper->p_io_qfactor = exp; #endif /* call CREND (rotation already performed) */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, pos_idx ) ), IVAS_ERR_OK ) ) { Loading Loading @@ -7475,7 +7493,12 @@ static void renderSbaToSba( static ivas_error renderSbaToMultiBinaural( input_sba *sbaInput, const AUDIO_CONFIG outConfig, #ifdef FIX_1843_IO_QFACTOR_INIT Word32 out[][L_FRAME48k], const Word16 *pq_fact ) #else Word32 out[][L_FRAME48k] ) #endif { Word32 tmpCrendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; Word32 *p_tmpCrendBuffer[MAX_OUTPUT_CHANNELS]; Loading Loading @@ -7560,6 +7583,9 @@ static ivas_error renderSbaToMultiBinaural( assert( sbaInput->crendWrapper->hCrend[0]->hReverb == NULL ); #ifdef FIX_1843_IO_QFACTOR_INIT *sbaInput->crendWrapper->p_io_qfactor = *pq_fact; #endif /* call CREND */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, sbaInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate, pos_idx ) ), IVAS_ERR_OK ) ) { Loading Loading @@ -7632,7 +7658,11 @@ static ivas_error renderSbaToSplitBinaural( } else { #ifdef FIX_1843_IO_QFACTOR_INIT IF( ( error = renderSbaToMultiBinaural( sbaInput, outConfig, tmpCrendBuffer, outAudio.pq_fact ) ) != IVAS_ERR_OK ) #else IF( ( error = renderSbaToMultiBinaural( sbaInput, outConfig, tmpCrendBuffer ) ) != IVAS_ERR_OK ) #endif { return error; } Loading Loading @@ -7731,6 +7761,9 @@ static ivas_error renderSbaToBinaural( CREND_HANDLE hCrend; hCrend = sbaInput->crendWrapper->hCrend[0]; #ifdef FIX_1843_IO_QFACTOR_INIT *sbaInput->crendWrapper->p_io_qfactor = *outAudio.pq_fact; #endif /* call CREND */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, sbaInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, output_fx, output_fx, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { Loading Loading @@ -7843,6 +7876,9 @@ static ivas_error renderSbaToBinauralRoom( } copyBufferTo2dArray_fx( tmpMcBuffer, tmpCrendBuffer ); #ifdef FIX_1843_IO_QFACTOR_INIT *sbaInput->crendWrapper->p_io_qfactor = *outAudio.pq_fact; #endif /* call CREND */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { Loading Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,7 @@ #define FIX_1766_TCX2ACELP_BWE_ISSUE /* VA : Fix rare BWE issue when switching from TCX to ACELP */ #define FIX_1781_SPECTRAL_GAPS /* FhG: Change internal calculation of tcx_noise_factor_ivas_fx() to 32-bit*/ #define FIX_ISSUE_1811_EXCEEDING_W_SHIFTS /* FhG: limit exceeding 64bit shifts */ #define FIX_1843_IO_QFACTOR_INIT /* FhG: initialize CRend's io_qfactor also in IVAS_rend */ /* #################### Start BASOP porting switches ############################ */ Loading
lib_rend/lib_rend_fx.c +37 −1 Original line number Diff line number Diff line Loading @@ -246,8 +246,11 @@ static void freeMasaExtRenderer( MASA_EXT_REND_HANDLE *hMasaExtRendOut ); static void intermidiate_ext_dirac_render( MASA_EXT_REND_HANDLE hMasaExtRend, Word16 to_fix ); static ivas_error renderSbaToMultiBinauralCldfb( input_sba *sbaInput, Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], const Word16 low_res_pre_rend_rot, const Word16 num_subframes, const Word16 Q_in ); #ifdef FIX_1843_IO_QFACTOR_INIT static ivas_error renderSbaToMultiBinaural( input_sba *sbaInput, const AUDIO_CONFIG outConfig, Word32 out[][L_FRAME48k], const Word16 *pq_fact ); #else static ivas_error renderSbaToMultiBinaural( input_sba *sbaInput, const AUDIO_CONFIG outConfig, Word32 out[][L_FRAME48k] ); #endif /*-------------------------------------------------------------------* Loading Loading @@ -6080,6 +6083,9 @@ static ivas_error renderIsmToBinauralRoom( move16(); #ifdef FIX_1843_IO_QFACTOR_INIT *ismInput->crendWrapper->p_io_qfactor = *exp; #endif /* render 7_1_4 with BRIRs */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( ismInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, ismInput->base.inputBuffer.config.numSamplesPerChannel, *ismInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { Loading Loading @@ -6820,6 +6826,9 @@ static ivas_error renderMcToBinaural( CREND_HANDLE hCrend; hCrend = mcInput->crendWrapper->hCrend[0]; #ifdef FIX_1843_IO_QFACTOR_INIT *mcInput->crendWrapper->p_io_qfactor = exp; #endif /* call CREND */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer_fx, p_tmpRendBuffer_fx, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { Loading Loading @@ -6941,6 +6950,9 @@ static ivas_error renderMcToBinauralRoom( CREND_HANDLE hCrend; hCrend = mcInput->crendWrapper->hCrend[0]; #ifdef FIX_1843_IO_QFACTOR_INIT *mcInput->crendWrapper->p_io_qfactor = exp; #endif /* call CREND */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { Loading Loading @@ -7053,6 +7065,9 @@ static ivas_error renderMcCustomLsToBinauralRoom( CREND_HANDLE hCrend; hCrend = mcInput->crendWrapper->hCrend[0]; #ifdef FIX_1843_IO_QFACTOR_INIT *mcInput->crendWrapper->p_io_qfactor = exp; #endif /* call CREND */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { Loading Loading @@ -7292,6 +7307,9 @@ static ivas_error renderMcToSplitBinaural( copyBufferTo2dArray_fx( tmpRotBuffer, tmpRendBuffer ); #ifdef FIX_1843_IO_QFACTOR_INIT *mcInput->crendWrapper->p_io_qfactor = exp; #endif /* call CREND (rotation already performed) */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, pos_idx ) ), IVAS_ERR_OK ) ) { Loading Loading @@ -7475,7 +7493,12 @@ static void renderSbaToSba( static ivas_error renderSbaToMultiBinaural( input_sba *sbaInput, const AUDIO_CONFIG outConfig, #ifdef FIX_1843_IO_QFACTOR_INIT Word32 out[][L_FRAME48k], const Word16 *pq_fact ) #else Word32 out[][L_FRAME48k] ) #endif { Word32 tmpCrendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; Word32 *p_tmpCrendBuffer[MAX_OUTPUT_CHANNELS]; Loading Loading @@ -7560,6 +7583,9 @@ static ivas_error renderSbaToMultiBinaural( assert( sbaInput->crendWrapper->hCrend[0]->hReverb == NULL ); #ifdef FIX_1843_IO_QFACTOR_INIT *sbaInput->crendWrapper->p_io_qfactor = *pq_fact; #endif /* call CREND */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, sbaInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate, pos_idx ) ), IVAS_ERR_OK ) ) { Loading Loading @@ -7632,7 +7658,11 @@ static ivas_error renderSbaToSplitBinaural( } else { #ifdef FIX_1843_IO_QFACTOR_INIT IF( ( error = renderSbaToMultiBinaural( sbaInput, outConfig, tmpCrendBuffer, outAudio.pq_fact ) ) != IVAS_ERR_OK ) #else IF( ( error = renderSbaToMultiBinaural( sbaInput, outConfig, tmpCrendBuffer ) ) != IVAS_ERR_OK ) #endif { return error; } Loading Loading @@ -7731,6 +7761,9 @@ static ivas_error renderSbaToBinaural( CREND_HANDLE hCrend; hCrend = sbaInput->crendWrapper->hCrend[0]; #ifdef FIX_1843_IO_QFACTOR_INIT *sbaInput->crendWrapper->p_io_qfactor = *outAudio.pq_fact; #endif /* call CREND */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, sbaInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, output_fx, output_fx, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { Loading Loading @@ -7843,6 +7876,9 @@ static ivas_error renderSbaToBinauralRoom( } copyBufferTo2dArray_fx( tmpMcBuffer, tmpCrendBuffer ); #ifdef FIX_1843_IO_QFACTOR_INIT *sbaInput->crendWrapper->p_io_qfactor = *outAudio.pq_fact; #endif /* call CREND */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { Loading