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