libspandsp 0.0.4
|
00001 /* 00002 * SpanDSP - a series of DSP components for telephony 00003 * 00004 * g168models.h - line models for echo cancellation tests against the G.168 00005 * spec. 00006 * 00007 * Written by Steve Underwood <steveu@coppice.org> 00008 * 00009 * Copyright (C) 2001 Steve Underwood 00010 * 00011 * All rights reserved. 00012 * 00013 * This program is free software; you can redistribute it and/or modify 00014 * it under the terms of the GNU Lesser General Public License version 2.1, 00015 * as published by the Free Software Foundation. 00016 * 00017 * This program is distributed in the hope that it will be useful, 00018 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00020 * GNU Lesser General Public License for more details. 00021 * 00022 * You should have received a copy of the GNU Lesser General Public 00023 * License along with this program; if not, write to the Free Software 00024 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00025 * 00026 * $Id: g168models.h,v 1.8 2008/04/17 14:27:00 steveu Exp $ 00027 */ 00028 00029 /*! \file */ 00030 00031 #if !defined(_SPANDSP_G168MODELS_H_) 00032 #define _SPANDSP_G168MODELS_H_ 00033 00034 /*! \page g168_test_data_page The test data from the G.168 specification 00035 */ 00036 00037 /*! 00038 The line model from section D.2 of G.168. 00039 00040 These are the coefficients for the line simulation model defined in 00041 section D.2 of G.168. It may be used with the fir32_xxx 00042 routines to build a line simulator. 00043 */ 00044 const int32_t line_model_d2_coeffs[] = 00045 { 00046 -436, -829, -2797, -4208, -17968, -11215, 46150, 34480, 00047 -10427, 9049, -1309, -6320, 390, -8191, -1751, -6051, 00048 -3796, -4055, -3948, -2557, -3372, -1808, -2259, -1300, 00049 -1098, -618, -340, -61, 323, 419, 745, 716, 00050 946, 880, 1014, 976, 1033, 1091, 1053, 1042, 00051 794, 831, 899, 716, 390, 313, 304, 304, 00052 73, -119, -109, -176, -359, -407, -512, -580, 00053 -704, -618, -685, -791, -772, -820, -839, -724 00054 }; 00055 00056 /*! 00057 The line model from section D.3 of G.168. 00058 00059 These are the coefficients for the line simulation model defined in 00060 section D.3 of G.168. It may be used with the fir32_xxx 00061 routines to build a line simulator. 00062 */ 00063 const int32_t line_model_d3_coeffs[] = 00064 { 00065 -381, 658, 1730, -51, -3511, -1418, 7660, 8861, 00066 -8106, -21370, -5307, 23064, 24020, 1020, -12374, -16296, 00067 -19524, -7480, 13509, 17115, 13952, 13952, 97, -9326, 00068 -9046, -15208, -9853, -3858, -1979, 6029, 5616, 7214, 00069 6820, 3935, 3919, 921, 1316, -693, -759, -1517, 00070 -2176, -2028, -2654, -1814, -2077, -1468, -1221, -842, 00071 -463, -298, -68, 64, 493, 723, 789, 954, 00072 756, 839, 872, 1020, 789, 822, 558, 658, 00073 476, 377, 377, 262, 97, -68, -183, -232, 00074 -331, -347, -430, -314, -430, -463, -463, -414, 00075 -381, -479, -479, -512, -479, -397, -430, -397, 00076 -298, -265, -249, -216, -249, -265, -166, -232 00077 }; 00078 00079 /*! 00080 The line model from section D.4 of G.168. 00081 00082 These are the coefficients for the line simulation model defined in 00083 section D.4 of G.168. It may be used with the fir32_xxx 00084 routines to build a line simulator. 00085 */ 00086 const int32_t line_model_d4_coeffs[] = 00087 { 00088 -448, -436, 2230, 2448, -4178, -7050, 5846, 18581, 00089 2322, -26261, -16249, 21637, 25649, -2267, -10311, -4693, 00090 -12690, -7428, 14164, 13467, 4438, 8627, 456, -11879, 00091 -6352, -5104, -7496, 3271, 6566, 4277, 11131, 7562, 00092 1475, 3728, -3525, -7301, -3101, -9269, -6146, -2553, 00093 -6272, 811, 124, 788, 5147, 2172, 5387, 4598, 00094 3535, 4004, 2311, 2150, 1017, 330, -139, -573, 00095 -1100, -1157, -1180, -1455, -1123, -1386, -1123, -1066, 00096 -1020, -1100, -1008, -1077, -1088, -917, -917, -963, 00097 -814, -871, -734, -642, -562, -356, -379, -345, 00098 -230, -233, -333, -356, -390, -310, -265, -368, 00099 -310, -310, -390, -482, -459, -482, -551, -573 00100 }; 00101 00102 /*! 00103 The line model from section D.5 of G.168. 00104 00105 These are the coefficients for the line simulation model defined in 00106 section D.5 of G.168. It may be used with the fir32_xxx 00107 routines to build a line simulator. 00108 */ 00109 const int32_t line_model_d5_coeffs[] = 00110 { 00111 160, 312, -241, -415, 897, 908, -1326, -1499, 00112 2405, 3347, -3624, -7733, 4041, 14484, -1477, -21739, 00113 -4470, 25356, 11458, -19696, -11800, 5766, 789, 6633, 00114 14624, -6975, -17156, -187, 149, 1515, 14907, 4345, 00115 -7128, -2757, -10185, -7083, 6850, 3944, 6969, 8694, 00116 -4068, -3852, -5793, -9371, 453, 1060, 3965, 9463, 00117 2393, 2784, -892, -7366, -3376, -5847, -2399, 3011, 00118 1537, 6623, 4205, 1602, 1592, -4752, -3646, -5207, 00119 -5577, -501, -1174, 4041, 5647, 4628, 7252, 2123, 00120 2654, -881, -4113, -3244, -7289, -3830, -4600, -2508, 00121 431, -144, 4184, 2372, 4617, 3576, 2382, 2839, 00122 -404, 539, -1803, -1401, -1705, -2269, -783, -1608, 00123 -220, -306, 257, 615, 225, 561, 8, 344, 00124 127, -57, 182, 41, 203, -111, 95, -79, 00125 30, 84, -13, -68, -241, -68, -24, 19, 00126 -57, -24, 30, -68, 84, -155, -68, 19 00127 }; 00128 00129 /*! 00130 The line model from section D.6 of G.168. 00131 00132 These are the coefficients for the line simulation model defined in 00133 section D.6 of G.168. It may be used with the fir32_xxx 00134 routines to build a line simulator. 00135 */ 00136 const int32_t line_model_d6_coeffs[] = 00137 { 00138 293, 268, 475, 460, 517, 704, 581, 879, 00139 573, 896, 604, 787, 561, 538, 440, 97, 00140 265, -385, 20, -938, -523, -1438, -1134, -1887, 00141 -1727, -1698, -4266, -22548, -43424, 2743, 25897, 7380, 00142 21499, 11983, 10400, 11667, 3889, 7241, 925, 2018, 00143 -821, -2068, -2236, -4283, -3406, -5022, -4039, -4842, 00144 -4104, -4089, -3582, -2978, -2734, -1805, -1608, -645, 00145 -495, 279, 471, 947, 1186, 1438, 1669, 1640, 00146 1901, 1687, 1803, 1543, 1566, 1342, 1163, 963, 00147 733, 665, 323, 221, -14, -107, -279, -379, 00148 -468, -513, -473, -588, -612, -652, -616, -566, 00149 -515, -485, -404, -344, -290, -202, -180, -123 00150 }; 00151 00152 /*! 00153 The line model from section D.7 of G.168. 00154 00155 These are the coefficients for the line simulation model defined in 00156 section D.8 of G.168. It may be used with the fir32_xxx 00157 routines to build a line simulator. 00158 */ 00159 const int32_t line_model_d7_coeffs[] = 00160 { 00161 29, 109, -83, 198, -294, -135, -415, -202, 00162 -444, -337, -313, -450, -105, -503, 145, -490, 00163 267, -231, 340, 77, 343, 783, 158, 1341, 00164 195, 1798, 344, 1845, 629, 1604, 1182, 940, 00165 5163, 19522, 8421, -50953, -9043, 18046, -13553, 13336, 00166 -3471, -107, 1788, -7409, 2469, -7994, 490, -3860, 00167 -837, 490, -636, 3682, 1141, 5019, 2635, 5025, 00168 3946, 4414, 4026, 3005, 3380, 1616, 2007, 158, 00169 388, -1198, -1117, -2134, -2547, -2589, -3310, -2778, 00170 -3427, -2779, -3116, -2502, -2399, -1956, -1539, -1239, 00171 -570, -377, 251, 331, 964, 1177, 1449, 1564, 00172 1724, 1871, 1767, 1802, 1630, 1632, 1379, 1271, 00173 1063, 856, 711, 482, 289, 54, -137, -321, 00174 -490, -638, -764, -836, -800, -859, -838, -837, 00175 -834, -740, -673, -581, -493, -436, -327, -201 00176 }; 00177 00178 /*! 00179 The line model from section D.8 of G.168. 00180 00181 These are the coefficients for the line simulation model defined in 00182 section D.8 of G.168. It may be used with the fir32_xxx 00183 routines to build a line simulator. 00184 */ 00185 const int32_t line_model_d8_coeffs[] = 00186 { 00187 258, -111, 337, -319, 347, -434, 192, -450, 00188 -108, -343, -596, -177, -1187, -52, -1781, -147, 00189 -1959, -326, -1601, -1389, -13620, -720, 33818, -10683, 00190 -6742, 12489, -9862, 8950, -1574, 758, 3526, -3118, 00191 2421, -8966, -4901, 11385, 18072, -14410, -7473, 19836, 00192 -16854, -3115, 9483, -17799, 7399, -4342, -7415, 7929, 00193 -10726, 6239, -2526, -1317, 5345, -4565, 6868, -2195, 00194 3425, 1969, -109, 3963, -1275, 3087, -892, 1239, 00195 2, -427, 596, -1184, 551, -1244, 141, -743, 00196 -415, -372, -769, -183, -785, -270, -659, -377, 00197 -523, -325, -245, -255, -60, 35, 218, 149, 00198 340, 233, 365, 303, 251, 230, 209, 179 00199 }; 00200 00201 /*! 00202 The line model from section D.9 of G.168. 00203 00204 These are the coefficients for the line simulation model defined in 00205 section D.9 of G.168. It may be used with the fir32_xxx 00206 routines to build a line simulator. 00207 */ 00208 const int32_t line_model_d9_coeffs[] = 00209 { 00210 80, 31, 4, 42, 42, -61, -81, -64, 00211 121, -102, -26, 1002, -9250, -22562, 39321, 35681, 00212 -35289, 25312, -1457, -229, 15659, -6786, 16791, 3860, 00213 2239, -28730, -11885, 33871, -176, -16421, 18173, -9669, 00214 -10163, 9941, -19365, 3592, -5907, -10257, 5336, -12933, 00215 4348, -4802, -1791, 3035, -4433, 5553, -2596, 3992, 00216 1255, 1450, 4079, 324, 4340, 1059, 3083, 1917, 00217 1756, 2478, 1027, 1871, 845, 1284, 813, 806, 00218 869, 471, 646, 438, 449, 432, 473, 394, 00219 452, 538, 717, 723, 850, 756, 753, 899, 00220 555, 669, 619, 500, 650, 615, 516, 492, 00221 427, 291, 356, 147, 107, -50, -88, -59, 00222 -238, -165, -183 00223 }; 00224 00225 /*! 00226 The filter coefficients for the bandpass filter specified for level measurements 00227 in G.168. 00228 */ 00229 const float level_measurement_bp_coeffs[] = 00230 { 00231 0.0000, 0.0006, 0.0005, 0.0004, 0.0011, 00232 0.0000, 0.0015, -0.0003, 0.0012, -0.0002, 00233 0.0000, 0.0002, -0.0020, 0.0005, -0.0040, 00234 0.0000, -0.0047, -0.0019, -0.0033, -0.0047, 00235 0.0000, -0.0068, 0.0036, -0.0057, 0.0054, 00236 0.0000, 0.0044, 0.0095, 0.0017, 0.0188, 00237 0.0000, 0.0225, 0.0024, 0.0163, 0.0092, 00238 0.0000, 0.0164, -0.0210, 0.0161, -0.0375, 00239 0.0000, -0.0406, -0.0357, -0.0267, -0.0871, 00240 0.0000, -0.1420, 0.0289, -0.1843, 0.0475, 00241 0.8006, 0.0475, -0.1843, 0.0289, -0.1420, 00242 0.0000, -0.0871, -0.0267, -0.0357, -0.0406, 00243 0.0000, -0.0375, 0.0161, -0.0210, 0.0164, 00244 0.0000, 0.0092, 0.0163, 0.0024, 0.0225, 00245 0.0000, 0.0188, 0.0017, 0.0095, 0.0044, 00246 0.0000, 0.0054, -0.0057, 0.0036, -0.0068, 00247 0.0000, -0.0047, -0.0033, -0.0019, -0.0047, 00248 0.0000, -0.0040, 0.0005, -0.0020, 0.0002, 00249 0.0000, -0.0002, 0.0012, -0.0003, 0.0015, 00250 0.0000, 0.0011, 0.0004, 0.0005, 0.0006, 00251 0.0000 00252 }; 00253 00254 /*! 00255 The composite source signal "voiced" section from section C.1 of G.168. 00256 */ 00257 const int css_c1[] = 00258 { 00259 -155, 276, 517, 578, 491, 302, 86, -103, 00260 -207, -198, 60, 190, 543, 948, 1362, 1741, 00261 2043, 2276, 2422, 2500, 2552, 2595, 2655, 2758, 00262 2896, 3060, 3224, 3370, 3500, 3569, 3603, 3603, 00263 3595, 3586, 3595, 3638, 3724, 3819, 3922, 4000, 00264 4043, 4034, 3974, 3862, 3724, 3577, 3439, 3336, 00265 3267, 3224, 3198, 3172, 3129, 3043, 2914, 2750, 00266 2560, 2353, 2155, 1991, 1853, 1750, 1672, 1603, 00267 1534, 1440, 1310, 1146, 965, 776, 603, 448, 00268 345, 276, 250, 250, 267, 267, 241, 190, 00269 103, -9, -138, -267, -388, -491, -569, -638, 00270 -698, -759, -813, -888, -957, -1034, -1103, -1146, 00271 -1181, -1190, -1198, -1215, -1259, -1327, -1457, -1629, 00272 -1853, -2121, -2414, -2707, -3017, -3319, -3612, -3913, 00273 -4224, -4560, -4922, -5301, -5715, -6137, -6560, -6948, 00274 -7301, -7568, -7732, -7758, -7620, -7310, -6810, -6155, 00275 -5344, -4439, -3474, -2508, -1595, -802 00276 }; 00277 00278 /*! 00279 The composite source signal "voiced" section from section C.3 of G.168. 00280 */ 00281 const int css_c3[] = 00282 { 00283 -198, -112, -9, 103, 233, 388, 543, 724, 00284 896, 1060, 1233, 1388, 1517, 1638, 1747, 1810, 00285 1845, 1845, 1802, 1707, 1569, 1379, 1146, 871, 00286 560, 233, -121, -491, -871, -1250, -1638, -2043, 00287 -2465, -2896, -3345, -3819, -4310, -4810, -5319, -5836, 00288 -6353, -6853, -7353, -7836, -8292, -8715, -9077, -9370, 00289 -9542, -9542, -9361, -8956, -8327, -7465, -6396, -5163, 00290 -3827, -2448, -1103, 155, 1293, 2241, 3034, 3655, 00291 4138, 4517, 4827, 5094, 5344, 5594, 5827, 6043, 00292 6215, 6344, 6413, 6422, 6379, 6310, 6215, 6120, 00293 6051, 6000, 5991, 5991, 6000, 6008, 5991, 5939, 00294 5853, 5715, 5560, 5387, 5215, 5043, 4879, 4732, 00295 4586, 4439, 4276, 4086, 3870, 3629, 3370, 3086, 00296 2801, 2534, 2267, 2034, 1819, 1612, 1422, 1224, 00297 1026, 819, 603, 388, 181, 9, -181, -328, 00298 -448, -543, -629, -707, -784, -871, -948, -1026, 00299 -1112, -1181, -1241, -1276, -1293, -1302, -1293, -1267, 00300 -1250, -1233, -1224, -1224, -1224, -1224, -1215, -1198, 00301 -1172, -1129, -1077, -1026, -974, -922, -888, -871, 00302 -845, -828, -810, -793, -767, -741, -698, -672, 00303 -638, -603, -595, -586, -595, -603, -621, -629, 00304 -938, -638, -638, -638, -638, -638, -647, -664, 00305 -690, -724, -767, -793, -819, -845, -853, -871, 00306 -879, -888, -896, -922, -948, -974, -1009, -1026, 00307 -1052, -1069, -1077, -1069, -1060, -1060, -1052, -1043, 00308 -1043, -1052, -1060, -1060, -1060, -1052, -1034, -1017, 00309 -991, -957, -931, -905, -888, -862, -845, -819, 00310 -793, -767, -724, -672, -621, -560, -509, -457, 00311 -397, -345, -276, -207, -112 00312 }; 00313 00314 /*! 00315 From section 6.4.2.7 of G.168 - Test No. 6 Non-divergence on narrow-band signals. 00316 These tones and tone pairs are each applied for 5 seconds. 00317 */ 00318 const int tones_6_4_2_7[][2] = 00319 { 00320 { 697, 0}, 00321 { 941, 0}, 00322 {1336, 0}, 00323 {1633, 0}, 00324 { 697, 1209}, 00325 { 770, 1336}, 00326 { 852, 1477}, 00327 { 941, 1633}, 00328 { 0, 0} 00329 }; 00330 00331 #endif 00332 /*- End of file ------------------------------------------------------------*/