diff --git a/lib_com/fd_cng_com.c b/lib_com/fd_cng_com.c index 1bfff493f685e98557f23c7f5120b02236905a73..cbac3dac23606a1a6dc64a94bb302f18f0cf5c47 100644 --- a/lib_com/fd_cng_com.c +++ b/lib_com/fd_cng_com.c @@ -1054,8 +1054,9 @@ void SynthesisSTFT_fx( preemph_ivas_fx( buf_fx + 1, PREEMPH_FAC, M + hFdCngCom->frameSize, &tmp_fx ); // residu(hFdCngCom->A_cng_flt, M, buf + 1 + M, hFdCngCom->exc_cng_flt, hFdCngCom->frameSize); - floatToFixed_arr( hFdCngCom->A_cng_flt, hFdCngCom->A_cng, Q13, M + 1 ); - residu_ivas_fx( hFdCngCom->A_cng, Q13, M, buf_fx + 1 + M, hFdCngCom->exc_cng_32fx, hFdCngCom->frameSize ); + //floatToFixed_arr( hFdCngCom->A_cng_flt, hFdCngCom->A_cng, Q13, M + 1 ); + //residu_ivas_fx( hFdCngCom->A_cng, Q13, M, buf_fx + 1 + M, hFdCngCom->exc_cng_32fx, hFdCngCom->frameSize ); + residu_ivas_fx( hFdCngCom->A_cng, ( 15 - norm_s( hFdCngCom->A_cng[0] - 1 ) ), M, buf_fx + 1 + M, hFdCngCom->exc_cng_32fx, hFdCngCom->frameSize ); for ( i = 0; i < hFdCngCom->frameSize; i++ ) { hFdCngCom->exc_cng_flt[i] = fix_to_float( hFdCngCom->exc_cng_32fx[i], Q_in - 9 ); @@ -1190,7 +1191,8 @@ void SynthesisSTFT_dirac_fx( v_multc_fixed(olapBuffer + (hFdCngCom->frameSize / 4) - (M + 1), fftScale, buf, M + 1 + hFdCngCom->frameSize); tmp = buf[0]; preemph_ivas_fx( buf + 1, PREEMPH_FAC, M + hFdCngCom->frameSize, &tmp ); - residu_ivas_fx( hFdCngCom->A_cng, Q13, M, buf + 1 + M, hFdCngCom->exc_cng_32fx, hFdCngCom->frameSize ); + //residu_ivas_fx( hFdCngCom->A_cng, Q13, M, buf + 1 + M, hFdCngCom->exc_cng_32fx, hFdCngCom->frameSize ); + residu_ivas_fx( hFdCngCom->A_cng, 15 - norm_s( hFdCngCom->A_cng[0] - 1 ), M, buf + 1 + M, hFdCngCom->exc_cng_32fx, hFdCngCom->frameSize ); /* update and window olapBuf if we have a output frame that is shorter than the default frame size...*/ IF ( LT_16(samples_out, hFdCngCom->frameSize )) diff --git a/lib_com/float_to_fix_ops.c b/lib_com/float_to_fix_ops.c index 4a8cab88a31cfa6b79b776f4ce1948644e855b97..4199156fb0b553801ce80d91a4ac057f8f985ec9 100644 --- a/lib_com/float_to_fix_ops.c +++ b/lib_com/float_to_fix_ops.c @@ -319,7 +319,8 @@ void stereo_tcx_dec_mode_switch_reconf_To_fixed( st->hTcxDec->L_frameTCX = extract_l( Mult_32_16( st->output_Fs, 0x0290 ) ); //st->hTcxDec->tcxltp_last_gain_unmodified = (Word16) floatToFixed( st->hTcxDec->tcxltp_last_gain_unmodified_float, 15 ); st->output_frame_fx = st->hTcxDec->L_frameTCX; - st->hTcxDec->CngLevelBackgroundTrace_bfi_fx = floatToFixed( st->hTcxDec->CngLevelBackgroundTrace_bfi, 15 ); + //st->hTcxDec->CngLevelBackgroundTrace_bfi_fx = floatToFixed( st->hTcxDec->CngLevelBackgroundTrace_bfi, 15 ); + //st->hTcxDec->conCngLevelBackgroundTrace = floatToFixed( st->hTcxDec->CngLevelBackgroundTrace_bfi, 15 ); //st->hTcxDec->conceal_eof_gain = (Word16) floatToFixed( st->hTcxDec->conceal_eof_gain_float, 14 ); } IF( st->hHQ_core ) @@ -361,11 +362,11 @@ void stereo_tcx_dec_mode_switch_reconf_To_fixed( st->last_gain_syn_deemph = 0; - IF( hBWE_TD ) - { - Q_syn_overlap = Q_factor_arr( hBWE_TD->syn_overlap, 20 ); - floatToFixed_arr( hBWE_TD->syn_overlap, hBWE_TD->syn_overlap_fx, Q_syn_overlap, 20 ); - } + //IF( hBWE_TD ) + //{ + // Q_syn_overlap = Q_factor_arr( hBWE_TD->syn_overlap, 20 ); + // floatToFixed_arr( hBWE_TD->syn_overlap, hBWE_TD->syn_overlap_fx, Q_syn_overlap, 20 ); + //} } else { @@ -392,11 +393,11 @@ void stereo_tcx_dec_mode_switch_reconf_To_fixed( } //st->TcxBandwidth_float = fixedToFloat( st->TcxBandwidth, 15 ); - IF( st->hBWE_TD != NULL ) - { - Q_syn_overlap = Q_factor_arr( hBWE_TD->syn_overlap, 20 ); - fixedToFloat_arr( hBWE_TD->syn_overlap_fx, hBWE_TD->syn_overlap, Q_syn_overlap, 20 ); - } + //IF( st->hBWE_TD != NULL ) + //{ + // Q_syn_overlap = Q_factor_arr( hBWE_TD->syn_overlap, 20 ); + // fixedToFloat_arr( hBWE_TD->syn_overlap_fx, hBWE_TD->syn_overlap, Q_syn_overlap, 20 ); + //} IF( st->hTcxDec ) { Q_old_synth = Q_syn; @@ -411,7 +412,8 @@ void stereo_tcx_dec_mode_switch_reconf_To_fixed( //fixedToFloat_arr( st->hTcxDec->synth_history_fx, st->hTcxDec->synth_history, Q_synth_history, L_PROT48k + L_FRAME_MAX ); //st->hTcxDec->q_synth_history_fx = Q_synth_history; //st->hTcxDec->conceal_eof_gain_float = fixedToFloat( st->hTcxDec->conceal_eof_gain, 14 ); - st->hTcxDec->CngLevelBackgroundTrace_bfi = fixedToFloat( st->hTcxDec->CngLevelBackgroundTrace_bfi_fx, 15 ); + //st->hTcxDec->CngLevelBackgroundTrace_bfi = fixedToFloat( st->hTcxDec->CngLevelBackgroundTrace_bfi_fx, 15 ); + //st->hTcxDec->CngLevelBackgroundTrace_bfi = fix16_to_float( st->hTcxDec->conCngLevelBackgroundTrace,15-st->hTcxDec->conCngLevelBackgroundTrace_e ); } IF( st->hHQ_core ) @@ -540,7 +542,8 @@ void stereo_tcx_dec_mode_switch_reconf_To_fixed_2( st->hTcxDec->L_frameTCX = extract_l( Mult_32_16( st->output_Fs, 0x0290 ) ); //st->hTcxDec->tcxltp_last_gain_unmodified = (Word16) floatToFixed( st->hTcxDec->tcxltp_last_gain_unmodified_float, 15 ); st->output_frame_fx = st->hTcxDec->L_frameTCX; - st->hTcxDec->CngLevelBackgroundTrace_bfi_fx = floatToFixed( st->hTcxDec->CngLevelBackgroundTrace_bfi, 15 ); + //st->hTcxDec->CngLevelBackgroundTrace_bfi_fx = floatToFixed( st->hTcxDec->CngLevelBackgroundTrace_bfi, 15 ); + //st->hTcxDec->conCngLevelBackgroundTrace = floatToFixed( st->hTcxDec->CngLevelBackgroundTrace_bfi, 15 ); //st->hTcxDec->conceal_eof_gain = (Word16) floatToFixed( st->hTcxDec->conceal_eof_gain_float, 14 ); } IF( st->hHQ_core ) @@ -581,11 +584,11 @@ void stereo_tcx_dec_mode_switch_reconf_To_fixed_2( st->last_gain_syn_deemph = 0; - IF( hBWE_TD ) - { - Q_syn_overlap = Q_factor_arr( hBWE_TD->syn_overlap, 20 ); - floatToFixed_arr( hBWE_TD->syn_overlap, hBWE_TD->syn_overlap_fx, Q_syn_overlap, 20 ); - } + //IF( hBWE_TD ) + //{ + // Q_syn_overlap = Q_factor_arr( hBWE_TD->syn_overlap, 20 ); + // floatToFixed_arr( hBWE_TD->syn_overlap, hBWE_TD->syn_overlap_fx, Q_syn_overlap, 20 ); + //} } else { @@ -612,11 +615,11 @@ void stereo_tcx_dec_mode_switch_reconf_To_fixed_2( //st->hIGFDec->igfData.pSpecFlat_float = &st->hIGFDec->igfData.pSpecFlatBuf[0]; //st->hIGFDec->igfData.igfInfo.nfSeed = &st->hIGFDec->igfData.igfInfo.nfSeedBuf[0]; } - IF( st->hBWE_TD != NULL ) - { - Q_syn_overlap = Q_factor_arr( hBWE_TD->syn_overlap, 20 ); - fixedToFloat_arr( hBWE_TD->syn_overlap_fx, hBWE_TD->syn_overlap, Q_syn_overlap, 20 ); - } + //IF( st->hBWE_TD != NULL ) + //{ + // Q_syn_overlap = Q_factor_arr( hBWE_TD->syn_overlap, 20 ); + // fixedToFloat_arr( hBWE_TD->syn_overlap_fx, hBWE_TD->syn_overlap, Q_syn_overlap, 20 ); + //} IF( st->hTcxDec ) { Q_old_synth = Q_syn; @@ -631,9 +634,10 @@ void stereo_tcx_dec_mode_switch_reconf_To_fixed_2( //fixedToFloat_arr( st->hTcxDec->synth_history_fx, st->hTcxDec->synth_history, Q_synth_history, L_PROT48k + L_FRAME_MAX ); //st->hTcxDec->q_synth_history_fx = Q_synth_history; //st->hTcxDec->conceal_eof_gain_float = fixedToFloat( st->hTcxDec->conceal_eof_gain, 14 ); - st->hTcxDec->CngLevelBackgroundTrace_bfi = fixedToFloat( st->hTcxDec->CngLevelBackgroundTrace_bfi_fx, 15 ); - st->hTcxDec->conCngLevelBackgroundTrace = (Word16) st->hTcxDec->CngLevelBackgroundTrace_bfi_fx; st->hTcxDec->conCngLevelBackgroundTrace_e = 0; + //st->hTcxDec->CngLevelBackgroundTrace_bfi = fix16_to_float( st->hTcxDec->conCngLevelBackgroundTrace,15 - st->hTcxDec->conCngLevelBackgroundTrace_e); + //st->hTcxDec->CngLevelBackgroundTrace_bfi = fixedToFloat( st->hTcxDec->CngLevelBackgroundTrace_bfi_fx, 15 ); + //st->hTcxDec->conCngLevelBackgroundTrace = (Word16) st->hTcxDec->CngLevelBackgroundTrace_bfi_fx; st->hTcxDec->conNoiseLevelIndex = st->hTcxDec->NoiseLevelIndex_bfi; st->hTcxDec->conCurrLevelIndex = st->hTcxDec->CurrLevelIndex_bfi; st->hTcxDec->conLastFrameLevel = st->hTcxDec->LastFrameLevel_bfi_fx; @@ -709,7 +713,7 @@ void stereo_tcx_dec_mode_switch_reconf_To_fixed_2( //} st->prev_Q_syn = st->Q_syn; //st->hTcxDec->conceal_eof_gain = (Word16) floatToFixed( st->hTcxDec->conceal_eof_gain_float, Q14 ); - st->hTcxDec->conCngLevelBackgroundTrace = (Word16) floatToFixed( st->hTcxDec->CngLevelBackgroundTrace_bfi, Q15 - st->hTcxDec->conCngLevelBackgroundTrace_e ); + //st->hTcxDec->conCngLevelBackgroundTrace = (Word16) floatToFixed( st->hTcxDec->CngLevelBackgroundTrace_bfi, Q15 - st->hTcxDec->conCngLevelBackgroundTrace_e ); if ( st->hTcxDec->conNoiseLevelMemory_e[0] < 0 ) { set16_fx( st->hTcxDec->conNoiseLevelMemory_e, 0, PLC_MIN_STAT_BUFF_SIZE ); @@ -823,7 +827,7 @@ void fixed_to_float_stereo_tcx_core_dec( //st->hTcxDec->conceal_eof_gain_float = fixedToFloat( st->hTcxDec->conceal_eof_gain, Q14 ); - st->hTcxDec->CngLevelBackgroundTrace_bfi = fixedToFloat( st->hTcxDec->conCngLevelBackgroundTrace, 15 - st->hTcxDec->conCngLevelBackgroundTrace_e ); + //st->hTcxDec->CngLevelBackgroundTrace_bfi = fix16_to_float( st->hTcxDec->conCngLevelBackgroundTrace, 15 - st->hTcxDec->conCngLevelBackgroundTrace_e ); //fixedToFloat_arr( hTcxDec->old_synth, hTcxDec->old_synth_float, 0, hTcxDec->old_synth_len ); //fixedToFloat_arr( hTcxDec->synth_history_fx, hTcxDec->synth_history, 0, NS2SA_fx2( st->output_Fs, PH_ECU_MEM_NS ) ); @@ -854,7 +858,8 @@ void fixed_to_float_stereo_tcx_core_dec( ( ( st->element_mode == IVAS_CPE_TD || st->element_mode == IVAS_CPE_DFT ) && ( st->hFdCngDec->hFdCngCom->active_frame_counter > 0 ) ) || ( ( st->bfi == 1 ) && ( st->nbLostCmpt == 1 ) ) ) ) || ( st->m_frame_type == ZERO_FRAME ) ) { - st->hTcxDec->CngLevelBackgroundTrace_bfi = fix_to_float( st->hTcxDec->CngLevelBackgroundTrace_bfi_fx, ( 31 - st->hTcxDec->CngLevelBackgroundTrace_bfi_exp ) ); + //st->hTcxDec->CngLevelBackgroundTrace_bfi = fix_to_float( st->hTcxDec->CngLevelBackgroundTrace_bfi_fx, ( 31 - st->hTcxDec->CngLevelBackgroundTrace_bfi_exp ) ); + //st->hTcxDec->CngLevelBackgroundTrace_bfi = fix16_to_float( st->hTcxDec->conCngLevelBackgroundTrace, ( 15 - st->hTcxDec->conCngLevelBackgroundTrace_e) ); //st->cngTDLevel_float = fixedToFloat( st->cngTDLevel, ( 15 - st->cngTDLevel_e ) ); //for ( int p = 0; p < st->hFdCngDec->hFdCngCom->fftlen; p++ ) //{ @@ -884,14 +889,16 @@ void fixed_to_float_stereo_tcx_core_dec( st->hFdCngDec->q_smoothed_psd = sub( 31 , st->hFdCngDec->msNoiseEst_exp ); } - int A_cng_q = 14; + //int A_cng_q = 14; if ( st->element_mode != IVAS_CPE_MDCT || st->core == ACELP_CORE ) { - A_cng_q = 15 - norm_s( st->hFdCngDec->hFdCngCom->A_cng[0] ); + //A_cng_q = 15 - norm_s( st->hFdCngDec->hFdCngCom->A_cng[0] ); } + //Scale_sig(st->hFdCngDec->hFdCngCom->A_cng, M + 1, A_cng_q - norm_s(st->hFdCngDec->hFdCngCom->A_cng[0] - 1)); + for ( int p = 0; p < M; p++ ) { - st->hFdCngDec->hFdCngCom->A_cng_flt[p] = ( (float) st->hFdCngDec->hFdCngCom->A_cng[p] / ( 1u << A_cng_q ) ); + //st->hFdCngDec->hFdCngCom->A_cng_flt[p] = ( (float) st->hFdCngDec->hFdCngCom->A_cng[p] / ( 1u << A_cng_q ) ); } } } diff --git a/lib_dec/acelp_core_dec_ivas_fx.c b/lib_dec/acelp_core_dec_ivas_fx.c index 46546358b126e23e33d4d43cd85f6fc4847227e3..8e668182cace2a1acd224774b500d3899f017844 100644 --- a/lib_dec/acelp_core_dec_ivas_fx.c +++ b/lib_dec/acelp_core_dec_ivas_fx.c @@ -2631,11 +2631,11 @@ void acelp_decoder_state_float2fix(Decoder_State *st, STEREO_CNG_DEC_HANDLE hSte //floatToFixed_arrL( st->hFdCngDec->hFdCngCom->sidNoiseEstLp_flt, st->hFdCngDec->hFdCngCom->sidNoiseEstLp, Q31 - st->hFdCngDec->hFdCngCom->sidNoiseEstExp, NPART ); st->hFdCngDec->hFdCngCom->cngNoiseLevelExp = Q31 - 4; floatToFixed_arrL(st->hFdCngDec->hFdCngCom->cngNoiseLevel_flt, st->hFdCngDec->hFdCngCom->cngNoiseLevel, Q31 - st->hFdCngDec->hFdCngCom->cngNoiseLevelExp, FFTCLDFBLEN); - floatToFixed_arr(st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, Q12, M + 1); - st->hFdCngDec->hFdCngCom->A_cng[0] = 4096; - floatToFixed_arr(st->hFdCngDec->hFdCngCom->exc_cng_flt, st->hFdCngDec->hFdCngCom->exc_cng, st->Q_exc_cng, L_FRAME16k); + //floatToFixed_arr(st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, Q12, M + 1); + //st->hFdCngDec->hFdCngCom->A_cng[0] = 4096; + //floatToFixed_arr(st->hFdCngDec->hFdCngCom->exc_cng_flt, st->hFdCngDec->hFdCngCom->exc_cng, st->Q_exc_cng, L_FRAME16k); - floatToFixed_arr(st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, st->hFdCngDec->hFdCngCom->olapBufferSynth2, st->hFdCngDec->hFdCngCom->fftlenShift, FFTLEN); + //floatToFixed_arr(st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, st->hFdCngDec->hFdCngCom->olapBufferSynth2, st->hFdCngDec->hFdCngCom->fftlenShift, FFTLEN); //st->hFdCngDec->hFdCngCom->likelihood_noisy_speech = float_to_fix16(st->hFdCngDec->hFdCngCom->likelihood_noisy_speech_flt, Q15); //floatToFixed_arrL( st->hFdCngDec->bandNoiseShape_float, st->hFdCngDec->bandNoiseShape, Q31 - st->hFdCngDec->bandNoiseShape_exp, FFTLEN2); /*CNA: ApplyFdCng*/ @@ -2645,7 +2645,8 @@ void acelp_decoder_state_float2fix(Decoder_State *st, STEREO_CNG_DEC_HANDLE hSte { if (st->element_mode != IVAS_CPE_TD && !st->cng_ism_flag) { - st->hFdCngDec->hFdCngCom->fftBuffer_exp = /*st->hFdCngDec->msNoiseEst_exp = */Q31 - Q4; //st->hFdCngDec->hFdCngCom->periodog_exp = st->hFdCngDec->msPsd_exp_fft = st->hFdCngDec->msPeriodog_exp = st->hFdCngDec->msPeriodog_ST_exp = 31 - Q4; Q4 + //st->hFdCngDec->hFdCngCom->fftBuffer_exp = /*st->hFdCngDec->msNoiseEst_exp = */Q31 - Q4; //st->hFdCngDec->hFdCngCom->periodog_exp = st->hFdCngDec->msPsd_exp_fft = st->hFdCngDec->msPeriodog_exp = st->hFdCngDec->msPeriodog_ST_exp = 31 - Q4; Q4 + //floatToFixed_arrL(st->hFdCngDec->hFdCngCom->fftBuffer_flt, st->hFdCngDec->hFdCngCom->fftBuffer, Q31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp, st->hFdCngDec->hFdCngCom->fftlen); //floatToFixed_arrL(st->hFdCngDec->msNoiseEst_float, st->hFdCngDec->msNoiseEst, Q31 - st->hFdCngDec->msNoiseEst_exp, st->hFdCngDec->npart_shaping); @@ -2696,9 +2697,9 @@ void acelp_decoder_state_fix2float(Decoder_State *st, STEREO_CNG_DEC_HANDLE hSte { //fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->sidNoiseEstLp, st->hFdCngDec->hFdCngCom->sidNoiseEstLp_flt, Q31 - st->hFdCngDec->hFdCngCom->sidNoiseEstExp, NPART); fixedToFloat_arrL( st->hFdCngDec->hFdCngCom->cngNoiseLevel, st->hFdCngDec->hFdCngCom->cngNoiseLevel_flt, Q31 - st->hFdCngDec->hFdCngCom->cngNoiseLevelExp, FFTCLDFBLEN ); - fixedToFloat_arr( st->hFdCngDec->hFdCngCom->A_cng, st->hFdCngDec->hFdCngCom->A_cng_flt, Q12, M + 1 ); - fixedToFloat_arr(st->hFdCngDec->hFdCngCom->exc_cng, st->hFdCngDec->hFdCngCom->exc_cng_flt, st->Q_exc_cng, L_FRAME16k); - fixedToFloat_arr(st->hFdCngDec->hFdCngCom->olapBufferSynth2, st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, st->hFdCngDec->hFdCngCom->fftlenShift, FFTLEN); + //fixedToFloat_arr( st->hFdCngDec->hFdCngCom->A_cng, st->hFdCngDec->hFdCngCom->A_cng_flt, Q12, M + 1 ); + //fixedToFloat_arr(st->hFdCngDec->hFdCngCom->exc_cng, st->hFdCngDec->hFdCngCom->exc_cng_flt, st->Q_exc_cng, L_FRAME16k); + //fixedToFloat_arr(st->hFdCngDec->hFdCngCom->olapBufferSynth2, st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, st->hFdCngDec->hFdCngCom->fftlenShift, FFTLEN); //st->hFdCngDec->hFdCngCom->likelihood_noisy_speech_flt = fixedToFloat(st->hFdCngDec->hFdCngCom->likelihood_noisy_speech, Q15); //fixedToFloat_arrL(st->hFdCngDec->bandNoiseShape, st->hFdCngDec->bandNoiseShape_float, Q31 - st->hFdCngDec->bandNoiseShape_exp, FFTLEN2); //fixedToFloat_arrL(st->hFdCngDec->partNoiseShape, st->hFdCngDec->partNoiseShape_float, Q31 - st->hFdCngDec->partNoiseShape_exp, NPART); @@ -2731,7 +2732,8 @@ void acelp_decoder_state_fix2float(Decoder_State *st, STEREO_CNG_DEC_HANDLE hSte //} if (!((st->element_mode == IVAS_CPE_TD || st->element_mode == IVAS_CPE_DFT) && (st->hFdCngDec->hFdCngCom->active_frame_counter > 0))) { - st->hTcxDec->CngLevelBackgroundTrace_bfi = fixedToFloat(st->hTcxDec->CngLevelBackgroundTrace_bfi_fx, (31 - st->hTcxDec->CngLevelBackgroundTrace_bfi_exp)); + //st->hTcxDec->CngLevelBackgroundTrace_bfi = fixedToFloat(st->hTcxDec->CngLevelBackgroundTrace_bfi_fx, (31 - st->hTcxDec->CngLevelBackgroundTrace_bfi_exp)); + //st->hTcxDec->CngLevelBackgroundTrace_bfi = fix16_to_float(st->hTcxDec->conCngLevelBackgroundTrace, (15 - st->hTcxDec->conCngLevelBackgroundTrace_e)); } } } diff --git a/lib_dec/core_dec_init.c b/lib_dec/core_dec_init.c index 92fb2b89fba7f27acdbd3c53c4b44eb007de40b2..f6466bba240314babccc64097f6b85b734d54402 100644 --- a/lib_dec/core_dec_init.c +++ b/lib_dec/core_dec_init.c @@ -608,10 +608,10 @@ void open_decoder_LPD_flt( if (is_init || MCT_flag || !(st->element_mode == IVAS_CPE_MDCT && st->element_mode == last_element_mode)) { - st->hTcxDec->CngLevelBackgroundTrace_bfi = PLC_MIN_CNG_LEV_FLT; st->hTcxDec->NoiseLevelIndex_bfi = PLC_MIN_STAT_BUFF_SIZE - 1; st->hTcxDec->CurrLevelIndex_bfi = 0; #if (defined EVS_FLOAT) || !(defined IVAS_FLOAT_FIXED) + st->hTcxDec->CngLevelBackgroundTrace_bfi = PLC_MIN_CNG_LEV_FLT; st->hTcxDec->LastFrameLevel_bfi = PLC_MIN_CNG_LEV_FLT; set_f(st->hTcxDec->NoiseLevelMemory_bfi, PLC_MIN_CNG_LEV_FLT, PLC_MIN_STAT_BUFF_SIZE); diff --git a/lib_dec/core_dec_init_fx.c b/lib_dec/core_dec_init_fx.c index 704f7cee1266831bad8822ff902c3801f88aa06a..2b4952cdc62b90688ca5e0698923cbc15cf8acf5 100644 --- a/lib_dec/core_dec_init_fx.c +++ b/lib_dec/core_dec_init_fx.c @@ -1689,8 +1689,8 @@ void open_decoder_LPD_ivas_fx( IF( is_init || MCT_flag || !( EQ_16( st->element_mode, IVAS_CPE_MDCT ) && EQ_16( st->element_mode, last_element_mode ) ) ) { - st->hTcxDec->CngLevelBackgroundTrace_bfi_fx = PLC_MIN_CNG_LEV; - st->hTcxDec->CngLevelBackgroundTrace_bfi_exp = 16; + //st->hTcxDec->CngLevelBackgroundTrace_bfi_fx = PLC_MIN_CNG_LEV; + //st->hTcxDec->CngLevelBackgroundTrace_bfi_exp = 16; st->hTcxDec->NoiseLevelIndex_bfi = PLC_MIN_STAT_BUFF_SIZE - 1; st->hTcxDec->CurrLevelIndex_bfi = 0; st->hTcxDec->LastFrameLevel_bfi_fx = PLC_MIN_CNG_LEV; diff --git a/lib_dec/core_dec_reconf.c b/lib_dec/core_dec_reconf.c index 6e6b8018fd34fd43c41e0d168f39dee90551c21b..7f46f5b7ae1ac91632838bf5717bac4a5abf21d2 100644 --- a/lib_dec/core_dec_reconf.c +++ b/lib_dec/core_dec_reconf.c @@ -41,7 +41,7 @@ #include "rom_dec.h" #include "wmc_auto.h" #include "prot_fx2.h" - +#if (defined EVS_FLOAT) || !(defined IVAS_FLOAT_FIXED) /*---------------------------------------------------------------------* * reconfig_decoder_LPD_ivas() * @@ -199,3 +199,4 @@ void reconfig_decoder_LPD_ivas( return; } +#endif diff --git a/lib_dec/core_switching_dec.c b/lib_dec/core_switching_dec.c index ba7a2af099cd2666087e389897e341c15205ab55..b4286d8a2072e7ca2a954d4cc616692dfff6a5a5 100644 --- a/lib_dec/core_switching_dec.c +++ b/lib_dec/core_switching_dec.c @@ -175,8 +175,7 @@ ivas_error core_switching_pre_dec_ivas_fx( { st->last_core = HQ_CORE; move16(); - //Copy( st->hTcxDec->FBTCXdelayBuf, st->prev_synth_buffer_fx, NS2SA( st->output_Fs, DELAY_BWE_TOTAL_NS - DELAY_CLDFB_NS ) ); - Copy32( st->hTcxDec->FBTCXdelayBuf, st->prev_synth_buffer32_fx, NS2SA( st->output_Fs, DELAY_BWE_TOTAL_NS - DELAY_CLDFB_NS ) ); + Copy32( st->hTcxDec->FBTCXdelayBuf_32, st->prev_synth_buffer32_fx, NS2SA( st->output_Fs, DELAY_BWE_TOTAL_NS - DELAY_CLDFB_NS ) ); //Copy_Scale_sig_32_16( st->hTcxDec->FBTCXdelayBuf_32, st->prev_synth_buffer_fx, NS2SA( st->output_Fs, DELAY_BWE_TOTAL_NS - DELAY_CLDFB_NS ), -11 ); //Q11 -> Q0 } diff --git a/lib_dec/dec_tcx_fx.c b/lib_dec/dec_tcx_fx.c index 81d9add2ec81f878573a3d0d61965d1250c53a2e..6eb4dc4a850ab6d9785246446b8f01301734313b 100644 --- a/lib_dec/dec_tcx_fx.c +++ b/lib_dec/dec_tcx_fx.c @@ -4549,20 +4549,16 @@ void decoder_tcx_noisefilling_fx( tcxGetNoiseFillingTilt( A, M, L_frame, tmp, &noiseTiltFactor ); - f2me( hTcxDec->CngLevelBackgroundTrace_bfi, &hTcxDec->CngLevelBackgroundTrace_bfi_fx, &hTcxDec->CngLevelBackgroundTrace_bfi_exp ); - //f2me( st->hTonalMDCTConc->curr_noise_nrg_flt, &st->hTonalMDCTConc->curr_noise_nrg, &st->hTonalMDCTConc->curr_noise_nrg_exp ); - + Word32 CngLevelBackgroundTrace_bfi_fx = L_deposit_l(hTcxDec->conCngLevelBackgroundTrace); + Word16 CngLevelBackgroundTrace_bfi_exp = hTcxDec->conCngLevelBackgroundTrace_e + 16; IF( EQ_16( st->element_mode, IVAS_CPE_MDCT ) && MCT_flag == 0 ) { - TonalMDCTConceal_InsertNoise_ivas_fx( st->hTonalMDCTConc, x, x_e, st->tonal_mdct_plc_active, &st->seed_tcx_plc, noiseTiltFactor, f, concealment_noise, concealment_noise_exp, hTcxDec->CngLevelBackgroundTrace_bfi_fx, hTcxDec->CngLevelBackgroundTrace_bfi_exp, infoIGFStartLine ); + TonalMDCTConceal_InsertNoise_ivas_fx( st->hTonalMDCTConc, x, x_e, st->tonal_mdct_plc_active, &st->seed_tcx_plc, noiseTiltFactor, f, concealment_noise, concealment_noise_exp, CngLevelBackgroundTrace_bfi_fx, CngLevelBackgroundTrace_bfi_exp, infoIGFStartLine ); } ELSE { - TonalMDCTConceal_InsertNoise_ivas_fx( st->hTonalMDCTConc, x, x_e, st->tonal_mdct_plc_active, &st->seed_tcx_plc, noiseTiltFactor, f, NULL, 0, hTcxDec->CngLevelBackgroundTrace_bfi_fx, hTcxDec->CngLevelBackgroundTrace_bfi_exp, infoIGFStartLine ); + TonalMDCTConceal_InsertNoise_ivas_fx( st->hTonalMDCTConc, x, x_e, st->tonal_mdct_plc_active, &st->seed_tcx_plc, noiseTiltFactor, f, NULL, 0, CngLevelBackgroundTrace_bfi_fx, CngLevelBackgroundTrace_bfi_exp, infoIGFStartLine ); } - - //st->hTonalMDCTConc->faded_signal_nrg_flt = me2f( st->hTonalMDCTConc->faded_signal_nrg, st->hTonalMDCTConc->faded_signal_nrg_exp ); - //st->hTonalMDCTConc->curr_noise_nrg_flt = me2f( st->hTonalMDCTConc->curr_noise_nrg, st->hTonalMDCTConc->curr_noise_nrg_exp ); } } } diff --git a/lib_dec/fd_cng_dec.c b/lib_dec/fd_cng_dec.c index d2c8860ad6afaefc374bae559b777dfef6e3f830..abd09dd818cb55df8bdc40ea96396612c218ad83 100644 --- a/lib_dec/fd_cng_dec.c +++ b/lib_dec/fd_cng_dec.c @@ -2039,7 +2039,8 @@ void generate_masking_noise_ivas_fx( } Word16 exp; - Word32 scale_temp = BASOP_util_Pow2( Mpy_32_32( float_to_fix( -scaleTable_cn_only[i].scale_flt / 10.f, Q31 ), LOG_10_BASE_2 ), Q2, &exp ); + //Word32 scale_temp = BASOP_util_Pow2( Mpy_32_32( float_to_fix( -scaleTable_cn_only[i].scale_flt / 10.f, Q31 ), LOG_10_BASE_2 ), Q2, &exp ); + Word32 scale_temp = BASOP_util_Pow2( Mpy_32_32( L_shl( negate( scaleTable_cn_only[i].scale_ivas / 10 ), 18 ), LOG_10_BASE_2 ), Q2, &exp ); scale_temp = L_sub( scale_temp, L_shl( 1, Q31 - exp ) ); scale_fx = L_shl( scale_temp, exp - Q1 ); // Q30 } @@ -2134,15 +2135,15 @@ void generate_masking_noise_ivas_fx( ELSE { // SynthesisSTFT_flt(fftBuffer, maskingNoise, hFdCngCom->olapBufferSynth2_flt, hFdCngCom->olapWinSyn_flt, 0, hFdCngCom, element_mode, nchan_out); - FOR( i = 0; i < hFdCngCom->fftlen; i++ ) - { - hFdCngCom->olapBufferSynth2_fx[i] = float_to_fix( hFdCngCom->olapBufferSynth2_flt[i], *exp_out ); - } + //FOR( i = 0; i < hFdCngCom->fftlen; i++ ) + //{ + // hFdCngCom->olapBufferSynth2_fx[i] = float_to_fix( hFdCngCom->olapBufferSynth2_flt[i], *exp_out ); + //} SynthesisSTFT_fx( fftBuffer_fx, *exp_out, maskingNoise_fx, hFdCngCom->olapBufferSynth2_fx, hFdCngCom->olapWinSyn_fx, 0, hFdCngCom, element_mode, nchan_out ); - FOR( i = 0; i < hFdCngCom->fftlen; i++ ) - { - hFdCngCom->olapBufferSynth2_flt[i] = fix_to_float( hFdCngCom->olapBufferSynth2_fx[i], *exp_out ); - } + //FOR( i = 0; i < hFdCngCom->fftlen; i++ ) + //{ + // hFdCngCom->olapBufferSynth2_flt[i] = fix_to_float( hFdCngCom->olapBufferSynth2_fx[i], *exp_out ); + //} } *exp_out = *exp_out - 9; @@ -2444,10 +2445,11 @@ void generate_stereo_masking_noise_16fx( hFdCngCom = st->hFdCngDec->hFdCngCom; // mvr2r(hStereoCng->olapBufferSynth22, Ns, hFdCngCom->frameSize / 2); // mvr2r(hFdCngCom->olapBufferSynth2_flt, Np, hFdCngCom->frameSize / 2); + Copy32(hFdCngCom->olapBufferSynth2_fx, Np_fx, hFdCngCom->frameSize / 2); for (i = 0; i < hFdCngCom->frameSize / 2; i++) { Ns_fx[i] = float_to_fix(hStereoCng->olapBufferSynth22[i], Q6); - Np_fx[i] = float_to_fix(hFdCngCom->olapBufferSynth2_flt[i], Q6); + //Np_fx[i] = float_to_fix(hFdCngCom->olapBufferSynth2_flt[i], Q6); } set_l(&Np_fx[hFdCngCom->frameSize / 2], 0, hFdCngCom->frameSize / 2); set_l(&Ns_fx[hFdCngCom->frameSize / 2], 0, hFdCngCom->frameSize / 2); diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index c71f52d6e0bc1f61367df44ee9e56672a4c4b3a0..7d57d9e843f5a7b2101761a57cb4dbbe9976bbf6 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -111,7 +111,7 @@ void ivas_initFdCngDec_fx( set32_fx( hFdCngDec->msBminSubWin, 0, NPART_SHAPING ); set16_fx( hFdCngDec->msPsd, 0, NPART_SHAPING ); - set32_fx( hFdCngDec->msPsd_fx, 0, NPART_SHAPING ); + set32_fx( hFdCngDec->msPsd_fx, 0, NPART_SHAPING ); set16_fx( hFdCngDec->msNoiseFloor, 0, NPART_SHAPING ); set32_fx( hFdCngDec->msNoiseEst, 0, NPART_SHAPING ); @@ -227,7 +227,7 @@ void initFdCngDec( set32_fx( hFdCngDec->msBminSubWin, 0, NPART_SHAPING ); set16_fx( hFdCngDec->msPsd, 0, NPART_SHAPING ); - set32_fx( hFdCngDec->msPsd_fx, 0, NPART_SHAPING ); + set32_fx( hFdCngDec->msPsd_fx, 0, NPART_SHAPING ); set16_fx( hFdCngDec->msNoiseFloor, 0, NPART_SHAPING ); set32_fx( hFdCngDec->msNoiseEst, 0, NPART_SHAPING ); @@ -264,6 +264,7 @@ void initFdCngDec( hFdCngDec->hFdCngCom->periodog_exp = 0; set32_fx(hFdCngDec->smoothed_psd_fx, 0, L_FRAME16k); hFdCngDec->q_smoothed_psd = Q4; + #ifdef IVAS_CODE_CNG set_f(hFdCngDec->hFdCngCom->sidNoiseEstLp, 0.0f, NPART); @@ -1423,12 +1424,15 @@ Word16 ApplyFdCng_fx( L_tmp_exp = add( L_tmp_exp, 31 - 16 ); /*->Q31, L_tmp_exp*/ #ifdef BASOP_NOGLOB - st->hTcxDec->CngLevelBackgroundTrace_bfi_fx = ( Sqrt32( L_tmp, &L_tmp_exp ) ); + //st->hTcxDec->CngLevelBackgroundTrace_bfi_fx = ( Sqrt32( L_tmp, &L_tmp_exp ) ); + st->hTcxDec->conCngLevelBackgroundTrace = round_fx_sat( Sqrt32( L_tmp, &L_tmp_exp ) ); #else - st->hTcxDec->CngLevelBackgroundTrace_bfi_fx = ( Sqrt32( L_tmp, &L_tmp_exp ) ); + st->hTcxDec->conCngLevelBackgroundTrace = round_fx( Sqrt32( L_tmp, &L_tmp_exp ) ); + //st->hTcxDec->CngLevelBackgroundTrace_bfi_fx = ( Sqrt32( L_tmp, &L_tmp_exp ) ); #endif L_tmp_exp = add( L_tmp_exp, 1 ); - st->hTcxDec->CngLevelBackgroundTrace_bfi_exp = L_tmp_exp; + //st->hTcxDec->CngLevelBackgroundTrace_bfi_exp = L_tmp_exp; + st->hTcxDec->conCngLevelBackgroundTrace_e = L_tmp_exp; move16(); } ELSE @@ -1472,11 +1476,14 @@ Word16 ApplyFdCng_fx( L_tmp_exp = add( L_tmp_exp, 31 - 16 ); /*->Q31, L_tmp_exp*/ #ifdef BASOP_NOGLOB - st->hTcxDec->CngLevelBackgroundTrace_bfi_fx = ( Sqrt32( L_tmp, &L_tmp_exp ) ); + //st->hTcxDec->CngLevelBackgroundTrace_bfi_fx = ( Sqrt32( L_tmp, &L_tmp_exp ) ); + st->hTcxDec->conCngLevelBackgroundTrace = round_fx_sat( Sqrt32( L_tmp, &L_tmp_exp ) ); #else + st->hTcxDec->conCngLevelBackgroundTrace = round_fx( Sqrt32( L_tmp, &L_tmp_exp ) ); st->hTcxDec->CngLevelBackgroundTrace_bfi_fx = ( Sqrt32( L_tmp, &L_tmp_exp ) ); #endif - st->hTcxDec->CngLevelBackgroundTrace_bfi_exp = L_tmp_exp; + //st->hTcxDec->CngLevelBackgroundTrace_bfi_exp = L_tmp_exp; + st->hTcxDec->conCngLevelBackgroundTrace_e = L_tmp_exp; move16(); } @@ -2785,7 +2792,7 @@ void perform_noise_estimation_dec_fx( hFdCngDec->msPsd_exp_fft = hFdCngDec->msNoiseEst_exp; /* Expand partitions into bins of power spectrum */ - scalebands_fx( msNoiseEst, part, nFFTpart, hFdCngDec->midband_shaping, nFFTpart, sub( stopFFTbin, startBand ), hFdCngDec->bandNoiseShape, 1 ); + scalebands_fx( msNoiseEst, part, nFFTpart, hFdCngDec->midband_shaping, nFFTpart, sub( stopFFTbin, startBand ), hFdCngDec->bandNoiseShape, 1 ); hFdCngDec->bandNoiseShape_exp = hFdCngDec->msNoiseEst_exp; Copy32( hFdCngDec->bandNoiseShape, &hFdCngDec->smoothed_psd_fx[startBand], sub( stopFFTbin, startBand ) ); hFdCngDec->q_smoothed_psd = sub(Q31, hFdCngDec->bandNoiseShape_exp); diff --git a/lib_dec/ivas_core_dec.c b/lib_dec/ivas_core_dec.c index 7d35e3d24d236b8de7f9e91e2d2c832d37abb224..11febe2605e173972dd5c4e0fcbd2e2e3e6c4ab7 100644 --- a/lib_dec/ivas_core_dec.c +++ b/lib_dec/ivas_core_dec.c @@ -468,7 +468,7 @@ ivas_error ivas_core_dec( FOR( Word16 ch = 0; ch < CPE_CHANNELS; ++ch ) { me2f_buf( sts[ch]->hFdCngDec->hFdCngCom->cngNoiseLevel, sts[ch]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, sts[ch]->hFdCngDec->hFdCngCom->cngNoiseLevel_flt, sts[ch]->hFdCngDec->hFdCngCom->stopBand - sts[ch]->hFdCngDec->hFdCngCom->startBand ); - fixedToFloat_arr( sts[ch]->hFdCngDec->hFdCngCom->A_cng, sts[ch]->hFdCngDec->hFdCngCom->A_cng_flt, Q14, M + 1 ); + //fixedToFloat_arr( sts[ch]->hFdCngDec->hFdCngCom->A_cng, sts[ch]->hFdCngDec->hFdCngCom->A_cng_flt, Q14, M + 1 ); } } @@ -565,11 +565,11 @@ ivas_error ivas_core_dec( floatToFixed_arr32( st->cldfbSyn->cldfb_state, st->cldfbSyn->cldfb_state_fx, Q11, st->cldfbSyn->cldfb_state_length ); } - IF( st->hFdCngDec ) - { - Q_olapBufferSynth2 = Q_factor_arrL( st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, 640 ) - 1; - floatToFixed_arr32( st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, Q_olapBufferSynth2, 640 ); - } + //IF( st->hFdCngDec ) + //{ + // Q_olapBufferSynth2 = Q_factor_arrL( st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, 640 ) - 1; + // floatToFixed_arr32( st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, Q_olapBufferSynth2, 640 ); + //} IF( st->cldfbBPF ) floatToFixed_arr32( st->cldfbBPF->cldfb_state, st->cldfbBPF->cldfb_state_fx, Q11, st->cldfbBPF->cldfb_state_length ); @@ -610,10 +610,10 @@ ivas_error ivas_core_dec( { } - IF( st->hFdCngDec ) - { - fixedToFloat_arrL( st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, Q_olapBufferSynth2, L_FRAME32k ); - } + //IF( st->hFdCngDec ) + //{ + // fixedToFloat_arrL( st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, Q_olapBufferSynth2, L_FRAME32k ); + //} #endif flag_sec_CNA = -1; @@ -647,11 +647,15 @@ ivas_error ivas_core_dec( //if (hStereoTD) { // floatToFixed_arr(hStereoTD->tdm_Pri_pitch_buf, hStereoTD->tdm_Pri_pitch_buf_fx, Q6, NB_SUBFR); //} - if(st->hFdCngDec != NULL) + + IF( st->hFdCngDec != NULL ) { - Scale_sig32(st->hFdCngDec->msNoiseEst, NPART_SHAPING, sub(st->hFdCngDec->msNoiseEst_exp, 27)); - st->hFdCngDec->msNoiseEst_exp = 27; + Scale_sig32( st->hFdCngDec->msNoiseEst, NPART_SHAPING, sub( st->hFdCngDec->msNoiseEst_exp, 27 ) ); + st->hFdCngDec->msNoiseEst_exp = 27; + + Scale_sig( st->hFdCngDec->hFdCngCom->A_cng, M + 1, norm_s( st->hFdCngDec->hFdCngCom->A_cng[0] - 1 ) - 3 ); } + IF ( ( error = acelp_core_dec_ivas_fx( st, output_16_fx[n], synth_fxl, save_hb_synth_16_fx, bwe_exc_extended_fx[n], voice_factors_fx[n], old_syn_12k8_16k_fx_16, sharpFlag[n], pitch_buf_fx[n], &unbits[n], &sid_bw[n], hStereoTD, tdm_lspQ_PCh_fx, tdm_lsfQ_PCh_fx, use_cldfb_for_dft, last_element_mode, last_element_brate, flag_sec_CNA, nchan_out, hCPE == NULL ? NULL : hCPE->hStereoCng, read_sid_info ) ) != IVAS_ERR_OK ) { return error; @@ -893,8 +897,8 @@ ivas_error ivas_core_dec( floatToFixed_arr( st->hTonalMDCTConc->secondLastPcmOut_float, st->hTonalMDCTConc->secondLastPcmOut, 0, s_min( 960, st->hTonalMDCTConc->nSamples ) / 2 ); //IF( st->hTcxDec ) //st->hTcxDec->conceal_eof_gain = (Word16) floatToFixed( st->hTcxDec->conceal_eof_gain_float, Q14 ); - IF( st->hTcxDec ) - f2me_16( st->hTcxDec->CngLevelBackgroundTrace_bfi, &st->hTcxDec->conCngLevelBackgroundTrace, &st->hTcxDec->conCngLevelBackgroundTrace_e ); + //IF( st->hTcxDec ) + //f2me_16( st->hTcxDec->CngLevelBackgroundTrace_bfi, &st->hTcxDec->conCngLevelBackgroundTrace, &st->hTcxDec->conCngLevelBackgroundTrace_e ); if ( st->hTcxDec && st->hTcxDec->conLastFrameLevel_e < 0 ) { st->hTcxDec->conLastFrameLevel_e = 0; @@ -907,8 +911,8 @@ ivas_error ivas_core_dec( st->hTcxDec->conNoiseLevelIndex = st->hTcxDec->NoiseLevelIndex_bfi; IF( st->hTcxDec ) st->hTcxDec->conCurrLevelIndex = st->hTcxDec->CurrLevelIndex_bfi; - IF( st->hFdCngDec && st->hFdCngDec->hFdCngCom ) - floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, 15, 17 ); + //IF( st->hFdCngDec && st->hFdCngDec->hFdCngCom ) + //floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, 15, 17 ); } IF( st_ivas->hLsSetUpConversion ) @@ -1012,10 +1016,10 @@ ivas_error ivas_core_dec( } if ( sts[ch]->element_mode != IVAS_CPE_MDCT || sts[ch]->core == ACELP_CORE ) { - int A_cng_q = 15 - norm_s( sts[ch]->hFdCngDec->hFdCngCom->A_cng[0] ); + //int A_cng_q = 15 - norm_s( sts[ch]->hFdCngDec->hFdCngCom->A_cng[0] ); for ( int p = 0; p < M; p++ ) { - sts[ch]->hFdCngDec->hFdCngCom->A_cng_flt[p] = ( (float) sts[ch]->hFdCngDec->hFdCngCom->A_cng[p] / ( 1u << A_cng_q ) ); + //sts[ch]->hFdCngDec->hFdCngCom->A_cng_flt[p] = ( (float) sts[ch]->hFdCngDec->hFdCngCom->A_cng[p] / ( 1u << A_cng_q ) ); } } } @@ -1051,8 +1055,8 @@ ivas_error ivas_core_dec( st->hHQ_core->old_out[p] = (float) st->hHQ_core->old_out_fx[p] / ( 1u << st->Q_syn ); } - IF( st->hTcxDec ) - st->hTcxDec->CngLevelBackgroundTrace_bfi = me2f_16( st->hTcxDec->conCngLevelBackgroundTrace, st->hTcxDec->conCngLevelBackgroundTrace_e ); + //IF( st->hTcxDec ) + //st->hTcxDec->CngLevelBackgroundTrace_bfi = me2f_16( st->hTcxDec->conCngLevelBackgroundTrace, st->hTcxDec->conCngLevelBackgroundTrace_e ); IF( st->hTonalMDCTConc && st->hTonalMDCTConc->lastPcmOut_float ) fixedToFloat_arr( st->hTonalMDCTConc->lastPcmOut, st->hTonalMDCTConc->lastPcmOut_float, 0, s_min( 960, st->hTonalMDCTConc->nSamples ) ); @@ -1253,16 +1257,16 @@ ivas_error ivas_core_dec( } } - if (st->hBWE_TD != NULL) - { - for (int i = 0; i < L_SHB_LAHEAD; i++) - { - for (int ii = 0; ii < L_SHB_LAHEAD; ii++) - { - st->hBWE_TD->syn_overlap_fx_32[ii] = (Word32)(st->hBWE_TD->syn_overlap[ii] * (1 << 11)); - } - } - } + //if (st->hBWE_TD != NULL) + //{ + // for (int i = 0; i < L_SHB_LAHEAD; i++) + // { + // for (int ii = 0; ii < L_SHB_LAHEAD; ii++) + // { + // st->hBWE_TD->syn_overlap_fx_32[ii] = (Word32)(st->hBWE_TD->syn_overlap[ii] * (1 << 11)); + // } + // } + //} } /*cldfb struct*/ IF(st->hBWE_TD != NULL) @@ -1682,7 +1686,7 @@ ivas_error ivas_core_dec( IF(hBWE_TD != NULL) { fixedToFloat_arr(hBWE_TD->old_bwe_exc_extended_fx, hBWE_TD->old_bwe_exc_extended, st->prev_Q_bwe_exc - 16, NL_BUFF_OFFSET); - fixedToFloat_arr(hBWE_TD->syn_overlap_fx, hBWE_TD->syn_overlap, st->prev_Q_bwe_syn2, L_SHB_LAHEAD); // Check + //fixedToFloat_arr(hBWE_TD->syn_overlap_fx, hBWE_TD->syn_overlap, st->prev_Q_bwe_syn2, L_SHB_LAHEAD); // Check } #endif /*-------------------------------------------------------------------* diff --git a/lib_dec/ivas_cpe_dec_fx.c b/lib_dec/ivas_cpe_dec_fx.c index 48b9c02811ca1ebf3d806ca9a5145210253d91c5..c64f5907e9d85b653e9802062b7cb47ac11a1705 100644 --- a/lib_dec/ivas_cpe_dec_fx.c +++ b/lib_dec/ivas_cpe_dec_fx.c @@ -662,7 +662,7 @@ ivas_error ivas_cpe_dec_fx( FOR(Word16 ch = 0; ch < CPE_CHANNELS; ++ch) { //f2me_buf(sts[ch]->hFdCngDec->hFdCngCom->cngNoiseLevel_flt, sts[ch]->hFdCngDec->hFdCngCom->cngNoiseLevel, &sts[ch]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, sts[ch]->hFdCngDec->hFdCngCom->stopBand - sts[ch]->hFdCngDec->hFdCngCom->startBand); - floatToFixed_arr(sts[ch]->hFdCngDec->hFdCngCom->A_cng_flt, sts[ch]->hFdCngDec->hFdCngCom->A_cng, Q14, M + 1); + //floatToFixed_arr(sts[ch]->hFdCngDec->hFdCngCom->A_cng_flt, sts[ch]->hFdCngDec->hFdCngCom->A_cng, Q14, M + 1); } } @@ -728,7 +728,7 @@ ivas_error ivas_cpe_dec_fx( FOR(Word16 ch = 0; ch < CPE_CHANNELS; ++ch) { f2me_buf(sts[ch]->hFdCngDec->hFdCngCom->cngNoiseLevel_flt, sts[ch]->hFdCngDec->hFdCngCom->cngNoiseLevel, &sts[ch]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, sts[ch]->hFdCngDec->hFdCngCom->stopBand - sts[ch]->hFdCngDec->hFdCngCom->startBand); - floatToFixed_arr(sts[ch]->hFdCngDec->hFdCngCom->A_cng_flt, sts[ch]->hFdCngDec->hFdCngCom->A_cng, Q14, M + 1); + //floatToFixed_arr(sts[ch]->hFdCngDec->hFdCngCom->A_cng_flt, sts[ch]->hFdCngDec->hFdCngCom->A_cng, Q14, M + 1); } } diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index 4b48b9a7fbbf48acf4da1ef174bfbc490fd5ecdd..44573bb97266b38b88fa35a9e396e12e87227015 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -653,8 +653,8 @@ ivas_error ivas_jbm_dec_tc( } - IF( st->hTcxDec ) - f2me_16( st->hTcxDec->CngLevelBackgroundTrace_bfi, &st->hTcxDec->conCngLevelBackgroundTrace, &st->hTcxDec->conCngLevelBackgroundTrace_e ); + //IF( st->hTcxDec ) + //f2me_16( st->hTcxDec->CngLevelBackgroundTrace_bfi, &st->hTcxDec->conCngLevelBackgroundTrace, &st->hTcxDec->conCngLevelBackgroundTrace_e ); if ( st->hTcxDec && st->hTcxDec->conLastFrameLevel_e < 0 ) { st->hTcxDec->conLastFrameLevel_e = 0; @@ -668,7 +668,7 @@ ivas_error ivas_jbm_dec_tc( IF( st->hTcxDec ) st->hTcxDec->conCurrLevelIndex = st->hTcxDec->CurrLevelIndex_bfi; IF( st->hFdCngDec && st->hFdCngDec->hFdCngCom ) - floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, 15, 17 ); + //floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, 15, 17 ); /*cldfb struct*/ @@ -771,8 +771,8 @@ ivas_error ivas_jbm_dec_tc( { st = hCPE->hCoreCoder[n]; sts = hCPE->hCoreCoder; - IF( st->hTcxDec ) - st->hTcxDec->CngLevelBackgroundTrace_bfi = me2f_16( st->hTcxDec->conCngLevelBackgroundTrace, st->hTcxDec->conCngLevelBackgroundTrace_e ); + //IF( st->hTcxDec ) + //st->hTcxDec->CngLevelBackgroundTrace_bfi = me2f_16( st->hTcxDec->conCngLevelBackgroundTrace, st->hTcxDec->conCngLevelBackgroundTrace_e ); IF( st->hTonalMDCTConc && st->hTonalMDCTConc->lastPcmOut_float ) fixedToFloat_arr( st->hTonalMDCTConc->lastPcmOut, st->hTonalMDCTConc->lastPcmOut_float, 0, st->hTonalMDCTConc->nSamples ); IF( sts[0]->bfi == 0 && !st->hTonalMDCTConc->secondLastBlockData.tonalConcealmentActive ) @@ -1795,8 +1795,8 @@ ivas_error ivas_jbm_dec_tc( } - IF( st->hTcxDec ) - f2me_16( st->hTcxDec->CngLevelBackgroundTrace_bfi, &st->hTcxDec->conCngLevelBackgroundTrace, &st->hTcxDec->conCngLevelBackgroundTrace_e ); + //IF( st->hTcxDec ) + //f2me_16( st->hTcxDec->CngLevelBackgroundTrace_bfi, &st->hTcxDec->conCngLevelBackgroundTrace, &st->hTcxDec->conCngLevelBackgroundTrace_e ); if ( st->hTcxDec && st->hTcxDec->conLastFrameLevel_e < 0 ) { st->hTcxDec->conLastFrameLevel_e = 0; @@ -1810,7 +1810,7 @@ ivas_error ivas_jbm_dec_tc( IF( st->hTcxDec ) st->hTcxDec->conCurrLevelIndex = st->hTcxDec->CurrLevelIndex_bfi; IF( st->hFdCngDec && st->hFdCngDec->hFdCngCom ) - floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, 15, 17 ); + //floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, 15, 17 ); /*cldfb struct*/ @@ -1915,8 +1915,8 @@ ivas_error ivas_jbm_dec_tc( { st = hCPE->hCoreCoder[n]; sts = hCPE->hCoreCoder; - IF( st->hTcxDec ) - st->hTcxDec->CngLevelBackgroundTrace_bfi = me2f_16( st->hTcxDec->conCngLevelBackgroundTrace, st->hTcxDec->conCngLevelBackgroundTrace_e ); + //IF( st->hTcxDec ) + //st->hTcxDec->CngLevelBackgroundTrace_bfi = me2f_16( st->hTcxDec->conCngLevelBackgroundTrace, st->hTcxDec->conCngLevelBackgroundTrace_e ); IF( st->hTonalMDCTConc && st->hTonalMDCTConc->lastPcmOut_float ) fixedToFloat_arr( st->hTonalMDCTConc->lastPcmOut, st->hTonalMDCTConc->lastPcmOut_float, 0, st->hTonalMDCTConc->nSamples ); IF( sts[0]->bfi == 0 && !st->hTonalMDCTConc->secondLastBlockData.tonalConcealmentActive ) @@ -2459,8 +2459,8 @@ ivas_error ivas_jbm_dec_tc( } - IF( st->hTcxDec ) - f2me_16( st->hTcxDec->CngLevelBackgroundTrace_bfi, &st->hTcxDec->conCngLevelBackgroundTrace, &st->hTcxDec->conCngLevelBackgroundTrace_e ); + //IF( st->hTcxDec ) + //f2me_16( st->hTcxDec->CngLevelBackgroundTrace_bfi, &st->hTcxDec->conCngLevelBackgroundTrace, &st->hTcxDec->conCngLevelBackgroundTrace_e ); if ( st->hTcxDec && st->hTcxDec->conLastFrameLevel_e < 0 ) { st->hTcxDec->conLastFrameLevel_e = 0; @@ -2474,7 +2474,7 @@ ivas_error ivas_jbm_dec_tc( IF( st->hTcxDec ) st->hTcxDec->conCurrLevelIndex = st->hTcxDec->CurrLevelIndex_bfi; IF( st->hFdCngDec && st->hFdCngDec->hFdCngCom ) - floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, 15, 17 ); + //floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, 15, 17 ); /*cldfb struct*/ /*------------------fix-to-fix-start---------------------*/ @@ -2575,8 +2575,8 @@ ivas_error ivas_jbm_dec_tc( { st = hCPE->hCoreCoder[n]; sts = hCPE->hCoreCoder; - IF( st->hTcxDec ) - st->hTcxDec->CngLevelBackgroundTrace_bfi = me2f_16( st->hTcxDec->conCngLevelBackgroundTrace, st->hTcxDec->conCngLevelBackgroundTrace_e ); + //IF( st->hTcxDec ) + //st->hTcxDec->CngLevelBackgroundTrace_bfi = me2f_16( st->hTcxDec->conCngLevelBackgroundTrace, st->hTcxDec->conCngLevelBackgroundTrace_e ); IF( st->hTonalMDCTConc && st->hTonalMDCTConc->lastPcmOut_float ) fixedToFloat_arr( st->hTonalMDCTConc->lastPcmOut, st->hTonalMDCTConc->lastPcmOut_float, 0, st->hTonalMDCTConc->nSamples ); IF( sts[0]->bfi == 0 && !st->hTonalMDCTConc->secondLastBlockData.tonalConcealmentActive ) @@ -2803,8 +2803,8 @@ ivas_error ivas_jbm_dec_tc( } - IF( st->hTcxDec ) - f2me_16( st->hTcxDec->CngLevelBackgroundTrace_bfi, &st->hTcxDec->conCngLevelBackgroundTrace, &st->hTcxDec->conCngLevelBackgroundTrace_e ); + //IF( st->hTcxDec ) + //f2me_16( st->hTcxDec->CngLevelBackgroundTrace_bfi, &st->hTcxDec->conCngLevelBackgroundTrace, &st->hTcxDec->conCngLevelBackgroundTrace_e ); if ( st->hTcxDec && st->hTcxDec->conLastFrameLevel_e < 0 ) { st->hTcxDec->conLastFrameLevel_e = 0; @@ -2818,7 +2818,7 @@ ivas_error ivas_jbm_dec_tc( IF( st->hTcxDec ) st->hTcxDec->conCurrLevelIndex = st->hTcxDec->CurrLevelIndex_bfi; IF( st->hFdCngDec && st->hFdCngDec->hFdCngCom ) - floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, 15, 17 ); + //floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, 15, 17 ); /*cldfb struct*/ @@ -2920,8 +2920,8 @@ ivas_error ivas_jbm_dec_tc( { st = hCPE->hCoreCoder[n]; sts = hCPE->hCoreCoder; - IF( st->hTcxDec ) - st->hTcxDec->CngLevelBackgroundTrace_bfi = me2f_16( st->hTcxDec->conCngLevelBackgroundTrace, st->hTcxDec->conCngLevelBackgroundTrace_e ); + //IF( st->hTcxDec ) + //st->hTcxDec->CngLevelBackgroundTrace_bfi = me2f_16( st->hTcxDec->conCngLevelBackgroundTrace, st->hTcxDec->conCngLevelBackgroundTrace_e ); IF( st->hTonalMDCTConc && st->hTonalMDCTConc->lastPcmOut_float ) fixedToFloat_arr( st->hTonalMDCTConc->lastPcmOut, st->hTonalMDCTConc->lastPcmOut_float, 0, st->hTonalMDCTConc->nSamples ); IF( sts[0]->bfi == 0 && !st->hTonalMDCTConc->secondLastBlockData.tonalConcealmentActive ) @@ -3152,8 +3152,8 @@ ivas_error ivas_jbm_dec_tc( } - IF( st->hTcxDec ) - f2me_16( st->hTcxDec->CngLevelBackgroundTrace_bfi, &st->hTcxDec->conCngLevelBackgroundTrace, &st->hTcxDec->conCngLevelBackgroundTrace_e ); + //IF( st->hTcxDec ) + //f2me_16( st->hTcxDec->CngLevelBackgroundTrace_bfi, &st->hTcxDec->conCngLevelBackgroundTrace, &st->hTcxDec->conCngLevelBackgroundTrace_e ); if ( st->hTcxDec && st->hTcxDec->conLastFrameLevel_e < 0 ) { st->hTcxDec->conLastFrameLevel_e = 0; @@ -3167,7 +3167,7 @@ ivas_error ivas_jbm_dec_tc( IF( st->hTcxDec ) st->hTcxDec->conCurrLevelIndex = st->hTcxDec->CurrLevelIndex_bfi; IF( st->hFdCngDec && st->hFdCngDec->hFdCngCom ) - floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, 15, 17 ); + //floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, 15, 17 ); /*cldfb struct*/ @@ -3269,8 +3269,8 @@ ivas_error ivas_jbm_dec_tc( { st = hCPE->hCoreCoder[n]; sts = hCPE->hCoreCoder; - IF( st->hTcxDec ) - st->hTcxDec->CngLevelBackgroundTrace_bfi = me2f_16( st->hTcxDec->conCngLevelBackgroundTrace, st->hTcxDec->conCngLevelBackgroundTrace_e ); + //IF( st->hTcxDec ) + //st->hTcxDec->CngLevelBackgroundTrace_bfi = me2f_16( st->hTcxDec->conCngLevelBackgroundTrace, st->hTcxDec->conCngLevelBackgroundTrace_e ); IF( st->hTonalMDCTConc && st->hTonalMDCTConc->lastPcmOut_float ) fixedToFloat_arr( st->hTonalMDCTConc->lastPcmOut, st->hTonalMDCTConc->lastPcmOut_float, 0, st->hTonalMDCTConc->nSamples ); IF( sts[0]->bfi == 0 && !st->hTonalMDCTConc->secondLastBlockData.tonalConcealmentActive ) @@ -4312,14 +4312,14 @@ void ivas_jbm_dec_feed_tc_to_renderer( } st->hFdCngDec->hFdCngCom->cngNoiseLevelExp = norm_l( max_cngNoiseLevel ); - floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, Q13, M + 1 ); + //floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, Q13, M + 1 ); floatToFixed_arrL( st->hFdCngDec->hFdCngCom->cngNoiseLevel_flt, st->hFdCngDec->hFdCngCom->cngNoiseLevel, st->hFdCngDec->hFdCngCom->cngNoiseLevelExp, FFTCLDFBLEN ); - for ( i = 0; i < FFTLEN; i++ ) - { - st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx[i] = float_to_fix( st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt[i], 15 ); - } + //for ( i = 0; i < FFTLEN; i++ ) + //{ + // st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx[i] = float_to_fix( st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt[i], 15 ); + //} } #endif ivas_sba_dec_digest_tc_fx( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); @@ -4383,10 +4383,10 @@ void ivas_jbm_dec_feed_tc_to_renderer( ((st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC) && (nchan_transport == 1 && st_ivas->nchan_transport != 2 && st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag))) { Decoder_State *st = st_ivas->hSCE[0]->hCoreCoder[0]; - fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, 15, st->hFdCngDec->hFdCngCom->fftlen); + //fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, 15, st->hFdCngDec->hFdCngCom->fftlen); //fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->fftBuffer, st->hFdCngDec->hFdCngCom->fftBuffer_flt, 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp, st->hFdCngDec->hFdCngCom->fftlen); - fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->exc_cng_32fx, st->hFdCngDec->hFdCngCom->exc_cng_flt, 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize); + //fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->exc_cng_32fx, st->hFdCngDec->hFdCngCom->exc_cng_flt, 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize); fixedToFloat_arrL(st_ivas->hTcBuffer->tc_fx[1], st_ivas->hTcBuffer->tc[1], 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize); } #endif @@ -4569,14 +4569,14 @@ void ivas_jbm_dec_feed_tc_to_renderer( } st->hFdCngDec->hFdCngCom->cngNoiseLevelExp = norm_l( max_cngNoiseLevel ); - floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, Q13, M + 1 ); + //floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, Q13, M + 1 ); floatToFixed_arrL( st->hFdCngDec->hFdCngCom->cngNoiseLevel_flt, st->hFdCngDec->hFdCngCom->cngNoiseLevel, st->hFdCngDec->hFdCngCom->cngNoiseLevelExp, FFTCLDFBLEN ); - for ( i = 0; i < FFTLEN; i++ ) - { - st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx[i] = float_to_fix( st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt[i], 15 ); - } + //for ( i = 0; i < FFTLEN; i++ ) + //{ + // st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx[i] = float_to_fix( st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt[i], 15 ); + //} } #endif ivas_sba_dec_digest_tc_fx( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); @@ -4640,9 +4640,9 @@ void ivas_jbm_dec_feed_tc_to_renderer( ( ( st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC ) && ( nchan_transport == 1 && st_ivas->nchan_transport != 2 && st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag ) ) ) { Decoder_State *st = st_ivas->hSCE[0]->hCoreCoder[0]; - fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, 15, st->hFdCngDec->hFdCngCom->fftlen); + //fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, 15, st->hFdCngDec->hFdCngCom->fftlen); - fixedToFloat_arrL( st->hFdCngDec->hFdCngCom->exc_cng_32fx, st->hFdCngDec->hFdCngCom->exc_cng_flt, 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize ); + //fixedToFloat_arrL( st->hFdCngDec->hFdCngCom->exc_cng_32fx, st->hFdCngDec->hFdCngCom->exc_cng_flt, 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize ); fixedToFloat_arrL( st_ivas->hTcBuffer->tc_fx[1], st_ivas->hTcBuffer->tc[1], 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize ); } #endif @@ -4798,14 +4798,14 @@ void ivas_jbm_dec_feed_tc_to_renderer( } st->hFdCngDec->hFdCngCom->cngNoiseLevelExp = norm_l( max_cngNoiseLevel ); - floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, Q13, M + 1 ); + //floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, Q13, M + 1 ); floatToFixed_arrL( st->hFdCngDec->hFdCngCom->cngNoiseLevel_flt, st->hFdCngDec->hFdCngCom->cngNoiseLevel, st->hFdCngDec->hFdCngCom->cngNoiseLevelExp, FFTCLDFBLEN ); - for ( i = 0; i < FFTLEN; i++ ) - { - st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx[i] = float_to_fix( st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt[i], 15 ); - } + //for ( i = 0; i < FFTLEN; i++ ) + //{ + // st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx[i] = float_to_fix( st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt[i], 15 ); + //} } #endif ivas_sba_dec_digest_tc_fx( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); @@ -4869,9 +4869,9 @@ void ivas_jbm_dec_feed_tc_to_renderer( ( ( st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC ) && ( nchan_transport == 1 && st_ivas->nchan_transport != 2 && st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag ) ) ) { Decoder_State *st = st_ivas->hSCE[0]->hCoreCoder[0]; - fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, 15, st->hFdCngDec->hFdCngCom->fftlen); + //fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, 15, st->hFdCngDec->hFdCngCom->fftlen); - fixedToFloat_arrL( st->hFdCngDec->hFdCngCom->exc_cng_32fx, st->hFdCngDec->hFdCngCom->exc_cng_flt, 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize ); + //fixedToFloat_arrL( st->hFdCngDec->hFdCngCom->exc_cng_32fx, st->hFdCngDec->hFdCngCom->exc_cng_flt, 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize ); fixedToFloat_arrL( st_ivas->hTcBuffer->tc_fx[1], st_ivas->hTcBuffer->tc[1], 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize ); } #endif @@ -5030,14 +5030,14 @@ void ivas_jbm_dec_feed_tc_to_renderer( } st->hFdCngDec->hFdCngCom->cngNoiseLevelExp = norm_l( max_cngNoiseLevel ); - floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, Q13, M + 1 ); + //floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, Q13, M + 1 ); floatToFixed_arrL( st->hFdCngDec->hFdCngCom->cngNoiseLevel_flt, st->hFdCngDec->hFdCngCom->cngNoiseLevel, st->hFdCngDec->hFdCngCom->cngNoiseLevelExp, FFTCLDFBLEN ); - for ( i = 0; i < FFTLEN; i++ ) - { - st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx[i] = float_to_fix( st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt[i], 15 ); - } + //for ( i = 0; i < FFTLEN; i++ ) + //{ + // st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx[i] = float_to_fix( st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt[i], 15 ); + //} } #endif ivas_sba_dec_digest_tc_fx( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); @@ -5101,9 +5101,9 @@ void ivas_jbm_dec_feed_tc_to_renderer( ( ( st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC ) && ( nchan_transport == 1 && st_ivas->nchan_transport != 2 && st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag ) ) ) { Decoder_State *st = st_ivas->hSCE[0]->hCoreCoder[0]; - fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, 15, st->hFdCngDec->hFdCngCom->fftlen); + //fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, 15, st->hFdCngDec->hFdCngCom->fftlen); - fixedToFloat_arrL( st->hFdCngDec->hFdCngCom->exc_cng_32fx, st->hFdCngDec->hFdCngCom->exc_cng_flt, 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize ); + //fixedToFloat_arrL( st->hFdCngDec->hFdCngCom->exc_cng_32fx, st->hFdCngDec->hFdCngCom->exc_cng_flt, 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize ); fixedToFloat_arrL( st_ivas->hTcBuffer->tc_fx[1], st_ivas->hTcBuffer->tc[1], 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize ); } #endif @@ -5279,14 +5279,14 @@ void ivas_jbm_dec_feed_tc_to_renderer( } st->hFdCngDec->hFdCngCom->cngNoiseLevelExp = norm_l( max_cngNoiseLevel ); - floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, Q13, M + 1 ); + //floatToFixed_arr( st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, Q13, M + 1 ); floatToFixed_arrL( st->hFdCngDec->hFdCngCom->cngNoiseLevel_flt, st->hFdCngDec->hFdCngCom->cngNoiseLevel, st->hFdCngDec->hFdCngCom->cngNoiseLevelExp, FFTCLDFBLEN ); - for ( i = 0; i < FFTLEN; i++ ) - { - st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx[i] = float_to_fix( st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt[i], 15 ); - } + //for ( i = 0; i < FFTLEN; i++ ) + //{ + // st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx[i] = float_to_fix( st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt[i], 15 ); + //} } #endif ivas_sba_dec_digest_tc_fx( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); @@ -5350,9 +5350,9 @@ void ivas_jbm_dec_feed_tc_to_renderer( ((st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC) && (nchan_transport == 1 && st_ivas->nchan_transport != 2 && st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag))) { Decoder_State *st = st_ivas->hSCE[0]->hCoreCoder[0]; - fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, 15, st->hFdCngDec->hFdCngCom->fftlen); + //fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, 15, st->hFdCngDec->hFdCngCom->fftlen); - fixedToFloat_arrL( st->hFdCngDec->hFdCngCom->exc_cng_32fx, st->hFdCngDec->hFdCngCom->exc_cng_flt, 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize ); + //fixedToFloat_arrL( st->hFdCngDec->hFdCngCom->exc_cng_32fx, st->hFdCngDec->hFdCngCom->exc_cng_flt, 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize ); fixedToFloat_arrL( st_ivas->hTcBuffer->tc_fx[1], st_ivas->hTcBuffer->tc[1], 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize ); } #endif diff --git a/lib_dec/ivas_mdct_core_dec.c b/lib_dec/ivas_mdct_core_dec.c index 01e94f1bb3dcc64fed84b64b8d8a5a77524683da..a5b542fa743629babed45c43ba63122e75d72c86 100644 --- a/lib_dec/ivas_mdct_core_dec.c +++ b/lib_dec/ivas_mdct_core_dec.c @@ -1917,6 +1917,7 @@ void ivas_mdct_core_reconstruct_fx( } ELSE { + Scale_sig( st->hFdCngDec->hFdCngCom->A_cng, M + 1, norm_s( st->hFdCngDec->hFdCngCom->A_cng[0] - 1 ) ); con_tcx_ivas_fx( st, &synthFB_fx[0], hCPE->hStereoMdct->lastCoh_fx, &sts[0]->seed_acelp, ( sts[1]->core != ACELP_CORE ) ? 1 : 0, &st->hFdCngDec->hFdCngCom->A_cng[0] ); } diff --git a/lib_dec/ivas_sba_dec.c b/lib_dec/ivas_sba_dec.c index 2ad7994b549aa6e2deecc932e2873acd5367212e..c9707338b7f4edbe17fa528d476b93b925ccf70e 100644 --- a/lib_dec/ivas_sba_dec.c +++ b/lib_dec/ivas_sba_dec.c @@ -1162,23 +1162,23 @@ void ivas_sba_dec_digest_tc( } st->hFdCngDec->hFdCngCom->cngNoiseLevelExp = norm_l(max_cngNoiseLevel); - floatToFixed_arr(st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, Q13, M + 1); + //floatToFixed_arr(st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, Q13, M + 1); floatToFixed_arrL(st->hFdCngDec->hFdCngCom->cngNoiseLevel_flt, st->hFdCngDec->hFdCngCom->cngNoiseLevel, st->hFdCngDec->hFdCngCom->cngNoiseLevelExp, FFTCLDFBLEN); for (int i = 0; i < FFTLEN; i++) { - st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx[i] = float_to_fix(st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt[i], 15); + //st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx[i] = float_to_fix(st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt[i], 15); } #endif generate_masking_noise_lb_dirac_fx(st->hFdCngDec->hFdCngCom, st_ivas->hTcBuffer->tc_fx[1], nCldfbSlots, st->cna_dirac_flag && st->flag_cna); #if 1 - fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, 15, st->hFdCngDec->hFdCngCom->fftlen); + //fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2_flt, 15, st->hFdCngDec->hFdCngCom->fftlen); fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->fftBuffer, st->hFdCngDec->hFdCngCom->fftBuffer_flt, 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp, st->hFdCngDec->hFdCngCom->fftlen); - fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->exc_cng_32fx, st->hFdCngDec->hFdCngCom->exc_cng_flt, 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize); + //fixedToFloat_arrL(st->hFdCngDec->hFdCngCom->exc_cng_32fx, st->hFdCngDec->hFdCngCom->exc_cng_flt, 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize); fixedToFloat_arrL(st_ivas->hTcBuffer->tc_fx[1], st_ivas->hTcBuffer->tc[1], 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp - 9, st->hFdCngDec->hFdCngCom->frameSize); #endif @@ -1257,6 +1257,8 @@ void ivas_sba_dec_digest_tc_fx( ( (EQ_16(st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC) || EQ_16(st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM) || EQ_16(st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC) ) && (EQ_16(nchan_transport, 1) && NE_16(st_ivas->nchan_transport, 2) && st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag ) ) ) { Decoder_State *st = st_ivas->hSCE[0]->hCoreCoder[0]; + Scale_sig(st->hFdCngDec->hFdCngCom->A_cng, M + 1, norm_s(st->hFdCngDec->hFdCngCom->A_cng[0] - 1) - 2); + generate_masking_noise_lb_dirac_fx( st->hFdCngDec->hFdCngCom, st_ivas->hTcBuffer->tc_fx[1], nCldfbSlots, st->cna_dirac_flag && st->flag_cna ); } diff --git a/lib_dec/ivas_sce_dec_fx.c b/lib_dec/ivas_sce_dec_fx.c index 16f77ac251234155266092aa42e4c4b2c60a7b9b..168be610c0a668df876df3fcccf3235aa7dc2a5b 100644 --- a/lib_dec/ivas_sce_dec_fx.c +++ b/lib_dec/ivas_sce_dec_fx.c @@ -272,7 +272,7 @@ ivas_error ivas_sce_dec_fx( //FOR(Word16 ch = 0; ch < CPE_CHANNELS; ++ch) { f2me_buf(st->hFdCngDec->hFdCngCom->cngNoiseLevel_flt, st->hFdCngDec->hFdCngCom->cngNoiseLevel, &st->hFdCngDec->hFdCngCom->cngNoiseLevelExp, st->hFdCngDec->hFdCngCom->stopBand - st->hFdCngDec->hFdCngCom->startBand); - floatToFixed_arr(st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, Q14, M + 1); + //floatToFixed_arr(st->hFdCngDec->hFdCngCom->A_cng_flt, st->hFdCngDec->hFdCngCom->A_cng, Q14, M + 1); } } diff --git a/lib_dec/ivas_stereo_switching_dec.c b/lib_dec/ivas_stereo_switching_dec.c index 06a22a1d17139f35cd0df1671f012a7dc5e81201..6a4c51ae53ee6f71b1b152210ebf4166ed2ae327 100644 --- a/lib_dec/ivas_stereo_switching_dec.c +++ b/lib_dec/ivas_stereo_switching_dec.c @@ -145,7 +145,7 @@ static ivas_error allocate_CoreCoder_TCX_fx( } reset_tcx_overl_buf_fx( st->hTcxDec ); - st->hTcxDec->CngLevelBackgroundTrace_bfi = 0; //initializing to avoid garbage overflow; + //st->hTcxDec->CngLevelBackgroundTrace_bfi = 0; //initializing to avoid garbage overflow; set16_fx( st->hTcxDec->syn_OverlFB, 0, L_FRAME48k / 2 ); set16_fx( st->hTcxDec->old_synth, 0, OLD_SYNTH_INTERNAL_DEC ); set16_fx( st->hTcxDec->synth_history_fx, 0, L_PROT48k + L_FRAME48k ); diff --git a/lib_dec/stat_dec.h b/lib_dec/stat_dec.h index 5e8f7c3b23d5f2b79d8c71be5721d9d3b5fae4a0..b898d294eb0761a70681b04403bb7afe8ab040a5 100644 --- a/lib_dec/stat_dec.h +++ b/lib_dec/stat_dec.h @@ -163,17 +163,17 @@ typedef struct int16_t part_shaping[NPART_SHAPING]; /* Partition upper boundaries (band indices starting from 0) */ int16_t midband_shaping[NPART_SHAPING]; /* Central band of each partition */ - float psize_shaping_float[NPART_SHAPING]; /* Partition sizes */ Word16 psize_shaping[NPART_SHAPING]; /* Partition sizes */ Word16 psize_shaping_norm[NPART_SHAPING]; /* Partition sizes, fractional variable */ Word16 psize_shaping_norm_exp; /* Partition sizes exponent for fractional variable */ - float psize_inv_shaping_float[NPART_SHAPING]; /* Inverse of partition sizes */ Word16 psize_inv_shaping[NPART_SHAPING]; /* Inverse of partition sizes */ #if (defined EVS_FLOAT) || !(defined IVAS_FLOAT_FIXED) + float psize_shaping_float[NPART_SHAPING]; /* Partition sizes */ + float psize_inv_shaping_float[NPART_SHAPING]; /* Inverse of partition sizes */ float bandNoiseShape_float[FFTLEN2]; /* CNG spectral shape computed at the decoder */ #endif @@ -720,11 +720,11 @@ typedef struct tcx_dec_structure uint16_t kernel_type[2]; /* transform kernel type in each subframe (MDCT or MDST) */ int16_t prev_widow_left_rect; - float CngLevelBackgroundTrace_bfi; /* PLC - long term gain estimate for background level, used for PLC fade out */ - Word32 CngLevelBackgroundTrace_bfi_fx; /* PLC - long term gain estimate for background level, used for PLC fade out */ - Word16 CngLevelBackgroundTrace_bfi_exp; + //Word32 CngLevelBackgroundTrace_bfi_fx; /* PLC - long term gain estimate for background level, used for PLC fade out */ + //Word16 CngLevelBackgroundTrace_bfi_exp; /* state variables for the minimum statistics used for PLC */ #if (defined EVS_FLOAT) || !(defined IVAS_FLOAT_FIXED) + float CngLevelBackgroundTrace_bfi; /* PLC - long term gain estimate for background level, used for PLC fade out */ float NoiseLevelMemory_bfi[PLC_MIN_STAT_BUFF_SIZE]; #endif #ifdef IVAS_FLOAT_FIXED @@ -1596,10 +1596,10 @@ typedef struct td_bwe_dec_structure /* states for the filters used in generating SHB signal from SHB excitation*/ #if (defined EVS_FLOAT) || !(defined IVAS_FLOAT_FIXED) float state_syn_shbexc[L_SHB_LAHEAD]; + float syn_overlap[L_SHB_LAHEAD]; /* overlap buffer used to Adjust SHB Frame Gain*/ #endif Word16 state_syn_shbexc_fx[L_SHB_LAHEAD]; - float syn_overlap[L_SHB_LAHEAD]; /* overlap buffer used to Adjust SHB Frame Gain*/ Word16 syn_overlap_fx[L_SHB_LAHEAD]; /* overlap buffer used to Adjust SHB Frame Gain*/ Word32 syn_overlap_fx_32[L_SHB_LAHEAD]; /* overlap buffer used to Adjust SHB Frame Gain*/ diff --git a/lib_dec/swb_tbe_dec.c b/lib_dec/swb_tbe_dec.c index d8482b2efc33ca2d6658df56e13f253d26c87a00..d2dc4cc8745812c35378295dd5ff59ab8525d648 100644 --- a/lib_dec/swb_tbe_dec.c +++ b/lib_dec/swb_tbe_dec.c @@ -147,10 +147,10 @@ void ResetSHBbuffer_Dec( set_f( hBWE_TD->state_lsyn_filt_dwn_shb, 0, 2 * ALLPASSSECTIONS_STEEP ); set_f( hBWE_TD->mem_resamp_HB, 0, INTERP_3_1_MEM_LEN ); +#if (defined EVS_FLOAT) || !(defined IVAS_FLOAT_FIXED) /* States for the local synthesis filters */ set_f( hBWE_TD->syn_overlap, 0, L_SHB_LAHEAD ); -#if (defined EVS_FLOAT) || !(defined IVAS_FLOAT_FIXED) /* States for FEC */ if ( extl != WB_TBE ) { @@ -4520,6 +4520,7 @@ void GenTransition_fixed( return; } #endif +#if (defined EVS_FLOAT) || !(defined IVAS_FLOAT_FIXED) /*---------------------------------------------------------------------* * GenTransition_WB() * @@ -4577,6 +4578,7 @@ void GenTransition_WB( return; } +#endif #ifdef IVAS_FLOAT_FIXED void GenTransition_WB_fixed( TD_BWE_DEC_HANDLE hBWE_TD, /* i/o: TD BWE data handle */ @@ -4631,6 +4633,7 @@ void GenTransition_WB_fixed( } #endif +#if (defined EVS_FLOAT) || !(defined IVAS_FLOAT_FIXED) /*---------------------------------------------------------------------* * void TBEreset_dec() * @@ -4735,7 +4738,7 @@ void TBEreset_dec( return; } - +#endif /*-------------------------------------------------------------------* * td_bwe_dec_init() *