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 "functions.h" 13 : 14 0 : void processPcUpdate_fl(LC3_INT32 bfi, LC3_FLOAT *q_res, LC3_INT32 gg_idx, LC3_INT32 gg_idx_off, LC3_INT32 rframe, LC3_INT32 *BW_cutoff_idx_nf, LC3_INT32 *prev_BW_cutoff_idx_nf, 15 : LC3_INT32 fac_ns_idx, LC3_FLOAT *prev_fac_ns, LC3_FLOAT *fac, LC3_FLOAT *q_old_res, LC3_FLOAT *prev_gg, LC3_INT32 spec_inv_idx, LC3_INT32 yLen) 16 : { 17 : LC3_FLOAT gg; 18 : 19 0 : gg = LC3_POW(10.0, ((LC3_FLOAT) (gg_idx + gg_idx_off)) / 28.0); 20 0 : *prev_gg = gg; 21 0 : move_float(q_old_res, q_res, yLen); 22 : 23 0 : if (rframe == 0) 24 : { 25 0 : *prev_BW_cutoff_idx_nf = *BW_cutoff_idx_nf; 26 0 : *prev_fac_ns = (8.0 - (LC3_FLOAT) fac_ns_idx) / 16.0; 27 0 : } else if ((bfi == 2) && (*BW_cutoff_idx_nf != *prev_BW_cutoff_idx_nf) && (spec_inv_idx < yLen)) 28 : { 29 0 : *BW_cutoff_idx_nf = *prev_BW_cutoff_idx_nf; 30 0 : *prev_fac_ns = *prev_fac_ns * (*fac); 31 0 : *prev_fac_ns = MAX(*prev_fac_ns, (8.0 - 7.0) / 16.0); 32 0 : *prev_fac_ns = MIN(*prev_fac_ns, (8.0 - 0.0) / 16.0); 33 : } 34 : 35 0 : } 36 :