comparison spandsp-0.0.6pre17/src/spandsp/g168models.h @ 4:26cd8f1ef0b1

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

Repositories maintained by Peter Meerwald, pmeerw@pmeerw.net.