blob: ec733b39a02a25a713171db8b4260c75787d5c13
1 | /*****************************************************************************/ |
2 | /* BroadVoice(R)32 (BV32) Floating-Point ANSI-C Source Code */ |
3 | /* Revision Date: October 5, 2012 */ |
4 | /* Version 1.2 */ |
5 | /*****************************************************************************/ |
6 | |
7 | /*****************************************************************************/ |
8 | /* Copyright 2000-2012 Broadcom Corporation */ |
9 | /* */ |
10 | /* This software is provided under the GNU Lesser General Public License, */ |
11 | /* version 2.1, as published by the Free Software Foundation ("LGPL"). */ |
12 | /* This program is distributed in the hope that it will be useful, but */ |
13 | /* WITHOUT ANY SUPPORT OR WARRANTY; without even the implied warranty of */ |
14 | /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the LGPL for */ |
15 | /* more details. A copy of the LGPL is available at */ |
16 | /* http://www.broadcom.com/licenses/LGPLv2.1.php, */ |
17 | /* or by writing to the Free Software Foundation, Inc., */ |
18 | /* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
19 | /*****************************************************************************/ |
20 | |
21 | |
22 | /***************************************************************************** |
23 | bv32cnst.h : BV32 constants |
24 | |
25 | $Log$ |
26 | ******************************************************************************/ |
27 | |
28 | #ifndef BV32CNST_H |
29 | #define BV32CNST_H |
30 | |
31 | /* ----- Basic Codec Parameters ----- */ |
32 | #define SF 16 /* input Sampling Frequency (in kHz) */ |
33 | #define FRSZ 80 /* the FRame SiZe */ |
34 | #define MAXPP 265 /* MAXimum Pitch Period */ |
35 | #define MINPP 10 /* Half of MINimum Pitch Period */ |
36 | #define NSF 2 /* number of subframes per frame */ |
37 | #define PWSZ 240 /* Pitch analysis Window SiZe for 8 kHz lowband */ |
38 | #define SFRSZ (FRSZ/NSF) /* SubFrame SiZe */ |
39 | #define WINSZ 160 /* Half of lpc analysis WINdow SiZe */ |
40 | #define MAXPP1 (MAXPP+1) /* Half of MAXimum Pitch Period + 1a */ |
41 | |
42 | /* NFC VQ coding parameters */ |
43 | #define VDIM 4 /* excitation vector dimension */ |
44 | #define CBSZ 32 /* codebook size */ |
45 | #define PPCBSZ 32 |
46 | #define LGPORDER 16 /* Log-Gain Predictor OODER */ |
47 | #define LGPECBSZ 32 /* Log-Gain Prediction Error CodeBook SiZe */ |
48 | #define LSPPORDER 8 /* LSP MA Predictor ORDER */ |
49 | #define LSPECBSZ1 128 /* codebook size of 1st-stage LSP VQ */ |
50 | #define SVD1 3 /* split VQ dimension 1 */ |
51 | #define LSPECBSZ21 32 /* codebook size of 2nd-stage LSP split VQ */ |
52 | #define SVD2 5 /* split VQ dimension 2 */ |
53 | #define LSPECBSZ22 32 /* codebook size of 2nd stage LSP split VQ */ |
54 | |
55 | #define NVPSF (FRSZ/VDIM) |
56 | #define NVPSSF (SFRSZ/VDIM) |
57 | |
58 | /* Packetloss Concealment */ |
59 | #define ScPLCGmin 0.1f |
60 | #define ScPLCGmax 0.9f |
61 | #define PePLCGmin 0.5f |
62 | #define PePLCGmax 0.9f |
63 | #define ScPLCG_b ((ScPLCGmin-ScPLCGmax)/(PePLCGmax-PePLCGmin)) |
64 | #define ScPLCG_a (ScPLCGmin-ScPLCG_b*PePLCGmax) |
65 | #define HoldPLCG 8 |
66 | #define AttnPLCG 50 |
67 | #define AttnFacPLCG (1.0f/(Float)AttnPLCG) |
68 | |
69 | /* Pre-emphasis filter coefficients */ |
70 | #define PEAPFC 0.75f |
71 | #define PEAZFC 0.5f |
72 | |
73 | #define INVSFRSZ (1.0f/(Float)SFRSZ) |
74 | #define FECNSF 2 /* number of FEC subframes per frame */ |
75 | |
76 | #define Minlg -2.0f /* minimum log-gain */ |
77 | #define TMinlg 0.25f /* minimum linear gain */ |
78 | #define GPO 16 /* order of MA prediction */ |
79 | |
80 | /* Level Estimation */ |
81 | #define estl_alpha (8191.0f/8192.0f) |
82 | #define estl_beta (1023.0f/1024.0f) |
83 | #define estl_beta1 (1.0f-estl_beta) |
84 | #define estl_a (511.0f/512.0f) |
85 | #define estl_a1 (1-estl_a) |
86 | #define estl_TH 0.2f |
87 | |
88 | /* Log-Gain Limitation */ |
89 | #define LGLB -24 /* Log-Gain Lower Bound */ |
90 | #define GCLB -8 /* Log-Gain Change Lower Bound */ |
91 | #define NGB 18 /* Number of Gain Bins */ |
92 | #define NGCB 11 /* Number of Gain Change Bins */ |
93 | #define MinE -2.0 |
94 | |
95 | #define PFO 1 /* preemphasis filter order */ |
96 | |
97 | #define LTMOFF MAXPP1 /* Long-Term filter Memory OFFset */ |
98 | |
99 | /* Parameters related to the gain decoder trap */ |
100 | #define NCLGLIM_TRAPPED 50 /* 0.125 sec */ |
101 | #define LEVEL_CONVERGENCE_TIME 100 /* 0.25 sec */ |
102 | |
103 | /* front-end highpass filter */ |
104 | #define HPO 2 /* High-pass filter order */ |
105 | |
106 | /* lpc weighting filter */ |
107 | #define LTWFL 0.5f |
108 | |
109 | /* Minimum gain threshold */ |
110 | #define TMinE (SFRSZ*0.25f) |
111 | |
112 | /* coarse pitch search */ |
113 | #define cpp_Qvalue 3 |
114 | #define cpp_scale (1<<cpp_Qvalue) |
115 | |
116 | /* ------ Decimation Parameters ----- */ |
117 | #define DECF 8 /* DECimation Factor for coarse pitch period search */ |
118 | #define FRSZD (FRSZ/DECF) /* FRame SiZe in DECF:1 lowband domain */ |
119 | #define MAXPPD (MAXPP/DECF) /* MAX Pitch in DECF:1, if MAXPP!=4n, ceil() */ |
120 | #define MINPPD ((int) (MINPP/DECF)) /* MINimum Pitch Period in DECF:1 */ |
121 | #define PWSZD (PWSZ/DECF) /* Pitch ana. Window SiZe in DECF:1 domain */ |
122 | #define DFO 4 |
123 | #define MAXPPD1 (MAXPPD+1) |
124 | #define LXD (MAXPPD1+PWSZD) |
125 | #define XDOFF (LXD-FRSZD) |
126 | #define HMAXPPD (MAXPPD/2) |
127 | #define M1 (MINPPD-1) |
128 | #define M2 MAXPPD1 |
129 | #define HDECF (DECF/2) |
130 | #define INVDECF (1.0F/(float)(DECF)) /* INVerse of DECF (decimation factor) */ |
131 | |
132 | /* coarse pitch */ |
133 | #define MPTH4 0.3f /* value to use for MPTH[] with index >= 4 */ |
134 | #define DEVTH 0.25f /* pitch period DEViation THreshold */ |
135 | #define TH1 0.73f /* first threshold for cor*cor/energy */ |
136 | #define TH2 0.4f /* second threshold for cor*cor/energy */ |
137 | #define LPTH1 0.78f /* Last Pitch cor*cor/energy THreshold 1 */ |
138 | #define LPTH2 0.43f /* Last Pitch cor*cor/energy THreshold 2 */ |
139 | #define MPDTH 0.06f /* Multiple Pitch Deviation THreshold */ |
140 | #define SMDTH 0.095f /* Sub-Multiple pitch Deviation THreshold */ |
141 | #define SMDTH1 (1.0f-SMDTH) |
142 | #define SMDTH2 (1.0f+SMDTH) |
143 | #define MPR1 (1.0f-MPDTH) /* Multiple Pitch Range lower threshold */ |
144 | #define MPR2 (1.0f+MPDTH) /* Multiple Pitch Range upper threshold */ |
145 | #define MAX_NPEAKS 7 |
146 | |
147 | /* buffer offset and length */ |
148 | #define XOFF MAXPP1 /* offset for x() frame */ |
149 | #define LX (XOFF+FRSZ) /* Length of x() buffer */ |
150 | |
151 | #endif |
152 | |
153 |