LCOV - code coverage report
Current view: top level - lib_lc3plus - noise_filling.c (source / functions) Hit Total Coverage
Test: Coverage on main -- short test vectors @ 6c9ddc4024a9c0e1ecb8f643f114a84a0e26ec6b Lines: 0 50 0.0 %
Date: 2025-05-23 08:37:30 Functions: 0 1 0.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           0 : void processNoiseFilling_fl(LC3_FLOAT xq[], LC3_INT nfseed, LC3_INT fac_ns_idx, LC3_INT bw_stopband, LC3_INT frame_dms, LC3_FLOAT fac_ns_pc, LC3_INT spec_inv_idx)
      15             : {
      16             :     LC3_INT   zeroLines[MAX_LEN];
      17           0 :     LC3_INT   nTransWidth, startOffset, j, k, nzeros = 0, kZeroLines;
      18           0 :     LC3_FLOAT fac_ns = 0;
      19             : 
      20           0 :     switch (frame_dms)
      21             :     {
      22           0 :         case 25:
      23           0 :             nTransWidth = 1;
      24           0 :             startOffset = 6;
      25           0 :             break;
      26           0 :         case 50:
      27           0 :             nTransWidth = 1;
      28           0 :             startOffset = 12;
      29           0 :             break;
      30           0 :         case 75:
      31           0 :             nTransWidth = 2;
      32           0 :             startOffset = 18;
      33           0 :             break;
      34           0 :         case 100:
      35           0 :             nTransWidth = 3;
      36           0 :             startOffset = 24;
      37           0 :             break;
      38             :     }
      39             : 
      40           0 :     fac_ns = (8.0 - fac_ns_idx) / 16.0;
      41             : 
      42           0 :     j = 0;
      43             : 
      44           0 :     for (k = startOffset - nTransWidth; k < startOffset + nTransWidth; k++)
      45             :     {
      46           0 :         if (xq[k] != 0)
      47             :         {
      48           0 :             nzeros = -2 * nTransWidth - 1;
      49             :         }
      50           0 :         if (xq[k] == 0)
      51             :         {
      52           0 :             nzeros ++;
      53             :         }
      54             :     }
      55           0 :     for (k = startOffset; k < bw_stopband - nTransWidth; k++)
      56             :     {
      57           0 :         if (xq[k + nTransWidth] != 0)
      58             :         {
      59           0 :             nzeros = -2 * nTransWidth - 1;
      60             :         }
      61           0 :         if (xq[k + nTransWidth] == 0)
      62             :         {
      63           0 :             nzeros ++;
      64             :         }
      65           0 :         if (nzeros >= 0)
      66             :         {
      67           0 :             zeroLines[j++] = k;
      68             :         }
      69             :     }
      70             : 
      71           0 :     for (k = bw_stopband - nTransWidth; k < bw_stopband; k++)
      72             :     {
      73           0 :         nzeros ++;
      74           0 :         if (nzeros >= 0)
      75             :         {
      76           0 :             zeroLines[j++] = k;
      77             :         }
      78             :     }
      79             : 
      80           0 :     kZeroLines = j;
      81             : 
      82           0 :     for (k = 0; k < kZeroLines; k++) {
      83           0 :         nfseed = (13849 + (nfseed + 32768) * 31821) & 65535;
      84           0 :         nfseed -= 32768;
      85             : 
      86           0 :         if (nfseed >= 0) {
      87           0 :             if (zeroLines[k] < spec_inv_idx)
      88             :             {
      89           0 :                 xq[zeroLines[k]] = fac_ns;
      90             :             } else {
      91           0 :                 xq[zeroLines[k]] = fac_ns_pc;
      92             :             }
      93             :         } else {
      94           0 :             if (zeroLines[k] < spec_inv_idx)
      95             :             {
      96           0 :                 xq[zeroLines[k]] = -fac_ns;
      97             :             } else {
      98           0 :                 xq[zeroLines[k]] = -fac_ns_pc;
      99             :             }
     100             :         }
     101             :     }
     102             : 
     103           0 :     return;
     104             : }

Generated by: LCOV version 1.14