LCOV - code coverage report
Current view: top level - lib_lc3plus - per_band_energy.c (source / functions) Hit Total Coverage
Test: Coverage on main -- short test vectors @ 867217ee32c8e8cd2cf5aae69e60c58e00160b49 Lines: 22 31 71.0 %
Date: 2025-12-13 06:47:12 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             : *                        ETSI TS 103 634 V1.6.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     1196223 : void processPerBandEnergy_fl(LC3_INT bands_number, const LC3_INT* acc_coeff_per_band, LC3_INT16 hrmode, LC3PLUS_FrameDuration frame_dms, LC3_FLOAT* d2, LC3_FLOAT* d)
      15             : {
      16             :     LC3_INT   i, j, start, stop, maxBwBin;
      17             :     LC3_FLOAT sum;
      18             : 
      19             : #ifdef ENABLE_HR_MODE_FL
      20     1196223 :     if (hrmode)
      21             :     {
      22           0 :         maxBwBin = MAX_BW_HR;
      23             :     }
      24             :     else
      25             : #else
      26             :     UNUSED(hrmode);
      27             : #endif
      28             :     {
      29     1196223 :         maxBwBin = MAX_BW;
      30             :     }
      31     1196223 :     switch (frame_dms)
      32             :     {
      33             : #ifdef CR9_C_ADD_1p25MS
      34           0 :     case LC3PLUS_FRAME_DURATION_1p25MS:
      35           0 :         maxBwBin = maxBwBin >> 3;
      36           0 :         break;
      37             : #endif
      38          16 :     case LC3PLUS_FRAME_DURATION_2p5MS:
      39          16 :         maxBwBin = maxBwBin >> 2;
      40          16 :         break;
      41     1146235 :     case LC3PLUS_FRAME_DURATION_5MS:
      42     1146235 :         maxBwBin = maxBwBin >> 1;
      43     1146235 :         break;
      44           0 :     case LC3PLUS_FRAME_DURATION_7p5MS:
      45           0 :         maxBwBin = (maxBwBin >> 2) * 3;
      46           0 :         break;
      47       49972 :     case LC3PLUS_FRAME_DURATION_10MS:
      48       49972 :         break;
      49           0 :     case LC3PLUS_FRAME_DURATION_UNDEFINED:
      50           0 :         assert(0);
      51             :     }
      52             : 
      53    67610860 :     for (i = 0; i < bands_number; i++) {
      54    66414637 :         sum   = 0;
      55    66414637 :         start = acc_coeff_per_band[i];
      56    66414637 :         stop = MIN(acc_coeff_per_band[i + 1], maxBwBin);
      57             : 
      58   315650757 :         for (j = start; j < stop; j++) {
      59   249236120 :             sum += d[j] * d[j];
      60             :         }
      61             : 
      62    66414637 :         if (stop - start > 0) {
      63    66324781 :             sum   = sum / (LC3_FLOAT)(stop - start);
      64             :         }
      65    66414637 :         d2[i] = sum;
      66             :     }
      67     1196223 : }

Generated by: LCOV version 1.14