LCOV - code coverage report
Current view: top level - lib_lc3plus - plc_compute_stab_fac.c (source / functions) Hit Total Coverage
Test: Coverage on main -- short test vectors @ 1ecb9137d23f3dad766c8f6f3eb1e829e795f071 Lines: 18 19 94.7 %
Date: 2025-10-29 06:44:26 Functions: 2 2 100.0 %

          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     1186529 : 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     1186529 :     if (bfi == 1)
      20             :     {
      21        8287 :         if (prev_bfi != 1)
      22             :         {
      23        1245 :             processPlcComputeStabFac_fl(old_scf_q, old_old_scf_q, prev_prev_bfi, stab_fac);
      24             :         }
      25             :     }
      26     1178242 :     else if (bfi == 2)
      27             :     {
      28           0 :         processPlcComputeStabFac_fl(scf_q, old_scf_q, prev_bfi, stab_fac);
      29             :     }
      30     1186529 : }
      31             : 
      32        1245 : 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        1245 :     tmp = 0;
      38             :     
      39        1245 :     if (prev_bfi == 1)
      40             :     {
      41          17 :         *stab_fac = 0.8;
      42             :     }
      43             :     else
      44             :     {
      45       20876 :         for (i = 0; i < M; i++)
      46             :         {
      47       19648 :             tmp += (scf_q[i] - old_scf_q[i]) * (scf_q[i] - old_scf_q[i]);
      48             :         }
      49             : 
      50        1228 :         *stab_fac = 1.25 - tmp / 25.0;
      51             : 
      52        1228 :         if (*stab_fac > 1)
      53             :         {
      54         848 :             *stab_fac = 1;
      55             :         }
      56             : 
      57        1228 :         if (*stab_fac < 0)
      58             :         {
      59          20 :             *stab_fac = 0;
      60             :         }
      61             :     }
      62        1245 : }
      63             : 

Generated by: LCOV version 1.14