Coverage Report

Created: 2026-04-29 07:05

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/pjsip/third_party/ilbc/StateConstructW.c
Line
Count
Source
1
2
   /******************************************************************
3
4
       iLBC Speech Coder ANSI-C Source Code
5
6
       StateConstructW.c
7
8
       Copyright (C) The Internet Society (2004).
9
       All Rights Reserved.
10
11
   ******************************************************************/
12
13
   #include <math.h>
14
   #include <string.h>
15
16
   #include "iLBC_define.h"
17
   #include "constants.h"
18
   #include "filter.h"
19
20
   /*----------------------------------------------------------------*
21
    *  decoding of the start state
22
    *---------------------------------------------------------------*/
23
24
   void StateConstructW(
25
       int idxForMax,      /* (i) 6-bit index for the quantization of
26
                                  max amplitude */
27
       int *idxVec,    /* (i) vector of quantization indexes */
28
       float *syntDenum,   /* (i) synthesis filter denumerator */
29
30
31
32
33
34
       float *out,         /* (o) the decoded state vector */
35
       int len             /* (i) length of a state vector */
36
611
   ){
37
611
       float maxVal, tmpbuf[LPC_FILTERORDER+2*STATE_LEN], *tmp,
38
611
           numerator[LPC_FILTERORDER+1];
39
611
       float foutbuf[LPC_FILTERORDER+2*STATE_LEN], *fout;
40
611
       int k,tmpi;
41
42
       /* decoding of the maximum value */
43
44
611
       maxVal = state_frgqTbl[idxForMax];
45
611
       maxVal = (float)pow(10,maxVal)/(float)4.5;
46
47
       /* initialization of buffers and coefficients */
48
49
611
       memset(tmpbuf, 0, LPC_FILTERORDER*sizeof(float));
50
611
       memset(foutbuf, 0, LPC_FILTERORDER*sizeof(float));
51
6.72k
       for (k=0; k<LPC_FILTERORDER; k++) {
52
6.11k
           numerator[k]=syntDenum[LPC_FILTERORDER-k];
53
6.11k
       }
54
611
       numerator[LPC_FILTERORDER]=syntDenum[0];
55
611
       tmp = &tmpbuf[LPC_FILTERORDER];
56
611
       fout = &foutbuf[LPC_FILTERORDER];
57
58
       /* decoding of the sample values */
59
60
36.0k
       for (k=0; k<len; k++) {
61
35.4k
           tmpi = len-1-k;
62
           /* maxVal = 1/scal */
63
35.4k
           tmp[k] = maxVal*state_sq3Tbl[idxVec[tmpi]];
64
35.4k
       }
65
66
       /* circular convolution with all-pass filter */
67
68
611
       memset(tmp+len, 0, len*sizeof(float));
69
611
       ZeroPoleFilter(tmp, numerator, syntDenum, 2*len,
70
611
           LPC_FILTERORDER, fout);
71
36.0k
       for (k=0;k<len;k++) {
72
35.4k
           out[k] = fout[len-1-k]+fout[2*len-1-k];
73
35.4k
       }
74
611
   }
75
76
77
78
79
80
81
82
83
84
85
86