comparison spandsp-0.0.3/spandsp-0.0.3/src/spandsp/g168models.h @ 5:f762bf195c4b

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

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