diff --git a/lib_enc/core_enc_init.c b/lib_enc/core_enc_init.c index 1711e2c56a6cd2679f8cbfc07e1b52785a907fb8..c000fd95bd75a01918b83017c9b00248350f3091 100644 --- a/lib_enc/core_enc_init.c +++ b/lib_enc/core_enc_init.c @@ -853,8 +853,10 @@ static void init_sig_buffers( #ifndef IVAS_FLOAT_FIXED // Need to remove after cleanup of old_inp_12k8 mvr2r( st->old_inp_12k8, st->buf_speech_enc_pe_flt + st->L_frame - L_INP_MEM, L_INP_MEM ); #else - Word16 tmp; - f2me_buf_16( st->old_inp_12k8, st->buf_speech_enc_pe + st->L_frame - L_INP_MEM, &tmp, L_INP_MEM ); + + Word16 tmp = st->exp_old_inp_12k8; + move16(); + Copy( st->old_inp_12k8_fx, st->buf_speech_enc_pe + st->L_frame - L_INP_MEM, L_INP_MEM ); /* SCaling to common exponent*/ Scale_sig( st->buf_speech_enc_pe + st->L_frame - L_INP_MEM, L_INP_MEM, sub( tmp, s_max( tmp, st->exp_buf_speech_enc_pe ) ) ); Scale_sig( st->buf_speech_enc_pe, st->L_frame - L_INP_MEM, sub( st->exp_buf_speech_enc_pe, s_max( tmp, st->exp_buf_speech_enc_pe ) ) ); @@ -870,8 +872,9 @@ static void init_sig_buffers( #ifndef IVAS_FLOAT_FIXED // Need to remove after cleanup of old_inp_12k8 mvr2r( st->old_inp_16k, st->buf_speech_enc_pe_flt + st->L_frame - L_INP_MEM, L_INP_MEM ); #else - Word16 tmp; - f2me_buf_16( st->old_inp_12k8, st->buf_speech_enc_pe + st->L_frame - L_INP_MEM, &tmp, L_INP_MEM ); + Word16 tmp = st->exp_old_inp_12k8; + move16(); + Copy( st->old_inp_12k8_fx, st->buf_speech_enc_pe + st->L_frame - L_INP_MEM, L_INP_MEM ); /* SCaling to common exponent*/ Scale_sig( st->buf_speech_enc_pe + st->L_frame - L_INP_MEM, L_INP_MEM, sub( tmp, s_max( tmp, st->exp_buf_speech_enc_pe ) ) ); Scale_sig( st->buf_speech_enc_pe, st->L_frame - L_INP_MEM, sub( st->exp_buf_speech_enc_pe, s_max( tmp, st->exp_buf_speech_enc_pe ) ) ); diff --git a/lib_enc/core_enc_switch.c b/lib_enc/core_enc_switch.c index bdb5f5bc1daf92f9d5b7e271bd736a3e35a429ff..67563e2a68884f0469d091957431462f4ee4ccb8 100644 --- a/lib_enc/core_enc_switch.c +++ b/lib_enc/core_enc_switch.c @@ -197,7 +197,6 @@ void core_coder_mode_switch_ivas_fx( { st->igf = getIgfPresent_fx( st->element_mode, st->total_brate, st->bwidth, st->rf_mode ); move16(); -#ifdef IVAS_FLOAT_FIXED_CONVERSIONS IF( hTcxEnc != NULL ) { hTcxEnc->L_frameTCX = extract_l( Mult_32_16( st->input_Fs, 0x0290 ) ); /* 0x0290 is 1/FRAMES_PER_SEC in Q15*/ @@ -205,11 +204,14 @@ void core_coder_mode_switch_ivas_fx( } st->currEnergyHF_fx = 0; move32(); - - /* Initialize Signal Buffers */ - f2me_buf_16( st->old_inp_12k8, st->old_inp_12k8_fx, &st->exp_old_inp_12k8, L_INP_MEM ); - f2me_buf_16( st->old_inp_16k, st->old_inp_16k_fx, &st->exp_old_inp_16k, L_INP_MEM ); -#endif + Word16 shift = getScaleFactor16( st->old_inp_16k_fx, L_INP_MEM ); + Scale_sig( st->old_inp_16k_fx, L_INP_MEM, shift ); + st->exp_old_inp_16k = sub( st->exp_old_inp_16k, shift ); + move16(); + shift = getScaleFactor16( st->old_inp_12k8_fx, L_INP_MEM ); + Scale_sig( st->old_inp_12k8_fx, L_INP_MEM, shift ); + st->exp_old_inp_12k8 = sub( st->exp_old_inp_12k8, shift ); + move16(); init_coder_ace_plus_ivas_fx( st, last_total_brate, MCT_flag ); IF( st->hLPDmem != NULL ) { diff --git a/lib_enc/fd_cng_enc.c b/lib_enc/fd_cng_enc.c index 76af46967c9d242f8ca122d42aaa82fbb550e9b0..3af2bd9f363ca7a5947b050a1fbde8f5a9bb5b0b 100644 --- a/lib_enc/fd_cng_enc.c +++ b/lib_enc/fd_cng_enc.c @@ -701,9 +701,18 @@ void FdCng_encodeSID_ivas_fx( move32(); FOR( i = 0; i < N; i++ ) { - v_fx[i] = Mpy_32_32( 1342177280, BASOP_Util_Log10( L_add_sat( E_fx[i], L_shr( 214748 /* 1e-4f in Q31*/, hFdCngEnc->msNoiseEst_fx_exp ) ), hFdCngEnc->msNoiseEst_fx_exp ) ); // Q21 = 27+25-31 - move32(); - e_fx = L_add( e_fx, v_fx[i] ); // Q21 + IF( E_fx[i] == 0 ) + { + /* 10 * log(1e-4) = 10 * (-4) = -40 */ + v_fx[i] = -41943040; // -40.0 in Q20 + move32(); + } + ELSE + { + v_fx[i] = Mpy_32_32( 671088640 /*10 in Q26*/, BASOP_Util_Log10( E_fx[i], hFdCngEnc->msNoiseEst_fx_exp ) ); // Q20 = 26+25-31 + move32(); + } + e_fx = L_add( e_fx, v_fx[i] ); // Q20 } /* Normalize MSVQ input */ @@ -711,19 +720,19 @@ void FdCng_encodeSID_ivas_fx( move32(); FOR( i = N_GAIN_MIN; i < N_GAIN_MAX; i++ ) { - gain_fx = L_add( gain_fx, v_fx[i] ); // Q21 + gain_fx = L_add( gain_fx, v_fx[i] ); // Q20 } /*gain /= (float) ( N_GAIN_MAX - N_GAIN_MIN );*/ - gain_fx = Mpy_32_32( gain_fx, 165191050 /* 1/13 in Q31*/ ); // Q21 + gain_fx = Mpy_32_32( gain_fx, 165191050 /* 1/13 in Q31*/ ); // Q20 FOR( i = 0; i < N; i++ ) { - v_fx[i] = L_sub( v_fx[i], gain_fx ); // Q21 + v_fx[i] = L_sub( v_fx[i], gain_fx ); // Q20 move32(); } - v_e = 10; // Q21 + v_e = 11; // Q20 move16(); /* MSVQ encoder */ @@ -740,12 +749,12 @@ void FdCng_encodeSID_ivas_fx( /* truncated DCT21 analysis */ create_IDCT_N_Matrix_fx( invTrfMatrix_fx, N, FDCNG_VQ_DCT_MAXTRUNC, sizeof( tmpRAM_fx ) / ( sizeof( Word32 ) ) ); // Q31 - dctT2_N_apply_matrix_fx( v_fx /*Q21*/, dct_target_fx, FDCNG_VQ_DCT_MAXTRUNC, N, invTrfMatrix_fx, FDCNG_VQ_DCT_MAXTRUNC, DCT_T2_21_XX ); // Q21 + dctT2_N_apply_matrix_fx( v_fx /*Q20*/, dct_target_fx, FDCNG_VQ_DCT_MAXTRUNC, N, invTrfMatrix_fx, FDCNG_VQ_DCT_MAXTRUNC, DCT_T2_21_XX ); // Q20 /* truncated IDCT21 extension to 24 bands */ - extend_dctN_input_fx( v_fx, dct_target_fx, N, tot_sig_ext_fx, FDCNG_VQ_MAX_LEN, invTrfMatrix_fx, FDCNG_VQ_DCT_MAXTRUNC, IDCT_T2_XX_21 ); // Q21 + extend_dctN_input_fx( v_fx, dct_target_fx, N, tot_sig_ext_fx, FDCNG_VQ_MAX_LEN, invTrfMatrix_fx, FDCNG_VQ_DCT_MAXTRUNC, IDCT_T2_XX_21 ); // Q20 - Copy32( tot_sig_ext_fx, v_fx, FDCNG_VQ_MAX_LEN ); /* write extended result as input to VQ stage #1 */ // Q21 + Copy32( tot_sig_ext_fx, v_fx, FDCNG_VQ_MAX_LEN ); /* write extended result as input to VQ stage #1 */ // Q20 } create_IDCT_N_Matrix_fx( invTrfMatrix_fx, FDCNG_VQ_MAX_LEN, FDCNG_VQ_DCT_MAXTRUNC, sizeof( tmpRAM_fx ) / ( sizeof( Word32 ) ) ); // Q31 @@ -773,7 +782,7 @@ void FdCng_encodeSID_ivas_fx( gain_fx = L_add( gain_fx, v_fx[i] ); // Q = 31 - v_e } - e_fx = L_shl( e_fx, sub( 10, v_e ) ); // Q = 31 - v_e + e_fx = L_shl( e_fx, sub( 11, v_e ) ); // Q = 31 - v_e gain_fx = Mpy_32_16_1( L_sub( e_fx, gain_fx ), div_s( 1, N ) ); // Q = 31 - v_e gain_fx = L_shl( gain_fx, sub( v_e, 8 ) ); // Q23 diff --git a/lib_enc/init_enc.c b/lib_enc/init_enc.c index 96ccde2c0fe28bd2fce8ebc074d65b31202e2fbc..99491f144ecc8d90b29dca6b857b481092eefb3a 100644 --- a/lib_enc/init_enc.c +++ b/lib_enc/init_enc.c @@ -446,9 +446,8 @@ ivas_error init_encoder( st->Bin_E_old = st->hSignalBuf->Bin_E_old; st->mem_decim = st->hSignalBuf->mem_decim_flt; st->mem_decim16k = st->hSignalBuf->mem_decim16k_flt; -#endif st->old_inp_12k8 = st->hSignalBuf->old_inp_12k8_flt; - st->old_inp_16k = st->hSignalBuf->old_inp_16k_flt; +#endif #ifdef IVAS_FLOAT_FIXED st->mem_decim_fx = st->hSignalBuf->mem_decim_fx; st->mem_decim16k_fx = st->hSignalBuf->mem_decim16k_fx; @@ -456,6 +455,7 @@ ivas_error init_encoder( st->old_inp_16k_fx = st->hSignalBuf->old_inp_16k_fx; #endif #ifndef IVAS_FLOAT_FIXED + st->old_inp_16k = st->hSignalBuf->old_inp_16k_flt; st->buf_synth_flt = st->hSignalBuf->buf_synth_flt; st->buf_speech_enc_flt = st->hSignalBuf->buf_speech_enc_flt; st->buf_wspeech_enc_flt = st->hSignalBuf->buf_wspeech_enc_flt; @@ -479,12 +479,13 @@ ivas_error init_encoder( set_f( st->Bin_E_old, 0, L_FFT / 2 ); set_f( st->mem_decim, 0, 2 * L_FILT_MAX ); set_f( st->mem_decim16k, 0, 2 * L_FILT_MAX ); -#endif - set_f( st->old_inp_12k8, 0, L_INP_MEM ); set_f( st->old_inp_16k, 0, L_INP_MEM ); + set_f( st->old_inp_12k8, 0, L_INP_MEM ); +#endif #ifdef IVAS_FLOAT_FIXED set16_fx( st->old_inp_12k8_fx, 0, L_INP_MEM ); set16_fx( st->old_inp_16k_fx, 0, L_INP_MEM ); + st->exp_old_inp_16k = 0; st->input_buff_fx = st->hSignalBuf->input_buff; st->input_buff32_fx = st->hSignalBuf->input_buff32; set32_fx( st->hSignalBuf->input_buff32, 0, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) ); @@ -533,9 +534,9 @@ ivas_error init_encoder( st->mem_decim_fx = NULL; st->mem_decim16k_fx = NULL; #endif +#ifndef IVAS_FLOAT_FIXED st->old_inp_12k8 = NULL; st->old_inp_16k = NULL; -#ifndef IVAS_FLOAT_FIXED st->buf_synth_flt = NULL; st->buf_speech_enc_flt = NULL; st->buf_speech_enc = NULL; @@ -1629,6 +1630,10 @@ ivas_error init_encoder_ivas_fx( set16_fx( st->mem_decim16k_fx, 0, shl( L_FILT_MAX, 1 ) ); set16_fx( st->old_inp_12k8_fx, 0, L_INP_MEM ); set16_fx( st->old_inp_16k_fx, 0, L_INP_MEM ); + st->exp_old_inp_16k = 0; + st->exp_old_inp_12k8 = 0; + move16(); + move16(); st->input_buff_fx = st->hSignalBuf->input_buff; st->input_buff32_fx = st->hSignalBuf->input_buff32; @@ -1655,16 +1660,14 @@ ivas_error init_encoder_ivas_fx( st->input_fx = st->input_buff_fx + frame_length; } #if 1 // TODO: To be removed later - st->old_inp_12k8 = st->hSignalBuf->old_inp_12k8_flt; - st->old_inp_16k = st->hSignalBuf->old_inp_16k_flt; #ifndef IVAS_FLOAT_FIXED + st->old_inp_12k8 = st->hSignalBuf->old_inp_12k8_flt; st->buf_synth_flt = st->hSignalBuf->buf_synth_flt; st->buf_speech_enc_flt = st->hSignalBuf->buf_speech_enc_flt; st->buf_wspeech_enc_flt = st->hSignalBuf->buf_wspeech_enc_flt; #endif - set_f( st->old_inp_12k8, 0, L_INP_MEM ); - set_f( st->old_inp_16k, 0, L_INP_MEM ); #ifndef IVAS_FLOAT_FIXED + set_f( st->old_inp_12k8, 0, L_INP_MEM ); set_f( st->hSignalBuf->buf_speech_enc_flt, 0, L_PAST_MAX_32k + L_FRAME32k + L_NEXT_MAX_32k ); set_f( st->hSignalBuf->buf_wspeech_enc_flt, 0, L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k + 320 ); #endif @@ -1684,9 +1687,9 @@ ivas_error init_encoder_ivas_fx( st->buf_wspeech_enc = NULL; st->input_buff_fx = NULL; #if 1 +#ifndef IVAS_FLOAT_FIXED st->old_inp_12k8 = NULL; st->old_inp_16k = NULL; -#ifndef IVAS_FLOAT_FIXED st->buf_synth_flt = NULL; st->buf_speech_enc_flt = NULL; st->buf_wspeech_enc_flt = NULL; @@ -2328,9 +2331,14 @@ ivas_error init_encoder_ivas_fx( #endif /* Initialize Signal Buffers */ - f2me_buf_16( st->old_inp_12k8, st->old_inp_12k8_fx, &st->exp_old_inp_12k8, L_INP_MEM ); - f2me_buf_16( st->old_inp_16k, st->old_inp_16k_fx, &st->exp_old_inp_16k, L_INP_MEM ); - + Word16 shift = getScaleFactor16( st->old_inp_16k_fx, L_INP_MEM ); + Scale_sig( st->old_inp_16k_fx, L_INP_MEM, shift ); + st->exp_old_inp_16k = sub( st->exp_old_inp_16k, shift ); + move16(); + shift = getScaleFactor16( st->old_inp_12k8_fx, L_INP_MEM ); + Scale_sig( st->old_inp_12k8_fx, L_INP_MEM, shift ); + st->exp_old_inp_12k8 = sub( st->exp_old_inp_12k8, shift ); + move16(); /* Initialize ACELP */ #endif init_coder_ace_plus_ivas_fx( st, st->last_total_brate, 0 ); diff --git a/lib_enc/ivas_core_pre_proc.c b/lib_enc/ivas_core_pre_proc.c index d2abdfb1a1fbde71135ac1d5ef91f336b0129034..de029bdc4a328959749589b36b00597b191c547a 100644 --- a/lib_enc/ivas_core_pre_proc.c +++ b/lib_enc/ivas_core_pre_proc.c @@ -542,8 +542,14 @@ ivas_error pre_proc_ivas( Word16 Q_old_inp_16k = -1; Word16 Q_r[2] = { 0 }; inp_16k_fx = old_inp_16k_fx + L_INP_MEM - L_look; - f2me_buf_16( st->old_inp_12k8, st->old_inp_12k8_fx, &st->exp_old_inp_12k8, 240 ); - floatToFixed_arr16( st->old_inp_16k, st->old_inp_16k_fx, Q_old_inp_16k, L_INP_MEM ); + + Word16 shift = getScaleFactor16( st->old_inp_12k8_fx, 240 ); + Scale_sig( st->old_inp_12k8_fx, 240, shift ); + st->exp_old_inp_12k8 = sub( st->exp_old_inp_12k8, shift ); + move16(); + + Scale_sig( st->old_inp_16k_fx, L_INP_MEM, sub( Q_old_inp_16k, sub( Q15, Q_old_inp_16k ) ) ); + st->exp_old_inp_16k = sub( Q15, Q_old_inp_16k ); if ( st->hBWE_FD != NULL ) { Scale_sig( st->hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k, sub( -1, st->Q_old_wtda ) ); @@ -621,11 +627,6 @@ ivas_error pre_proc_ivas( st->exp_buf_speech_enc_pe = sub( Q15, *Q_new - 1 ); move16(); -#ifdef IVAS_FLOAT_FIXED_CONVERSIONS - // No need to do fixed to float for signal_in_fx - - fixedToFloat_arr( st->old_inp_16k_fx, st->old_inp_16k, *Q_new - 1, L_INP_MEM ); -#endif /* set the pointer of the current frame for the ACELP core */ IF( EQ_16( st->L_frame, L_FRAME ) ) { diff --git a/lib_enc/ivas_core_pre_proc_front.c b/lib_enc/ivas_core_pre_proc_front.c index 2975ddd3b560f40da2e31806dde92aa7f8a81694..c64ddfc3f3a72726cafe59e94253cefdc41c571f 100644 --- a/lib_enc/ivas_core_pre_proc_front.c +++ b/lib_enc/ivas_core_pre_proc_front.c @@ -926,7 +926,10 @@ ivas_error pre_proc_front_ivas_fx( st = hCPE->hCoreCoder[n]; } Word16 old_inp_12k8_e; - f2me_buf_16( st->old_inp_12k8, st->old_inp_12k8_fx, &st->exp_old_inp_12k8, 240 ); + Word16 shift = getScaleFactor16( st->old_inp_12k8_fx, 240 ); + Scale_sig( st->old_inp_12k8_fx, 240, shift ); + st->exp_old_inp_12k8 = sub( st->exp_old_inp_12k8, shift ); + move16(); f2me_buf_16( old_inp_12k8, old_inp_12k8_fx, &old_inp_12k8_e, 496 ); if ( old_inp_12k8_e > st->exp_old_inp_12k8 ) { @@ -1271,7 +1274,9 @@ ivas_error pre_proc_front_ivas_fx( !!!! Scaling whole old_inp_12k8 to -1. Needs to be check later !!! */ floatToFixed_arr( old_inp_12k8, old_inp_12k8_fx, Q_to_be_looked_into, L_INP_12k8 ); - floatToFixed_arr( st->old_inp_12k8, st->old_inp_12k8_fx, Q_to_be_looked_into, L_INP_MEM ); + Scale_sig( st->old_inp_12k8_fx, 240, sub( Q_to_be_looked_into, sub( Q15, st->exp_old_inp_12k8 ) ) ); + st->exp_old_inp_12k8 = sub( Q15, Q_to_be_looked_into ); + move16(); // Float to fix block end @@ -1318,7 +1323,6 @@ ivas_error pre_proc_front_ivas_fx( move16(); #ifdef IVAS_FLOAT_FIXED_CONVERSIONS fixedToFloat_arr( old_inp_12k8_fx, old_inp_12k8, Q_to_be_looked_into, L_INP_12k8 ); - fixedToFloat_arr( st->old_inp_12k8_fx, st->old_inp_12k8, Q_to_be_looked_into, L_INP_MEM ); #endif #endif @@ -1688,7 +1692,7 @@ ivas_error pre_proc_front_ivas_fx( maximum_abs_32_fx( sig_out, preemp_len, &max_32 ); inp_max = s_max( extract_h( max_32 ), 1 ); - Word16 shift = sub( norm_s( inp_max ), headroom ); + shift = sub( norm_s( inp_max ), headroom ); Word16 Q_min; shift = s_max( shift, 0 ); shift = s_min( shift, Q_MAX ); @@ -2459,7 +2463,7 @@ ivas_error pre_proc_front_ivas_fx( &non_staX_fx, loc_harm, lf_E_fx, &st->hNoiseEst->harm_cor_cnt, st->hNoiseEst->Etot_l_lp_fx, st->hNoiseEst->Etot_v_h2_fx, &st->hNoiseEst->bg_cnt, st->lgBin_E_fx, sub( q_fr_bands, QSCALE ), L_shl( E_MIN_IVAS_FX, sub( q_fr_bands, Q19 ) ), &dummy_fx, S_map_fx, hStereoClassif, NULL, st->ini_frame ); /*Scaling to avoid 0 values*/ - Word16 shift = s_min( L_norm_arr( st->hNoiseEst->fr_bands1_fx, NB_BANDS ), L_norm_arr( st->hNoiseEst->fr_bands2_fx, NB_BANDS ) ); + shift = s_min( L_norm_arr( st->hNoiseEst->fr_bands1_fx, NB_BANDS ), L_norm_arr( st->hNoiseEst->fr_bands2_fx, NB_BANDS ) ); scale_sig32( st->hNoiseEst->fr_bands1_fx, NB_BANDS, shift ); scale_sig32( st->hNoiseEst->fr_bands2_fx, NB_BANDS, shift ); st->hNoiseEst->fr_bands_fx_q = add( st->hNoiseEst->fr_bands_fx_q, shift ); @@ -2717,7 +2721,8 @@ ivas_error pre_proc_front_ivas_fx( Word16 Q_old_inp_16k = -1; floatToFixed_arr16( old_inp_16k, old_inp_16k_fx, Q_old_inp_16k, 880 ); - floatToFixed_arr16( st->old_inp_16k, st->old_inp_16k_fx, Q_old_inp_16k, L_INP_MEM ); + Scale_sig( st->old_inp_16k_fx, L_INP_MEM, sub( Q_old_inp_16k, sub( Q15, Q_old_inp_16k ) ) ); + st->exp_old_inp_16k = sub( Q15, Q_old_inp_16k ); if ( st->hBWE_FD != NULL ) { @@ -2750,7 +2755,6 @@ ivas_error pre_proc_front_ivas_fx( #ifdef IVAS_FLOAT_FIXED_CONVERSIONS // No need to do fixed to float for signal_in_fx fixedToFloat_arr( old_inp_16k_fx, old_inp_16k, Q_old_inp_16k, L_INP ); - fixedToFloat_arr( st->old_inp_16k_fx, st->old_inp_16k, Q_old_inp_16k, L_INP_MEM ); #endif #ifdef IVAS_FLOAT_FIXED @@ -2862,7 +2866,7 @@ ivas_error pre_proc_front_ivas_fx( * Update old input signal buffer *-----------------------------------------------------------------*/ - mvr2r( &old_inp_12k8[L_FRAME], st->old_inp_12k8, L_INP_MEM ); + f2me_buf_16( &old_inp_12k8[L_FRAME], st->old_inp_12k8_fx, &st->exp_old_inp_12k8, L_INP_MEM ); #ifdef IVAS_FLOAT_FIXED free( old_inp_16k_fx ); diff --git a/lib_enc/ivas_cpe_enc.c b/lib_enc/ivas_cpe_enc.c index ae01f6d54e1d3df3d75ddb0d5c158a13105a5163..e10443173fdf73f491957ba433d6eeed1f04bbe0 100644 --- a/lib_enc/ivas_cpe_enc.c +++ b/lib_enc/ivas_cpe_enc.c @@ -588,7 +588,8 @@ ivas_error ivas_cpe_enc_fx( /*flt2fix: dft_synthesize*/ if ( hCPE->element_mode == IVAS_CPE_DFT && hCPE->hStereoDft->res_cod_mode[STEREO_DFT_OFFSET] ) { - floatToFixed_arr( sts[1]->old_inp_12k8, sts[1]->old_inp_12k8_fx, 0, L_INP_MEM ); + sts[1]->exp_old_inp_12k8 = Q15; + move16(); } /*flt2fix end*/ #endif @@ -710,7 +711,8 @@ ivas_error ivas_cpe_enc_fx( { if ( hCPE->element_mode == IVAS_CPE_DFT && hCPE->hStereoDft->res_cod_mode[STEREO_DFT_OFFSET] ) { - floatToFixed_arr( sts[1]->old_inp_12k8, sts[1]->old_inp_12k8_fx, 0, L_INP_MEM ); + sts[1]->exp_old_inp_12k8 = Q15; + move16(); } } #endif @@ -809,7 +811,8 @@ ivas_error ivas_cpe_enc_fx( fixedToFloat_arrL( old_inp_16k_fx[0] + L_INP_MEM + out_16k_start_ind, old_inp_16k[0] + L_INP_MEM + out_16k_start_ind, 16, out_16k_end_ind - out_16k_start_ind ); if ( hCPE->element_mode == IVAS_CPE_DFT && hCPE->hStereoDft->res_cod_mode[STEREO_DFT_OFFSET] ) { - fixedToFloat_arr( sts[1]->old_inp_12k8_fx, sts[1]->old_inp_12k8, 0, L_INP_MEM ); + sts[1]->exp_old_inp_12k8 = Q15; + move16(); fixedToFloat_arrL( old_inp_12k8_fx[1] + L_INP_MEM + out_12k8_start_ind[1], old_inp_12k8[1] + L_INP_MEM + out_12k8_start_ind[1], 16, out_12k8_end_ind[1] - out_12k8_start_ind[1] ); } /*fix2flt end*/ diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h index 2aaf957a1b0472f745983ddc7e198f1ec82046c8..894e476bd5c366bf9d8b6e77ce72d7ddb0d608c2 100644 --- a/lib_enc/stat_enc.h +++ b/lib_enc/stat_enc.h @@ -109,9 +109,9 @@ typedef struct signal_buffers_enc_data_structure float mem_decim_flt[2 * L_FILT_MAX]; /* decimation filter memory */ float mem_decim16k_flt[2 * L_FILT_MAX]; /* ACELP@16kHz - decimation filter memory @16kHz */ #endif - float old_inp_12k8_flt[L_INP_MEM]; /* memory of input signal at 12.8kHz */ - float old_inp_16k_flt[L_INP_MEM]; /* ACELP@16kHz - memory of input signal @16 kHz */ #ifndef IVAS_FLOAT_FIXED + float old_inp_12k8_flt[L_INP_MEM]; /* memory of input signal at 12.8kHz */ + float old_inp_16k_flt[L_INP_MEM]; /* ACELP@16kHz - memory of input signal @16 kHz */ float buf_synth_flt[OLD_SYNTH_SIZE_ENC + L_FRAME32k]; /* can be reduced to PIT_MAX_MAX+L_FRAME_MAX if no rate switching */ float buf_wspeech_enc_flt[L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k + 320]; /* increased by 320 to avoid memory overlap in find_wsp() and also to accomodate for the wspeech_enc */ float buf_speech_enc_pe_flt[L_PAST_MAX_32k + L_FRAME32k + L_NEXT_MAX_32k]; @@ -1849,12 +1849,12 @@ typedef struct tcx_enc_structure #ifndef IVAS_FLOAT_FIXED float tfm_mem; /* state of IIR filtered temporal flatness measure */ float buf_speech_ltp_flt[L_PAST_MAX_32k + L_FRAME32k + L_NEXT_MAX_32k]; + float *speech_ltp_flt; + float *new_speech_ltp_flt; #else Word32 tfm_mem_fx; /* state of IIR filtered temporal flatness measure Q31 */ Word16 buf_speech_ltp[L_PAST_MAX_32k + L_FRAME32k + L_NEXT_MAX_32k]; #endif - float *speech_ltp_flt; - float *new_speech_ltp_flt; #ifdef IVAS_FLOAT_FIXED Word16 exp_buf_speech_ltp; #endif @@ -2264,10 +2264,8 @@ typedef struct enc_core_structure float *Bin_E_old; /* per bin energy of old 2nd frames */ float *mem_decim; /* decimation filter memory */ float *mem_decim16k; /* ACELP@16kHz - decimation filter memory @16kHz */ -#endif float *old_inp_12k8; /* memory of input signal at 12.8kHz */ float *old_inp_16k; /* ACELP@16kHz - memory of input signal @16 kHz */ -#ifndef IVAS_FLOAT_FIXED float *buf_speech_enc_pe_flt; float *buf_synth_flt; /*can be reduced to PIT_MAX_MAX+L_FRAME_MAX if no rate switching*/ float *buf_wspeech_enc_flt;