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 : static void processPlcComputeStabFac_fl(LC3_FLOAT *scf_q, LC3_FLOAT *old_scf_q, LC3_INT32 prev_bfi, LC3_FLOAT *stab_fac); 15 : 16 0 : void processPlcComputeStabFacMain_fl(LC3_FLOAT *scf_q, LC3_FLOAT *old_scf_q, LC3_FLOAT *old_old_scf_q, LC3_INT32 bfi, LC3_INT32 prev_bfi, 17 : LC3_INT32 prev_prev_bfi, LC3_FLOAT *stab_fac) 18 : { 19 0 : if (bfi == 1) 20 : { 21 0 : if (prev_bfi != 1) 22 : { 23 0 : processPlcComputeStabFac_fl(old_scf_q, old_old_scf_q, prev_prev_bfi, stab_fac); 24 : } 25 : } 26 0 : else if (bfi == 2) 27 : { 28 0 : processPlcComputeStabFac_fl(scf_q, old_scf_q, prev_bfi, stab_fac); 29 : } 30 0 : } 31 : 32 0 : static void processPlcComputeStabFac_fl(LC3_FLOAT *scf_q, LC3_FLOAT *old_scf_q, LC3_INT32 prev_bfi, LC3_FLOAT *stab_fac) 33 : { 34 : LC3_FLOAT tmp; 35 : LC3_INT32 i; 36 : 37 0 : tmp = 0; 38 : 39 0 : if (prev_bfi == 1) 40 : { 41 0 : *stab_fac = 0.8; 42 : } 43 : else 44 : { 45 0 : for (i = 0; i < M; i++) 46 : { 47 0 : tmp += (scf_q[i] - old_scf_q[i]) * (scf_q[i] - old_scf_q[i]); 48 : } 49 : 50 0 : *stab_fac = 1.25 - tmp / 25.0; 51 : 52 0 : if (*stab_fac > 1) 53 : { 54 0 : *stab_fac = 1; 55 : } 56 : 57 0 : if (*stab_fac < 0) 58 : { 59 0 : *stab_fac = 0; 60 : } 61 : } 62 0 : } 63 :