Line data Source code
1 : /****************************************************************************** 2 : * ETSI TS 103 634 V1.5.1 * 3 : * Low Complexity Communication Codec Plus (LC3plus) * 4 : * * 5 : * Copyright licence is solely granted through ETSI Intellectual Property * 6 : * Rights Policy, 3rd April 2019. No patent licence is granted by implication, * 7 : * estoppel or otherwise. * 8 : ******************************************************************************/ 9 : 10 : #include "options.h" 11 : #include "wmc_auto.h" 12 : #include "defines.h" 13 : #include "functions.h" 14 : 15 0 : void plc_phEcu_tba_spect_Xavg(LC3_INT32 fs_idx, LC3_INT32 n_grp, LC3_FLOAT *oold_spec_shape, 16 : LC3_FLOAT *oold_EwPtr, LC3_FLOAT *old_spec_shape, 17 : LC3_FLOAT *old_EwPtr, LC3_FLOAT *gr_pow_left, LC3_FLOAT *gr_pow_right, LC3_FLOAT *Xavg) 18 : { 19 : LC3_INT32 i; 20 : LC3_FLOAT XavgEn[MAX_LGW]; 21 : LC3_FLOAT xfp_w_scale, oold_Escale, old_Escale; 22 : 23 : /* 8k 16k 24k 32k 48k */ 24 0 : LC3_FLOAT flt_xfp_wE_MDCT2FFT_target[5] = { (LC3_FLOAT) 1.9906, (LC3_FLOAT) 4.0445, (LC3_FLOAT) 6.0980, (LC3_FLOAT) 8.1533, (LC3_FLOAT) 12.2603 }; 25 0 : LC3_INT32 gw_0[10] = { 1, 3, 5, 9, 17, 33, 49, 65, 81, 97 }; 26 : 27 : /* prepare scale factor */ 28 : 29 0 : xfp_w_scale = LC3_ROUND(flt_xfp_wE_MDCT2FFT_target[fs_idx]/(LC3_FLOAT)16.0*(LC3_FLOAT) 32768.0) / (LC3_FLOAT) LC3_POW(2,11); 30 : 31 : /* prepare left and right subband energies */ 32 0 : oold_Escale = (*oold_EwPtr) * xfp_w_scale; 33 0 : old_Escale = (*old_EwPtr) * xfp_w_scale; 34 0 : for (i = 0;i < n_grp;i++) { 35 0 : gr_pow_left[i] = oold_spec_shape[i] * oold_Escale; 36 0 : gr_pow_right[i] = old_spec_shape[i] * old_Escale; 37 : 38 0 : XavgEn[i] = ((LC3_FLOAT) 0.5) * (gr_pow_left[i] + gr_pow_right[i]) / (gw_0[i + 1] - gw_0[i]); 39 0 : Xavg[i] = LC3_SQRT(XavgEn[i]); 40 : } 41 : 42 0 : return; 43 : } 44 :