From 48a8e62359f414c82dd640ee8b6fbaed1f5f494d Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 14 Jun 2024 15:16:32 +0530 Subject: [PATCH] Fix for issue 789: Fluttering noise in SBA binaural room reverb output [x] Fix for issue 789 [x] tcxnoisebuf cleanup. --- lib_com/prot.h | 2 +- lib_com/tcx_utils.c | 2 +- lib_dec/dec_tcx.c | 2 +- lib_dec/igf_dec.c | 46 ++++++++++++------------ lib_dec/igf_dec_fx.c | 19 +++------- lib_dec/ivas_core_dec.c | 6 ---- lib_dec/ivas_mct_dec.c | 2 +- lib_dec/ivas_mct_dec_mct_fx.c | 23 ------------ lib_dec/ivas_stereo_mdct_core_dec_fx.c | 48 +------------------------ lib_dec/lib_dec_fx.c | 49 ++------------------------ lib_dec/stat_dec.h | 5 +-- 11 files changed, 38 insertions(+), 166 deletions(-) diff --git a/lib_com/prot.h b/lib_com/prot.h index 698b29187..817465058 100644 --- a/lib_com/prot.h +++ b/lib_com/prot.h @@ -7718,7 +7718,7 @@ void tcx_noise_filling_flt( const int16_t L_frame, const float tiltCompFactor, float fac_ns, - uint8_t *infoTCXNoise, + Word16 *infoTCXNoise, const int16_t element_mode /* i : IVAS element mode */ ); diff --git a/lib_com/tcx_utils.c b/lib_com/tcx_utils.c index 4cd7d8c8c..06d12bb36 100644 --- a/lib_com/tcx_utils.c +++ b/lib_com/tcx_utils.c @@ -840,7 +840,7 @@ void tcx_noise_filling_flt( const int16_t L_frame, const float tiltCompFactor, float fac_ns, - uint8_t *infoTCXNoise, + Word16 *infoTCXNoise, const int16_t element_mode /* i : IVAS element mode */ ) { diff --git a/lib_dec/dec_tcx.c b/lib_dec/dec_tcx.c index 4692a482e..586470bac 100644 --- a/lib_dec/dec_tcx.c +++ b/lib_dec/dec_tcx.c @@ -1178,7 +1178,7 @@ void decoder_tcx_noisefilling( nf_seed += (int16_t) ( abs( prm_sqQ[i] ) * i * 2 ); } } - tcx_noise_filling_flt( x, nf_seed, firstLine, noiseFillingSize, noiseTransWidth, L_frame, noiseTiltFactor, fac_ns, st->igf ? st->hIGFDec->infoTCXNoise : NULL, st->element_mode ); + tcx_noise_filling_flt( x, nf_seed, firstLine, noiseFillingSize, noiseTransWidth, L_frame, noiseTiltFactor, fac_ns, st->igf ? st->hIGFDec->infoTCXNoise_ptr : NULL, st->element_mode ); st->seed_tcx_plc = nf_seed; } diff --git a/lib_dec/igf_dec.c b/lib_dec/igf_dec.c index 6ef921b52..2afd2cb8a 100644 --- a/lib_dec/igf_dec.c +++ b/lib_dec/igf_dec.c @@ -58,7 +58,7 @@ #ifndef IVAS_FLOAT_FIXED static int16_t IGF_replaceTCXNoise_1_flr( const float *in, /* i : MDCT spectrum */ - const uint8_t *TCXNoise, /* i : tcx noise indicator vector */ + const int16_t *TCXNoise, /* i : tcx noise indicator vector */ const int16_t start, /* i : start MDCT subband index */ const int16_t stop, /* i : stop MDCT subband index */ float *totalNoiseNrg /* o : measured noise energy */ @@ -95,7 +95,7 @@ static int16_t IGF_replaceTCXNoise_1_flr( #ifndef IVAS_FLOAT_FIXED static void IGF_replaceTCXNoise_2_flt( float *in, /* i/o: MDCT spectrum */ - const uint8_t *TCXNoise, /* i : tcx noise indicator vector */ + const int16_t *TCXNoise, /* i : tcx noise indicator vector */ const int16_t start, /* i : start MDCT subband index */ const int16_t stop, /* i : stop MDCT subband index */ float totalNoiseNrg, /* i : measured noise energy */ @@ -141,7 +141,7 @@ static void IGF_replaceTCXNoise_2_flt( #ifndef IVAS_FLOAT_FIXED static void IGF_replaceTCXNoise_2_new_flt( float *in, /* i/o: MDCT spectrum */ - const uint8_t *TCXNoise, /* i : tcx noise indicator vector */ + const int16_t *TCXNoise, /* i : tcx noise indicator vector */ const int16_t start, /* i : start MDCT subband index */ const int16_t stop, /* i : stop MDCT subband index */ float totalNoiseNrg, /* i : measured noise energy */ @@ -326,7 +326,7 @@ static void IGF_setLinesToZero_flt( static void IGF_prep_flt( IGF_DEC_PRIVATE_DATA_HANDLE hPrivateData, /* i : IGF private data handle */ const int16_t igfGridIdx, /* i : in case of CELP->TCX switching, use 1.25 framelength */ - const uint8_t *TCXNoise, /* i : TCX noise vector */ + const int16_t *TCXNoise, /* i : TCX noise vector */ float *igf_spec, /* o : prepared IGF spectrum */ float *src_spec, /* i : source spectrum */ const int16_t element_mode /* i : IVAS element mode */ @@ -450,8 +450,8 @@ static void IGF_prepStereo_flt( IGF_DEC_PRIVATE_DATA_HANDLE hPrivateDataL, /* i : IGF private data handle */ IGF_DEC_PRIVATE_DATA_HANDLE hPrivateDataR, /* i : IGF private data handle */ const int16_t igfGridIdx, /* i : in case of CELP->TCX switching, use 1.25 framelength */ - const uint8_t *TCXNoiseL, /* i : TCX noise vector */ - const uint8_t *TCXNoiseR, /* i : TCX noise vector */ + const int16_t *TCXNoiseL, /* i : TCX noise vector */ + const int16_t *TCXNoiseR, /* i : TCX noise vector */ float *igf_specL, /* o : prepared IGF spectrum */ float *igf_specR, /* o : prepared IGF spectrum */ float *src_specL, /* i : source spectrum */ @@ -1214,7 +1214,7 @@ void IGFDecApplyMono_flt( mvr2r( hPrivateData->pSpecFlat_float, igf_spec, hGrid->startLine ); } - hPrivateData->n_noise_bands = IGF_replaceTCXNoise_1_flr( igf_spec, hIGFDec->infoTCXNoise, hGrid->minSrcSubband, hGrid->startLine, &hPrivateData->totalNoiseNrg_float ); + hPrivateData->n_noise_bands = IGF_replaceTCXNoise_1_flr( igf_spec, hIGFDec->infoTCXNoise_ptr, hGrid->minSrcSubband, hGrid->startLine, &hPrivateData->totalNoiseNrg_float ); break; } } @@ -1223,13 +1223,13 @@ void IGFDecApplyMono_flt( { if ( hPrivateData->currWhiteningLevel[i] == IGF_WHITENING_OFF ) { - hPrivateData->n_noise_bands_off = IGF_replaceTCXNoise_1_flr( hPrivateData->pSpecFlat_float, hIGFDec->infoTCXNoise, hGrid->minSrcSubband, hGrid->startLine, &hPrivateData->totalNoiseNrg_off_float ); + hPrivateData->n_noise_bands_off = IGF_replaceTCXNoise_1_flr( hPrivateData->pSpecFlat_float, hIGFDec->infoTCXNoise_ptr, hGrid->minSrcSubband, hGrid->startLine, &hPrivateData->totalNoiseNrg_off_float ); break; } } /* apply IGF in three steps: */ - IGF_prep_flt( hPrivateData, igfGridIdx, hIGFDec->infoTCXNoise, igf_spec, hPrivateData->pSpecFlat_float, element_mode ); + IGF_prep_flt( hPrivateData, igfGridIdx, hIGFDec->infoTCXNoise_ptr, igf_spec, hPrivateData->pSpecFlat_float, element_mode ); IGF_calc_flt( hPrivateData, igfGridIdx, spectrum, igf_spec ); IGF_appl_flt( hPrivateData, igfGridIdx, spectrum, igf_spec, hIGFDec->virtualSpec_float, hIGFDec->flag_sparse, 1 ); } @@ -1237,7 +1237,7 @@ void IGFDecApplyMono_flt( /* reset TCX noise indicator vector */ nLinesToReset = igfGridIdx == IGF_GRID_LB_SHORT ? 2 : 1; nLinesToReset = IGF_START_MX / nLinesToReset; - set_c( (int8_t *) ( hIGFDec->infoTCXNoise ), 0, nLinesToReset ); + set_s( (int16_t *) ( hIGFDec->infoTCXNoise_ptr ), 0, nLinesToReset ); return; } @@ -1327,7 +1327,7 @@ void IGFDecApplyStereo_flt( mvr2r( hPrivateDataL->pSpecFlat_float, igf_specL, hGrid->startLine ); } - hPrivateDataL->n_noise_bands = IGF_replaceTCXNoise_1_flr( igf_specL, hIGFDecL->infoTCXNoise, hGrid->minSrcSubband, hGrid->startLine, &hPrivateDataL->totalNoiseNrg_float ); + hPrivateDataL->n_noise_bands = IGF_replaceTCXNoise_1_flr( igf_specL, hIGFDecL->infoTCXNoise_ptr, hGrid->minSrcSubband, hGrid->startLine, &hPrivateDataL->totalNoiseNrg_float ); if ( !bfi ) { @@ -1338,7 +1338,7 @@ void IGFDecApplyStereo_flt( mvr2r( hPrivateDataR->pSpecFlat_float, igf_specR, hGrid->startLine ); } - hPrivateDataR->n_noise_bands = IGF_replaceTCXNoise_1_flr( igf_specR, hIGFDecR->infoTCXNoise, hGrid->minSrcSubband, hGrid->startLine, &hPrivateDataR->totalNoiseNrg_float ); + hPrivateDataR->n_noise_bands = IGF_replaceTCXNoise_1_flr( igf_specR, hIGFDecR->infoTCXNoise_ptr, hGrid->minSrcSubband, hGrid->startLine, &hPrivateDataR->totalNoiseNrg_float ); break; } @@ -1348,15 +1348,15 @@ void IGFDecApplyStereo_flt( { if ( hPrivateDataL->currWhiteningLevel[i] == IGF_WHITENING_OFF || hPrivateDataR->currWhiteningLevel[i] == IGF_WHITENING_OFF ) { - hPrivateDataL->n_noise_bands_off = IGF_replaceTCXNoise_1_flr( hPrivateDataL->pSpecFlat_float, hIGFDecL->infoTCXNoise, hGrid->minSrcSubband, hGrid->startLine, &hPrivateDataL->totalNoiseNrg_off_float ); + hPrivateDataL->n_noise_bands_off = IGF_replaceTCXNoise_1_flr( hPrivateDataL->pSpecFlat_float, hIGFDecL->infoTCXNoise_ptr, hGrid->minSrcSubband, hGrid->startLine, &hPrivateDataL->totalNoiseNrg_off_float ); - hPrivateDataR->n_noise_bands_off = IGF_replaceTCXNoise_1_flr( hPrivateDataR->pSpecFlat_float, hIGFDecR->infoTCXNoise, hGrid->minSrcSubband, hGrid->startLine, &hPrivateDataR->totalNoiseNrg_off_float ); + hPrivateDataR->n_noise_bands_off = IGF_replaceTCXNoise_1_flr( hPrivateDataR->pSpecFlat_float, hIGFDecR->infoTCXNoise_ptr, hGrid->minSrcSubband, hGrid->startLine, &hPrivateDataR->totalNoiseNrg_off_float ); break; } } /* apply IGF in three steps: */ - IGF_prepStereo_flt( hPrivateDataL, hPrivateDataR, igfGridIdx, hIGFDecL->infoTCXNoise, hIGFDecR->infoTCXNoise, igf_specL, igf_specR, hPrivateDataL->pSpecFlat_float, hPrivateDataR->pSpecFlat_float, coreMsMask ); + IGF_prepStereo_flt( hPrivateDataL, hPrivateDataR, igfGridIdx, hIGFDecL->infoTCXNoise_ptr, hIGFDecR->infoTCXNoise_ptr, igf_specL, igf_specR, hPrivateDataL->pSpecFlat_float, hPrivateDataR->pSpecFlat_float, coreMsMask ); IGF_calc_flt( hPrivateDataL, igfGridIdx, spectrumL, igf_specL ); IGF_calc_flt( hPrivateDataR, igfGridIdx, spectrumR, igf_specR ); @@ -1367,8 +1367,8 @@ void IGFDecApplyStereo_flt( /* reset TCX noise indicator vector */ nLinesToReset = ( igfGridIdx == IGF_GRID_LB_SHORT ) ? 2 : 1; nLinesToReset = IGF_START_MX / nLinesToReset; - set_c( (int8_t *) ( hIGFDecL->infoTCXNoise ), 0, nLinesToReset ); - set_c( (int8_t *) ( hIGFDecR->infoTCXNoise ), 0, nLinesToReset ); + set_s( (int16_t *) ( hIGFDecL->infoTCXNoise_ptr ), 0, nLinesToReset ); + set_s( (int16_t *) ( hIGFDecR->infoTCXNoise_ptr ), 0, nLinesToReset ); return; } @@ -1426,7 +1426,7 @@ void IGFDecSetMode_flt( } hIGFDec->flag_sparse = &hIGFDec->flag_sparseBuf[0]; - hIGFDec->infoTCXNoise = &hIGFDec->infoTCXNoiseBuf[0]; + hIGFDec->infoTCXNoise_ptr = &hIGFDec->infoTCXNoise_evs[0]; hIGFDec->virtualSpec_float = &hIGFDec->virtualSpecBuf[0]; #ifdef IVAS_FLOAT_FIXED hIGFDec->virtualSpec_fx = &hIGFDec->virtualSpec[0]; @@ -1457,7 +1457,7 @@ void IGFDecUpdateInfo_flt( H_IGF_GRID hGrid; hIGFDec->flag_sparse = &hIGFDec->flag_sparseBuf[0]; - hIGFDec->infoTCXNoise = &hIGFDec->infoTCXNoiseBuf[0]; + hIGFDec->infoTCXNoise_ptr = &hIGFDec->infoTCXNoise_evs[0]; hIGFDec->virtualSpec_float = &hIGFDec->virtualSpecBuf[0]; hIGFDec->igfData.pSpecFlat_float = &hIGFDec->igfData.pSpecFlatBuf[0]; hIGFDec->igfData.igfInfo.nfSeed = &hIGFDec->igfData.igfInfo.nfSeedBuf[0]; @@ -1493,7 +1493,7 @@ void IGFDecReplicateTCX10State_flt( ) { mvs2s( &hIGFDec->flag_sparseBuf[( N_MAX_TCX - IGF_START_MN ) / 2], &hIGFDec->flag_sparseBuf[0], ( N_MAX_TCX - IGF_START_MN ) / 2 ); - mvc2c( &hIGFDec->infoTCXNoiseBuf[( IGF_START_MX ) / 2], &hIGFDec->infoTCXNoiseBuf[0], ( IGF_START_MX ) / 2 ); + mvs2s( &hIGFDec->infoTCXNoise_evs[( IGF_START_MX ) / 2], &hIGFDec->infoTCXNoise_evs[0], ( IGF_START_MX ) / 2 ); mvr2r( &hIGFDec->virtualSpecBuf[( N_MAX_TCX - IGF_START_MN ) / 2], &hIGFDec->virtualSpecBuf[0], ( N_MAX_TCX - IGF_START_MN ) / 2 ); mvr2r( &hIGFDec->igfData.pSpecFlatBuf[IGF_START_MX / 2], &hIGFDec->igfData.pSpecFlatBuf[0], IGF_START_MX / 2 ); #ifdef IVAS_FLOAT_FIXED @@ -1594,7 +1594,7 @@ void IGFDecRestoreTCX10SubFrameData_flt( /* restore flattening trigger for current subframe */ hIGFDec->flatteningTrigger = hPrivateData->igf_flatteningTrigger_subframe[subFrameIdx]; hIGFDec->flag_sparse = &hIGFDec->flag_sparseBuf[subFrameIdx * ( N_MAX_TCX - IGF_START_MN ) / 2]; - hIGFDec->infoTCXNoise = &hIGFDec->infoTCXNoiseBuf[subFrameIdx * ( IGF_START_MX ) / 2]; + hIGFDec->infoTCXNoise_ptr = &hIGFDec->infoTCXNoise_evs[subFrameIdx * ( IGF_START_MX ) / 2]; hIGFDec->virtualSpec_float = &hIGFDec->virtualSpecBuf[subFrameIdx * ( N_MAX_TCX - IGF_START_MN ) / 2]; hIGFDec->igfData.pSpecFlat_float = &hIGFDec->igfData.pSpecFlatBuf[subFrameIdx * IGF_START_MX / 2]; hIGFDec->igfData.igfInfo.nfSeed = &hIGFDec->igfData.igfInfo.nfSeedBuf[subFrameIdx]; @@ -1612,14 +1612,14 @@ void init_igf_dec_flt( IGF_DEC_INSTANCE_HANDLE hIGFDec /* i/o: IGF decoder handle */ ) { - set_c( (int8_t *) ( hIGFDec->infoTCXNoiseBuf ), 0, IGF_START_MX ); + set_s( (int16_t *) ( hIGFDec->infoTCXNoise_evs ), 0, IGF_START_MX ); set_f( hIGFDec->igfData.pSpecFlatBuf, 0, IGF_START_MX ); hIGFDec->igfData.igfInfo.nfSeedBuf[0] = 9733; hIGFDec->igfData.igfInfo.nfSeedBuf[1] = 9733; hIGFDec->igfData.igfInfo.nfSeed = &hIGFDec->igfData.igfInfo.nfSeedBuf[0]; hIGFDec->igfData.pSpecFlat_float = &hIGFDec->igfData.pSpecFlatBuf[0]; hIGFDec->flag_sparse = &hIGFDec->flag_sparseBuf[0]; - hIGFDec->infoTCXNoise = &hIGFDec->infoTCXNoiseBuf[0]; + hIGFDec->infoTCXNoise_ptr = &hIGFDec->infoTCXNoise_evs[0]; hIGFDec->virtualSpec_float = &hIGFDec->virtualSpecBuf[0]; return; diff --git a/lib_dec/igf_dec_fx.c b/lib_dec/igf_dec_fx.c index deace01a0..d2c4670b3 100644 --- a/lib_dec/igf_dec_fx.c +++ b/lib_dec/igf_dec_fx.c @@ -3987,7 +3987,7 @@ void IGFDecSetMode_ivas_fx( } hIGFDec->flag_sparse = &hIGFDec->flag_sparseBuf[0]; - hIGFDec->infoTCXNoise = &hIGFDec->infoTCXNoiseBuf[0]; + hIGFDec->infoTCXNoise_ptr = &hIGFDec->infoTCXNoise_evs[0]; return; } /**********************************************************************/ /* @@ -4032,7 +4032,7 @@ void IGFDecUpdateInfo_ivas_fx( H_IGF_GRID hGrid; hIGFDec->flag_sparse = &hIGFDec->flag_sparseBuf[0]; - hIGFDec->infoTCXNoise = &hIGFDec->infoTCXNoiseBuf[0]; + hIGFDec->infoTCXNoise_ptr = &hIGFDec->infoTCXNoise_evs[0]; hIGFDec->virtualSpec_fx = &hIGFDec->virtualSpec[0]; hIGFDec->igfData.pSpecFlat = &hIGFDec->igfData.pSpecFlatBuf_fx[0]; @@ -4057,15 +4057,6 @@ void IGFDecUpdateInfo_ivas_fx( hIGFDec->infoIGFStopLine = hGrid->stopLine; move16(); } - - /* TODO: this was added to keep the EVS 16-bit noise info in sync. */ - FOR( Word16 l = 0; l < IGF_START_MX; l++ ) - { - // u8bit to 16bit - hIGFDec->infoTCXNoise_evs[l] = (Word16) hIGFDec->infoTCXNoise[l]; - move16(); - } - return; } @@ -4074,7 +4065,7 @@ void IGFDecReplicateTCX10State_fx( ) { Copy( &hIGFDec->flag_sparseBuf[( N_MAX_TCX - IGF_START_MN ) / 2], &hIGFDec->flag_sparseBuf[0], ( N_MAX_TCX - IGF_START_MN ) / 2 ); - mvc2c( &hIGFDec->infoTCXNoiseBuf[( IGF_START_MX ) / 2], &hIGFDec->infoTCXNoiseBuf[0], ( IGF_START_MX ) / 2 ); + mvs2s( &hIGFDec->infoTCXNoise_evs[( IGF_START_MX ) / 2], &hIGFDec->infoTCXNoise_evs[0], ( IGF_START_MX ) / 2 ); /* TODO: remove float dependency */ // mvr2r( &hIGFDec->virtualSpecBuf[( N_MAX_TCX - IGF_START_MN ) / 2], &hIGFDec->virtualSpecBuf[0], ( N_MAX_TCX - IGF_START_MN ) / 2 ); @@ -4209,7 +4200,7 @@ void IGFDecRestoreTCX10SubFrameData_fx( /* restore flattening trigger for current subframe */ hIGFDec->flatteningTrigger = hPrivateData->igf_flatteningTrigger_subframe[subFrameIdx]; hIGFDec->flag_sparse = &hIGFDec->flag_sparseBuf[subFrameIdx * ( N_MAX_TCX - IGF_START_MN ) / 2]; - hIGFDec->infoTCXNoise = &hIGFDec->infoTCXNoiseBuf[subFrameIdx * ( IGF_START_MX ) / 2]; + hIGFDec->infoTCXNoise_ptr = &hIGFDec->infoTCXNoise_evs[subFrameIdx * ( IGF_START_MX ) / 2]; hIGFDec->virtualSpec_fx = &hIGFDec->virtualSpec[subFrameIdx * ( N_MAX_TCX - IGF_START_MN ) / 2]; hIGFDec->igfData.pSpecFlat = &hIGFDec->igfData.pSpecFlatBuf_fx[subFrameIdx * IGF_START_MX / 2]; @@ -4257,7 +4248,7 @@ void init_igf_dec( set32_fx( hIGFDec->igfData.pSpecFlatBuf_fx, 0, IGF_START_MX ); hIGFDec->igfData.pSpecFlat = &hIGFDec->igfData.pSpecFlatBuf_fx[0]; hIGFDec->flag_sparse = &hIGFDec->flag_sparseBuf[0]; - hIGFDec->infoTCXNoise = &hIGFDec->infoTCXNoiseBuf[0]; + hIGFDec->infoTCXNoise_ptr = &hIGFDec->infoTCXNoise_evs[0]; hIGFDec->virtualSpec_fx = &hIGFDec->virtualSpec[0]; return; diff --git a/lib_dec/ivas_core_dec.c b/lib_dec/ivas_core_dec.c index 48a3e04c9..0bccf0c82 100644 --- a/lib_dec/ivas_core_dec.c +++ b/lib_dec/ivas_core_dec.c @@ -491,12 +491,6 @@ ivas_error ivas_core_dec( st->mem_error = st->hBPF->pst_mem_deemp_err_fx; - // u8bit to 16bit - FOR( int l = 0; l < IGF_START_MX; l++ ) - { - st->hIGFDec->infoTCXNoise_evs[l] = (Word16) st->hIGFDec->infoTCXNoise[l]; - } - /* TCX decoder */ Scale_sig( st->hPFstat->mem_stp, L_SUBFR, -Qsyn_temp ); Scale_sig( st->hPFstat->mem_pf_in, L_SUBFR, -Qsyn_temp ); diff --git a/lib_dec/ivas_mct_dec.c b/lib_dec/ivas_mct_dec.c index 42d82f995..3d115b9f4 100644 --- a/lib_dec/ivas_mct_dec.c +++ b/lib_dec/ivas_mct_dec.c @@ -1759,7 +1759,7 @@ static ivas_error ivas_mc_dec_reconfig_fx( set_f( st->hIGFDec->igfData.pSpecFlatBuf, 0, IGF_START_MX ); #endif FOR( Word16 l = 0; l < IGF_START_MX; l++ ) - st->hIGFDec->infoTCXNoiseBuf[l] = (uint8_t) st->hIGFDec->infoTCXNoise_evs[l]; + st->hIGFDec->infoTCXNoise_evs[l] = (uint8_t) st->hIGFDec->infoTCXNoise_evs[l]; #endif } diff --git a/lib_dec/ivas_mct_dec_mct_fx.c b/lib_dec/ivas_mct_dec_mct_fx.c index 25774ec40..a91acad66 100644 --- a/lib_dec/ivas_mct_dec_mct_fx.c +++ b/lib_dec/ivas_mct_dec_mct_fx.c @@ -371,20 +371,8 @@ void mctStereoIGF_dec_fx( x[p_ch[ch]][k][i] = L_shr( x[p_ch[ch]][k][i], sub( 31 - Q12, x_e ) ); move32(); } - - // IF( st->igf ) - //{ - // // TODO: remove this float to fixed conversion later. - // me2f_buf( st->hIGFDec->virtualSpec, st->hIGFDec->virtualSpec_e, st->hIGFDec->virtualSpec_float, ( N_MAX_TCX - IGF_START_MN ) ); - // } } } - // TODO: Converting 16bit noise info to u8bit. can remove this later. - FOR( Word16 i = 0; i < IGF_START_MX; i++ ) - { - sts[0]->hIGFDec->infoTCXNoise[i] = (uint8_t) sts[0]->hIGFDec->infoTCXNoise_evs[i]; - sts[1]->hIGFDec->infoTCXNoise[i] = (uint8_t) sts[1]->hIGFDec->infoTCXNoise_evs[i]; - } } } @@ -433,17 +421,6 @@ void mctStereoIGF_dec_fx( // Converting from variable exponent to Fixed q-factor (Q12) x[ch][k][i] = L_shr( x[ch][k][i], sub( 31 - Q12, x_e ) ); } - - IF( st->igf ) - { - // TODO: Fixed to float. Remove this later. - // me2f_buf( st->hIGFDec->virtualSpec, st->hIGFDec->virtualSpec_e, st->hIGFDec->virtualSpec_float, ( N_MAX_TCX - IGF_START_MN ) ); - // TODO: 16bit to u8bit. Remove this later. - FOR( Word16 l = 0; l < IGF_START_MX; l++ ) - { - st->hIGFDec->infoTCXNoise[l] = (uint8_t) st->hIGFDec->infoTCXNoise_evs[l]; - } - } } } } diff --git a/lib_dec/ivas_stereo_mdct_core_dec_fx.c b/lib_dec/ivas_stereo_mdct_core_dec_fx.c index 66e01228b..edf392ec4 100644 --- a/lib_dec/ivas_stereo_mdct_core_dec_fx.c +++ b/lib_dec/ivas_stereo_mdct_core_dec_fx.c @@ -102,7 +102,7 @@ void stereo_mdct_core_dec_fx( ) { Word16 k, ch, nChannels; - Word16 i, l, j; + Word16 i, j; Decoder_State *st, **sts; /* bitstream */ @@ -237,32 +237,8 @@ void stereo_mdct_core_dec_fx( } } - FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) - { - IF( sts[ch]->mct_chan_mode != MCT_CHAN_MODE_IGNORE ) - { - FOR( l = 0; l < IGF_START_MX; l++ ) - { - sts[ch]->hIGFDec->infoTCXNoise_evs[l] = (Word16) sts[ch]->hIGFDec->infoTCXNoise[l]; - move16(); - } - } - } - ivas_mdct_core_invQ_fx( hCPE, nTnsBitsTCX10, p_param, param_lpc, param, fUseTns, tnsData, x_0_fx, x_0_e, x_fx, x_e, x_len, Aq_fx, ms_mask, 0 ); - FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) - { - IF( sts[ch]->mct_chan_mode != MCT_CHAN_MODE_IGNORE ) - { - // 16bit to u8bit - FOR( l = 0; l < IGF_START_MX; l++ ) - { - sts[ch]->hIGFDec->infoTCXNoise[l] = (UWord8) sts[ch]->hIGFDec->infoTCXNoise_evs[l]; - } - } - } - FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) { Word16 subFrames = ( hCPE->hCoreCoder[ch]->core == TCX_10_CORE ) ? NB_DIV : 1; @@ -307,14 +283,6 @@ void stereo_mdct_core_dec_fx( Scale_sig32( x_fx[ch][k], x_len[ch][k], sub( x_e[ch][k], 20 ) ); x_e[ch][k] = 20; move16(); - IF( st->igf ) - { - // 16bit to u8bit - FOR( l = 0; l < IGF_START_MX; l++ ) - { - st->hIGFDec->infoTCXNoise[l] = (UWord8) st->hIGFDec->infoTCXNoise_evs[l]; - } - } } } } @@ -337,12 +305,6 @@ void stereo_mdct_core_dec_fx( x_e[1][k] = 20; move16(); move16(); - - FOR( i = 0; i < IGF_START_MX; i++ ) - { - sts[0]->hIGFDec->infoTCXNoise[i] = (UWord8) sts[0]->hIGFDec->infoTCXNoise_evs[i]; - sts[1]->hIGFDec->infoTCXNoise[i] = (UWord8) sts[1]->hIGFDec->infoTCXNoise_evs[i]; - } } ELSE { @@ -354,14 +316,6 @@ void stereo_mdct_core_dec_fx( Scale_sig32( x_fx[ch][k], x_len[ch][k], sub( x_e[ch][k], 20 ) ); x_e[ch][k] = 20; move16(); - IF( st->igf ) - { - // 16bit to u8bit - FOR( l = 0; l < IGF_START_MX; l++ ) - { - st->hIGFDec->infoTCXNoise[l] = (UWord8) st->hIGFDec->infoTCXNoise_evs[l]; - } - } } } } diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c index 5edade576..2b979de69 100644 --- a/lib_dec/lib_dec_fx.c +++ b/lib_dec/lib_dec_fx.c @@ -1333,14 +1333,12 @@ static ivas_error IVAS_DEC_GetTcSamples( { /* run the main IVAS decoding routine */ /*------------------------flt 2 fix----------------------*/ - Word16 l, n; + Word16 n; Decoder_State *st, **sts; /* used for bitstream handling */ - MCT_DEC_HANDLE hMCT; - Word16 ch, nCPE, cpe_id; + Word16 nCPE, cpe_id; nCPE = st_ivas->nCPE; DECODER_TC_BUFFER_HANDLE hTcBuffer = st_ivas->hTcBuffer; Word16 n_ch_cldfb_tmp = hTcBuffer->nchan_transport_jbm - hTcBuffer->nchan_buffer_full; - hMCT = st_ivas->hMCT; Word16 num_freq_bands = 0; /* Float to Fixed */ IF( pcmBuf != NULL ) @@ -1366,7 +1364,6 @@ static ivas_error IVAS_DEC_GetTcSamples( nCPE = st_ivas->nCPE; move16(); - hMCT = st_ivas->hMCT; FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) { hCPE = st_ivas->hCPE[cpe_id]; @@ -1376,14 +1373,6 @@ static ivas_error IVAS_DEC_GetTcSamples( FOR( n = 0; n < CPE_CHANNELS; n++ ) { st = hCPE->hCoreCoder[n]; - IF( sts[n]->mct_chan_mode != MCT_CHAN_MODE_IGNORE ) - { - // u8bit to 16bit - FOR( l = 0; l < IGF_START_MX; l++ ) - { - sts[n]->hIGFDec->infoTCXNoise_evs[l] = (Word16) sts[n]->hIGFDec->infoTCXNoise[l]; - } - } IF( st->hTcxDec ) st->hTcxDec->conNoiseLevelIndex = st->hTcxDec->NoiseLevelIndex_bfi; IF( st->hTcxDec ) @@ -1481,19 +1470,6 @@ static ivas_error IVAS_DEC_GetTcSamples( { hCPE = st_ivas->hCPE[cpe_id]; sts = hCPE->hCoreCoder; - FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) - { - st = hCPE->hCoreCoder[ch]; - IF( sts[ch]->mct_chan_mode != MCT_CHAN_MODE_IGNORE ) - { - // 16bit to u8bit - FOR( l = 0; l < IGF_START_MX; l++ ) - { - sts[ch]->hIGFDec->infoTCXNoise[l] = (UWord8) sts[ch]->hIGFDec->infoTCXNoise_evs[l]; - } - } - } - FOR( n = 0; n < 2; n++ ) { st = hCPE->hCoreCoder[n]; @@ -1527,27 +1503,6 @@ static ivas_error IVAS_DEC_GetTcSamples( } } } - - - IF( st_ivas->hCPE[0]->hCoreCoder[0]->igf ) - { - IF( !hMCT->currBlockDataCnt ) - { - FOR( cpe_id = 0; cpe_id < nCPE; cpe_id++ ) - { - FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) - { - IF( st_ivas->hCPE[cpe_id]->hCoreCoder[ch]->igf ) - { - FOR( l = 0; l < IGF_START_MX; l++ ) - { - st_ivas->hCPE[cpe_id]->hCoreCoder[ch]->hIGFDec->infoTCXNoise[l] = (UWord8) st_ivas->hCPE[cpe_id]->hCoreCoder[ch]->hIGFDec->infoTCXNoise_evs[l]; - } - } - } - } - } - } } #endif // fixed to float } diff --git a/lib_dec/stat_dec.h b/lib_dec/stat_dec.h index 29f1db0f1..876e56a1e 100644 --- a/lib_dec/stat_dec.h +++ b/lib_dec/stat_dec.h @@ -557,8 +557,9 @@ typedef struct igfdec_instance_struct int16_t infoIGFStartLine; int16_t infoIGFStopFreq; int16_t infoIGFStartFreq; - uint8_t *infoTCXNoise; - uint8_t infoTCXNoiseBuf[IGF_START_MX]; + // uint8_t *infoTCXNoise; + // uint8_t infoTCXNoiseBuf[IGF_START_MX]; + Word16 *infoTCXNoise_ptr; Word16 infoTCXNoise_evs[IGF_START_MX]; int16_t *flag_sparse; int16_t flag_sparseBuf[N_MAX_TCX - IGF_START_MN]; -- GitLab