spandsp 0.0.6
g168models.h
Go to the documentation of this file.
1/*
2 * SpanDSP - a series of DSP components for telephony
3 *
4 * g168models.h - line models for echo cancellation tests against the G.168
5 * spec.
6 *
7 * Written by Steve Underwood <steveu@coppice.org>
8 *
9 * Copyright (C) 2001 Steve Underwood
10 *
11 * All rights reserved.
12 *
13 * This program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU Lesser General Public License version 2.1,
15 * as published by the Free Software Foundation.
16 *
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU Lesser General Public License for more details.
21 *
22 * You should have received a copy of the GNU Lesser General Public
23 * License along with this program; if not, write to the Free Software
24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 */
26
27/*! \file */
28
29#if !defined(_SPANDSP_G168MODELS_H_)
30#define _SPANDSP_G168MODELS_H_
31
32/*! \page g168_test_data_page The test data from the G.168 specification
33*/
34
35/*!
36 The line model from section D.2 of G.168.
37
38 These are the coefficients for the line simulation model defined in
39 section D.2 of G.168. It may be used with the fir32_xxx
40 routines to build a line simulator.
41*/
42const int32_t line_model_d2_coeffs[] =
43{
44 -436, -829, -2797, -4208, -17968, -11215, 46150, 34480,
45 -10427, 9049, -1309, -6320, 390, -8191, -1751, -6051,
46 -3796, -4055, -3948, -2557, -3372, -1808, -2259, -1300,
47 -1098, -618, -340, -61, 323, 419, 745, 716,
48 946, 880, 1014, 976, 1033, 1091, 1053, 1042,
49 794, 831, 899, 716, 390, 313, 304, 304,
50 73, -119, -109, -176, -359, -407, -512, -580,
51 -704, -618, -685, -791, -772, -820, -839, -724
52};
53#define LINE_MODEL_D2_GAIN 1.39E-5f
54
55/*!
56 The line model from section D.3 of G.168.
57
58 These are the coefficients for the line simulation model defined in
59 section D.3 of G.168. It may be used with the fir32_xxx
60 routines to build a line simulator.
61*/
62const int32_t line_model_d3_coeffs[] =
63{
64 -381, 658, 1730, -51, -3511, -1418, 7660, 8861,
65 -8106, -21370, -5307, 23064, 24020, 1020, -12374, -16296,
66 -19524, -7480, 13509, 17115, 13952, 13952, 97, -9326,
67 -9046, -15208, -9853, -3858, -1979, 6029, 5616, 7214,
68 6820, 3935, 3919, 921, 1316, -693, -759, -1517,
69 -2176, -2028, -2654, -1814, -2077, -1468, -1221, -842,
70 -463, -298, -68, 64, 493, 723, 789, 954,
71 756, 839, 872, 1020, 789, 822, 558, 658,
72 476, 377, 377, 262, 97, -68, -183, -232,
73 -331, -347, -430, -314, -430, -463, -463, -414,
74 -381, -479, -479, -512, -479, -397, -430, -397,
75 -298, -265, -249, -216, -249, -265, -166, -232
76};
77#define LINE_MODEL_D3_GAIN 1.44E-5f
78
79/*!
80 The line model from section D.4 of G.168.
81
82 These are the coefficients for the line simulation model defined in
83 section D.4 of G.168. It may be used with the fir32_xxx
84 routines to build a line simulator.
85*/
86const int32_t line_model_d4_coeffs[] =
87{
88 -448, -436, 2230, 2448, -4178, -7050, 5846, 18581,
89 2322, -26261, -16249, 21637, 25649, -2267, -10311, -4693,
90 -12690, -7428, 14164, 13467, 4438, 8627, 456, -11879,
91 -6352, -5104, -7496, 3271, 6566, 4277, 11131, 7562,
92 1475, 3728, -3525, -7301, -3101, -9269, -6146, -2553,
93 -6272, 811, 124, 788, 5147, 2172, 5387, 4598,
94 3535, 4004, 2311, 2150, 1017, 330, -139, -573,
95 -1100, -1157, -1180, -1455, -1123, -1386, -1123, -1066,
96 -1020, -1100, -1008, -1077, -1088, -917, -917, -963,
97 -814, -871, -734, -642, -562, -356, -379, -345,
98 -230, -233, -333, -356, -390, -310, -265, -368,
99 -310, -310, -390, -482, -459, -482, -551, -573
100};
101#define LINE_MODEL_D4_GAIN 1.52E-5f
102
103/*!
104 The line model from section D.5 of G.168.
105
106 These are the coefficients for the line simulation model defined in
107 section D.5 of G.168. It may be used with the fir32_xxx
108 routines to build a line simulator.
109*/
110const int32_t line_model_d5_coeffs[] =
111{
112 160, 312, -241, -415, 897, 908, -1326, -1499,
113 2405, 3347, -3624, -7733, 4041, 14484, -1477, -21739,
114 -4470, 25356, 11458, -19696, -11800, 5766, 789, 6633,
115 14624, -6975, -17156, -187, 149, 1515, 14907, 4345,
116 -7128, -2757, -10185, -7083, 6850, 3944, 6969, 8694,
117 -4068, -3852, -5793, -9371, 453, 1060, 3965, 9463,
118 2393, 2784, -892, -7366, -3376, -5847, -2399, 3011,
119 1537, 6623, 4205, 1602, 1592, -4752, -3646, -5207,
120 -5577, -501, -1174, 4041, 5647, 4628, 7252, 2123,
121 2654, -881, -4113, -3244, -7289, -3830, -4600, -2508,
122 431, -144, 4184, 2372, 4617, 3576, 2382, 2839,
123 -404, 539, -1803, -1401, -1705, -2269, -783, -1608,
124 -220, -306, 257, 615, 225, 561, 8, 344,
125 127, -57, 182, 41, 203, -111, 95, -79,
126 30, 84, -13, -68, -241, -68, -24, 19,
127 -57, -24, 30, -68, 84, -155, -68, 19
128};
129#define LINE_MODEL_D5_GAIN 1.77E-5f
130
131/*!
132 The line model from section D.6 of G.168.
133
134 These are the coefficients for the line simulation model defined in
135 section D.6 of G.168. It may be used with the fir32_xxx
136 routines to build a line simulator.
137*/
138const int32_t line_model_d6_coeffs[] =
139{
140 293, 268, 475, 460, 517, 704, 581, 879,
141 573, 896, 604, 787, 561, 538, 440, 97,
142 265, -385, 20, -938, -523, -1438, -1134, -1887,
143 -1727, -1698, -4266, -22548, -43424, 2743, 25897, 7380,
144 21499, 11983, 10400, 11667, 3889, 7241, 925, 2018,
145 -821, -2068, -2236, -4283, -3406, -5022, -4039, -4842,
146 -4104, -4089, -3582, -2978, -2734, -1805, -1608, -645,
147 -495, 279, 471, 947, 1186, 1438, 1669, 1640,
148 1901, 1687, 1803, 1543, 1566, 1342, 1163, 963,
149 733, 665, 323, 221, -14, -107, -279, -379,
150 -468, -513, -473, -588, -612, -652, -616, -566,
151 -515, -485, -404, -344, -290, -202, -180, -123
152};
153#define LINE_MODEL_D6_GAIN 9.33E-6f
154
155/*!
156 The line model from section D.7 of G.168.
157
158 These are the coefficients for the line simulation model defined in
159 section D.8 of G.168. It may be used with the fir32_xxx
160 routines to build a line simulator.
161*/
162const int32_t line_model_d7_coeffs[] =
163{
164 29, 109, -83, 198, -294, -135, -415, -202,
165 -444, -337, -313, -450, -105, -503, 145, -490,
166 267, -231, 340, 77, 343, 783, 158, 1341,
167 195, 1798, 344, 1845, 629, 1604, 1182, 940,
168 5163, 19522, 8421, -50953, -9043, 18046, -13553, 13336,
169 -3471, -107, 1788, -7409, 2469, -7994, 490, -3860,
170 -837, 490, -636, 3682, 1141, 5019, 2635, 5025,
171 3946, 4414, 4026, 3005, 3380, 1616, 2007, 158,
172 388, -1198, -1117, -2134, -2547, -2589, -3310, -2778,
173 -3427, -2779, -3116, -2502, -2399, -1956, -1539, -1239,
174 -570, -377, 251, 331, 964, 1177, 1449, 1564,
175 1724, 1871, 1767, 1802, 1630, 1632, 1379, 1271,
176 1063, 856, 711, 482, 289, 54, -137, -321,
177 -490, -638, -764, -836, -800, -859, -838, -837,
178 -834, -740, -673, -581, -493, -436, -327, -201
179};
180#define LINE_MODEL_D7_GAIN 1.51E-5f
181
182/*!
183 The line model from section D.8 of G.168.
184
185 These are the coefficients for the line simulation model defined in
186 section D.8 of G.168. It may be used with the fir32_xxx
187 routines to build a line simulator.
188*/
189const int32_t line_model_d8_coeffs[] =
190{
191 258, -111, 337, -319, 347, -434, 192, -450,
192 -108, -343, -596, -177, -1187, -52, -1781, -147,
193 -1959, -326, -1601, -1389, -13620, -720, 33818, -10683,
194 -6742, 12489, -9862, 8950, -1574, 758, 3526, -3118,
195 2421, -8966, -4901, 11385, 18072, -14410, -7473, 19836,
196 -16854, -3115, 9483, -17799, 7399, -4342, -7415, 7929,
197 -10726, 6239, -2526, -1317, 5345, -4565, 6868, -2195,
198 3425, 1969, -109, 3963, -1275, 3087, -892, 1239,
199 2, -427, 596, -1184, 551, -1244, 141, -743,
200 -415, -372, -769, -183, -785, -270, -659, -377,
201 -523, -325, -245, -255, -60, 35, 218, 149,
202 340, 233, 365, 303, 251, 230, 209, 179
203};
204#define LINE_MODEL_D8_GAIN 2.33E-5f
205
206/*!
207 The line model from section D.9 of G.168.
208
209 These are the coefficients for the line simulation model defined in
210 section D.9 of G.168. It may be used with the fir32_xxx
211 routines to build a line simulator.
212*/
213const int32_t line_model_d9_coeffs[] =
214{
215 80, 31, 4, 42, 42, -61, -81, -64,
216 -121, -102, -26, 1002, -9250, -22562, 39321, 35681,
217 -35289, 25312, -1457, -229, 15659, -6786, 16791, 3860,
218 2239, -28730, -11885, 33871, -176, -16421, 18173, -9669,
219 -10163, 9941, -19365, 3592, -5907, -10257, 5336, -12933,
220 4348, -4802, -1791, 3035, -4433, 5553, -2596, 3992,
221 1255, 1450, 4079, 324, 4340, 1059, 3083, 1917,
222 1756, 2478, 1027, 1871, 845, 1284, 813, 806,
223 869, 471, 646, 438, 449, 432, 473, 394,
224 452, 538, 717, 723, 850, 756, 753, 899,
225 555, 669, 619, 500, 650, 615, 516, 492,
226 427, 291, 356, 147, 107, -50, -88, -59,
227 -238, -165, -183
228};
229#define LINE_MODEL_D9_GAIN 1.33E-5f
230
231/*!
232 The filter coefficients for the bandpass filter specified for level measurements
233 in section 6.4.1.2.1 of G.168.
234*/
236{
237 0.0000, 0.0006, 0.0005, 0.0004, 0.0011,
238 0.0000, 0.0015, -0.0003, 0.0012, -0.0002,
239 0.0000, 0.0002, -0.0020, 0.0005, -0.0040,
240 0.0000, -0.0047, -0.0019, -0.0033, -0.0047,
241 0.0000, -0.0068, 0.0036, -0.0057, 0.0054,
242 0.0000, 0.0044, 0.0095, 0.0017, 0.0188,
243 0.0000, 0.0225, 0.0024, 0.0163, 0.0092,
244 0.0000, 0.0164, -0.0210, 0.0161, -0.0375,
245 0.0000, -0.0406, -0.0357, -0.0267, -0.0871,
246 0.0000, -0.1420, 0.0289, -0.1843, 0.0475,
247 0.8006, 0.0475, -0.1843, 0.0289, -0.1420,
248 0.0000, -0.0871, -0.0267, -0.0357, -0.0406,
249 0.0000, -0.0375, 0.0161, -0.0210, 0.0164,
250 0.0000, 0.0092, 0.0163, 0.0024, 0.0225,
251 0.0000, 0.0188, 0.0017, 0.0095, 0.0044,
252 0.0000, 0.0054, -0.0057, 0.0036, -0.0068,
253 0.0000, -0.0047, -0.0033, -0.0019, -0.0047,
254 0.0000, -0.0040, 0.0005, -0.0020, 0.0002,
255 0.0000, -0.0002, 0.0012, -0.0003, 0.0015,
256 0.0000, 0.0011, 0.0004, 0.0005, 0.0006,
257 0.0000
258};
259
260/*!
261 The composite source signal "voiced" section from table C.1 of G.168.
262*/
263const int css_c1[] =
264{
265 -155, 276, 517, 578, 491, 302, 86, -103,
266 -207, -198, 60, 190, 543, 948, 1362, 1741,
267 2043, 2276, 2422, 2500, 2552, 2595, 2655, 2758,
268 2896, 3060, 3224, 3370, 3500, 3569, 3603, 3603,
269 3595, 3586, 3595, 3638, 3724, 3819, 3922, 4000,
270 4043, 4034, 3974, 3862, 3724, 3577, 3439, 3336,
271 3267, 3224, 3198, 3172, 3129, 3043, 2914, 2750,
272 2560, 2353, 2155, 1991, 1853, 1750, 1672, 1603,
273 1534, 1440, 1310, 1146, 965, 776, 603, 448,
274 345, 276, 250, 250, 267, 267, 241, 190,
275 103, -9, -138, -267, -388, -491, -569, -638,
276 -698, -759, -813, -888, -957, -1034, -1103, -1146,
277 -1181, -1190, -1198, -1215, -1259, -1327, -1457, -1629,
278 -1853, -2121, -2414, -2707, -3017, -3319, -3612, -3913,
279 -4224, -4560, -4922, -5301, -5715, -6137, -6560, -6948,
280 -7301, -7568, -7732, -7758, -7620, -7310, -6810, -6155,
281 -5344, -4439, -3474, -2508, -1595, -802
282};
283
284/*!
285 The composite source signal "voiced" section from table C.3 of G.168.
286*/
287const int css_c3[] =
288{
289 -198, -112, -9, 103, 233, 388, 543, 724,
290 896, 1060, 1233, 1388, 1517, 1638, 1747, 1810,
291 1845, 1845, 1802, 1707, 1569, 1379, 1146, 871,
292 560, 233, -121, -491, -871, -1250, -1638, -2043,
293 -2465, -2896, -3345, -3819, -4310, -4810, -5319, -5836,
294 -6353, -6853, -7353, -7836, -8292, -8715, -9077, -9370,
295 -9542, -9542, -9361, -8956, -8327, -7465, -6396, -5163,
296 -3827, -2448, -1103, 155, 1293, 2241, 3034, 3655,
297 4138, 4517, 4827, 5094, 5344, 5594, 5827, 6043,
298 6215, 6344, 6413, 6422, 6379, 6310, 6215, 6120,
299 6051, 6000, 5991, 5991, 6000, 6008, 5991, 5939,
300 5853, 5715, 5560, 5387, 5215, 5043, 4879, 4732,
301 4586, 4439, 4276, 4086, 3870, 3629, 3370, 3086,
302 2801, 2534, 2267, 2034, 1819, 1612, 1422, 1224,
303 1026, 819, 603, 388, 181, 9, -181, -328,
304 -448, -543, -629, -707, -784, -871, -948, -1026,
305 -1112, -1181, -1241, -1276, -1293, -1302, -1293, -1267,
306 -1250, -1233, -1224, -1224, -1224, -1224, -1215, -1198,
307 -1172, -1129, -1077, -1026, -974, -922, -888, -871,
308 -845, -828, -810, -793, -767, -741, -698, -672,
309 -638, -603, -595, -586, -595, -603, -621, -629,
310 -938, -638, -638, -638, -638, -638, -647, -664,
311 -690, -724, -767, -793, -819, -845, -853, -871,
312 -879, -888, -896, -922, -948, -974, -1009, -1026,
313 -1052, -1069, -1077, -1069, -1060, -1060, -1052, -1043,
314 -1043, -1052, -1060, -1060, -1060, -1052, -1034, -1017,
315 -991, -957, -931, -905, -888, -862, -845, -819,
316 -793, -767, -724, -672, -621, -560, -509, -457,
317 -397, -345, -276, -207, -112
318};
319
320/*!
321 From section 6.4.2.7 of G.168 - Test No. 6 Non-divergence on narrow-band signals.
322 These tones and tone pairs are each applied for 5 seconds.
323*/
324const int tones_6_4_2_7[][2] =
325{
326 { 697, 0},
327 { 941, 0},
328 {1336, 0},
329 {1633, 0},
330 { 697, 1209},
331 { 770, 1336},
332 { 852, 1477},
333 { 941, 1633},
334 { 0, 0}
335};
336
337#endif
338/*- End of file ------------------------------------------------------------*/
const int css_c3[]
Definition: g168models.h:287
const int css_c1[]
Definition: g168models.h:263
const int32_t line_model_d6_coeffs[]
Definition: g168models.h:138
const int32_t line_model_d9_coeffs[]
Definition: g168models.h:213
const int32_t line_model_d7_coeffs[]
Definition: g168models.h:162
const int32_t line_model_d8_coeffs[]
Definition: g168models.h:189
const int32_t line_model_d5_coeffs[]
Definition: g168models.h:110
const int tones_6_4_2_7[][2]
Definition: g168models.h:324
const int32_t line_model_d3_coeffs[]
Definition: g168models.h:62
const float level_measurement_bp_coeffs[]
Definition: g168models.h:235
const int32_t line_model_d2_coeffs[]
Definition: g168models.h:42
const int32_t line_model_d4_coeffs[]
Definition: g168models.h:86